diff --git a/hsimport.cabal b/hsimport.cabal
--- a/hsimport.cabal
+++ b/hsimport.cabal
@@ -1,14 +1,21 @@
 Name:          hsimport
-Version:       0.2.6.6
+Version:       0.2.6.7
 License:       BSD3
 License-file:  LICENSE
 Author:        Daniel Trstenjak
 Maintainer:    daniel.trstenjak@gmail.com
 Build-Type:    Simple
 Category:      Utils
-Cabal-Version: >=1.8
+Cabal-Version: >=1.9.2
 Synopsis:      A command line program for extending the import list of a Haskell source file.
 Description:   A command line program for extending the import list of a Haskell source file.
+
+-- test samples
+extra-source-files:
+    tests/inputFiles/*.hs
+    tests/goldenFiles/*.hs
+    -- to leave directory in tarball
+    tests/outputFiles/.gitignore
 
 source-repository head
   type:     git
diff --git a/tests/goldenFiles/ModuleTest0.hs b/tests/goldenFiles/ModuleTest0.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/ModuleTest0.hs
@@ -0,0 +1,1 @@
+import Foo.Bar
diff --git a/tests/goldenFiles/ModuleTest1.hs b/tests/goldenFiles/ModuleTest1.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/ModuleTest1.hs
@@ -0,0 +1,2 @@
+module Test where
+import Foo.Bar
diff --git a/tests/goldenFiles/ModuleTest10.hs b/tests/goldenFiles/ModuleTest10.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/ModuleTest10.hs
@@ -0,0 +1,3 @@
+import Control.Monad
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/goldenFiles/ModuleTest11.hs b/tests/goldenFiles/ModuleTest11.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/ModuleTest11.hs
@@ -0,0 +1,4 @@
+import Control.Blub
+import Control.Monad
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/goldenFiles/ModuleTest12.hs b/tests/goldenFiles/ModuleTest12.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/ModuleTest12.hs
@@ -0,0 +1,3 @@
+{-# Language PatternGuards #-}
+module Blub where
+import Control.Monad
diff --git a/tests/goldenFiles/ModuleTest13.hs b/tests/goldenFiles/ModuleTest13.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/ModuleTest13.hs
@@ -0,0 +1,2 @@
+{-# Language PatternGuards #-}
+import Control.Monad
diff --git a/tests/goldenFiles/ModuleTest14.hs b/tests/goldenFiles/ModuleTest14.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/ModuleTest14.hs
@@ -0,0 +1,6 @@
+module Blub
+   ( blub
+   , foo
+   , bar
+   ) where
+import Control.Monad
diff --git a/tests/goldenFiles/ModuleTest15.hs b/tests/goldenFiles/ModuleTest15.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/ModuleTest15.hs
@@ -0,0 +1,7 @@
+{-# Language PatternGuards #-}
+module Blub
+   ( blub
+   , foo
+   , bar
+   ) where
+import Control.Monad
diff --git a/tests/goldenFiles/ModuleTest16.hs b/tests/goldenFiles/ModuleTest16.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/ModuleTest16.hs
@@ -0,0 +1,9 @@
+{-# Language PatternGuards #-}
+module Blub
+   ( blub
+   , foo
+   , bar
+   ) where
+import Control.Monad
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/goldenFiles/ModuleTest17.hs b/tests/goldenFiles/ModuleTest17.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/ModuleTest17.hs
@@ -0,0 +1,8 @@
+module Blub
+   ( blub
+   , foo
+   , bar
+   ) where
+import Control.Monad
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/goldenFiles/ModuleTest18.hs b/tests/goldenFiles/ModuleTest18.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/ModuleTest18.hs
@@ -0,0 +1,12 @@
+{-# Language PatternGuards #-}
+module Blub
+   ( blub
+   , foo
+   , bar
+   ) where
+import Ugah.Foo
+import Control.Applicative
+import Control.Monad
+import Ugah.Blub
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/goldenFiles/ModuleTest19.hs b/tests/goldenFiles/ModuleTest19.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/ModuleTest19.hs
@@ -0,0 +1,14 @@
+{-# Language PatternGuards #-}
+module Blub
+   ( blub
+   , foo
+   , bar
+   ) where
+import Ugah.Foo
+import Control.Applicative
+import Control.Monad
+import Ugah.Blub
+f :: Int -> Int
+f = (+ 3)
+
+ddd
diff --git a/tests/goldenFiles/ModuleTest2.hs b/tests/goldenFiles/ModuleTest2.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/ModuleTest2.hs
@@ -0,0 +1,4 @@
+module Test where
+import Foo.Bar
+import Foo.Bar.Blub
+import Ugah.Argh
diff --git a/tests/goldenFiles/ModuleTest20.hs b/tests/goldenFiles/ModuleTest20.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/ModuleTest20.hs
@@ -0,0 +1,13 @@
+{-# Language PatternGuards #-}
+module Blub
+   ( blub
+   , foo
+   , bar
+   ) where
+import Ugah.Foo
+import Control.Applicative
+import Control.Monad
+import Ugah.Blub
+ddd
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/goldenFiles/ModuleTest21.hs b/tests/goldenFiles/ModuleTest21.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/ModuleTest21.hs
@@ -0,0 +1,16 @@
+{-# Language PatternGuards #-}
+module Blub
+   ( blub
+   , foo
+   , bar
+   ) where
+import Ugah.Foo
+import Control.Applicative
+import Control.Monad
+import Ugah.Blub
+f :: Int -> Int
+f = (+ 3)
+
+g :: Int -> Int
+g =
+   where
diff --git a/tests/goldenFiles/ModuleTest22.hs b/tests/goldenFiles/ModuleTest22.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/ModuleTest22.hs
@@ -0,0 +1,7 @@
+module Blub where
+import qualified Language.Haskell.Exts as HS
+import Control.Monad
+
+addSymbol :: HS.ImportDecl -> String -> HS.ImportDecl
+addSymbol (id@HS.ImportDecl {HS.importSpecs = specs}) symbolName =
+   id {HS.importSpecs = specs & _Just . _2 %~ (++ [HS.IVar $ hsName symbolName])}
diff --git a/tests/goldenFiles/ModuleTest23.hs b/tests/goldenFiles/ModuleTest23.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/ModuleTest23.hs
@@ -0,0 +1,16 @@
+{-# Language PatternGuards #-}
+module Blub
+   ( blub
+   , foo
+   , bar
+   ) where
+import Ugah.Foo
+import Control.Applicative
+import qualified Control.Monad as CM
+import Ugah.Blub
+f :: Int -> Int
+f = (+ 3)
+
+g :: Int -> Int
+g =
+   where
diff --git a/tests/goldenFiles/ModuleTest24.hs b/tests/goldenFiles/ModuleTest24.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/ModuleTest24.hs
@@ -0,0 +1,16 @@
+{-# Language PatternGuards #-}
+module Blub
+   ( blub
+   , foo
+   , bar
+   ) where
+import Ugah.Foo
+import Control.Applicative
+import qualified Control.Monad as CM
+import Ugah.Blub
+f :: Int -> Int
+f = (+ 3)
+
+g :: Int -> Int
+g =
+   where
diff --git a/tests/goldenFiles/ModuleTest25.hs b/tests/goldenFiles/ModuleTest25.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/ModuleTest25.hs
@@ -0,0 +1,16 @@
+{-# Language PatternGuards #-}
+module Blub
+   ( blub
+   , foo
+   , bar
+   ) where
+import Ugah.Foo
+import Control.Applicative
+import qualified Control.Monad
+import Ugah.Blub
+f :: Int -> Int
+f = (+ 3)
+
+g :: Int -> Int
+g =
+   where
diff --git a/tests/goldenFiles/ModuleTest26.hs b/tests/goldenFiles/ModuleTest26.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/ModuleTest26.hs
@@ -0,0 +1,19 @@
+{-# Language PatternGuards #-}
+module Blub
+   ( blub
+   , foo
+   , bar
+   ) where
+#include "Foo.h"
+import Ugah.Foo
+import Control.Applicative
+import Control.Monad
+#ifdef FOO
+import Ugah.Blub
+#endif
+f :: Int -> Int
+f = (+ 3)
+
+g :: Int -> Int
+g =
+   where
diff --git a/tests/goldenFiles/ModuleTest3.hs b/tests/goldenFiles/ModuleTest3.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/ModuleTest3.hs
@@ -0,0 +1,5 @@
+module Test where
+import Foo.Bar
+import Foo.Bar.Blub
+import Ugah.Argh
+import Control.Monad
diff --git a/tests/goldenFiles/ModuleTest4.hs b/tests/goldenFiles/ModuleTest4.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/ModuleTest4.hs
@@ -0,0 +1,6 @@
+module Test where
+import Foo.Bar
+import Foo.Bar.Blub
+import Ugah.Argh
+import Ugah.Argh2
+import Control.Monad
diff --git a/tests/goldenFiles/ModuleTest5.hs b/tests/goldenFiles/ModuleTest5.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/ModuleTest5.hs
@@ -0,0 +1,9 @@
+module Test where
+import Foo.Bar
+import Foo.Bar.Blub
+import Ugah.Argh
+import Control.Monad (when)
+import Control.Monad
+
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/goldenFiles/ModuleTest6.hs b/tests/goldenFiles/ModuleTest6.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/ModuleTest6.hs
@@ -0,0 +1,9 @@
+module Test where
+import Foo.Bar
+import Foo.Bar.Blub
+import Ugah.Argh
+import Control.Monad (when)
+import Control.Monad
+
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/goldenFiles/ModuleTest7.hs b/tests/goldenFiles/ModuleTest7.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/ModuleTest7.hs
@@ -0,0 +1,10 @@
+module Test where
+import Foo.Bar
+import Foo.Bar.Blub
+import Ugah.Argh
+import Control.Monad (when)
+import qualified Control.Monad as M
+import Control.Monad
+
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/goldenFiles/ModuleTest8.hs b/tests/goldenFiles/ModuleTest8.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/ModuleTest8.hs
@@ -0,0 +1,9 @@
+module Test where
+import Foo.Bar
+import Foo.Bar.Blub
+import Ugah.Argh
+import Control.Monad hiding (when)
+import Control.Monad
+
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/goldenFiles/ModuleTest9.hs b/tests/goldenFiles/ModuleTest9.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/ModuleTest9.hs
@@ -0,0 +1,9 @@
+module Test where
+import Foo.Bar
+import Foo.Bar.Blub
+import Ugah.Argh
+import qualified Control.Monad
+import Control.Monad
+
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/goldenFiles/SymbolTest0.hs b/tests/goldenFiles/SymbolTest0.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/SymbolTest0.hs
@@ -0,0 +1,1 @@
+import Foo.Bar (foo)
diff --git a/tests/goldenFiles/SymbolTest1.hs b/tests/goldenFiles/SymbolTest1.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/SymbolTest1.hs
@@ -0,0 +1,2 @@
+module Test where
+import Foo.Bar (foo)
diff --git a/tests/goldenFiles/SymbolTest10.hs b/tests/goldenFiles/SymbolTest10.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/SymbolTest10.hs
@@ -0,0 +1,8 @@
+module Test where
+import Foo.Bar
+import Foo.Bar.Blub
+import Ugah.Argh
+import Control.Applicative
+
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/goldenFiles/SymbolTest11.hs b/tests/goldenFiles/SymbolTest11.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/SymbolTest11.hs
@@ -0,0 +1,8 @@
+module Test where
+import Foo.Bar
+import Foo.Bar.Blub
+import Ugah.Argh
+import Control.Applicative (pure, (<$>))
+
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/goldenFiles/SymbolTest12.hs b/tests/goldenFiles/SymbolTest12.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/SymbolTest12.hs
@@ -0,0 +1,8 @@
+module Test where
+import Foo.Bar
+import Foo.Bar.Blub
+import Ugah.Argh
+import Control.Applicative (pure, (<$>))
+
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/goldenFiles/SymbolTest13.hs b/tests/goldenFiles/SymbolTest13.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/SymbolTest13.hs
@@ -0,0 +1,8 @@
+module Test where
+import Foo.Bar
+import Foo.Bar.Blub
+import Ugah.Argh
+import Control.Applicative (pure, (<$>), (<*))
+
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/goldenFiles/SymbolTest14.hs b/tests/goldenFiles/SymbolTest14.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/SymbolTest14.hs
@@ -0,0 +1,8 @@
+module Test where
+import Foo.Bar
+import Foo.Bar.Blub
+import Ugah.Argh
+import Control.Applicative (pure, (<$>), (<*))
+
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/goldenFiles/SymbolTest15.hs b/tests/goldenFiles/SymbolTest15.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/SymbolTest15.hs
@@ -0,0 +1,8 @@
+module Test where
+import Foo.Bar
+import Foo.Bar.Blub
+import Ugah.Argh
+import Control.Applicative (pure, (<$>), (<*), (*>))
+
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/goldenFiles/SymbolTest16.hs b/tests/goldenFiles/SymbolTest16.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/SymbolTest16.hs
@@ -0,0 +1,17 @@
+{-# Language PatternGuards #-}
+module Blub
+   ( blub
+   , foo
+   , bar
+   ) where
+import Ugah.Foo
+import Control.Applicative
+import qualified Control.Monad as CM
+import Control.Monad (when)
+import Ugah.Blub
+f :: Int -> Int
+f = (+ 3)
+
+g :: Int -> Int
+g =
+   where
diff --git a/tests/goldenFiles/SymbolTest17.hs b/tests/goldenFiles/SymbolTest17.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/SymbolTest17.hs
@@ -0,0 +1,7 @@
+module Blub
+   ( blub
+   , foo
+   , bar
+   ) where
+import Control.Monad (when)
+import qualified Control.Monad as CM
diff --git a/tests/goldenFiles/SymbolTest18.hs b/tests/goldenFiles/SymbolTest18.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/SymbolTest18.hs
@@ -0,0 +1,6 @@
+module Blub
+   ( blub
+   , foo
+   , bar
+   ) where
+import Data.Text (Text)
diff --git a/tests/goldenFiles/SymbolTest2.hs b/tests/goldenFiles/SymbolTest2.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/SymbolTest2.hs
@@ -0,0 +1,4 @@
+module Test where
+import Foo.Bar
+import Foo.Bar.Blub (foo)
+import Ugah.Argh
diff --git a/tests/goldenFiles/SymbolTest3.hs b/tests/goldenFiles/SymbolTest3.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/SymbolTest3.hs
@@ -0,0 +1,5 @@
+module Test where
+import Foo.Bar
+import Foo.Bar.Blub
+import Ugah.Argh
+import Control.Monad (when)
diff --git a/tests/goldenFiles/SymbolTest4.hs b/tests/goldenFiles/SymbolTest4.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/SymbolTest4.hs
@@ -0,0 +1,6 @@
+module Test where
+import Foo.Bar
+import Foo.Bar.Blub
+import Ugah.Argh
+import Ugah.Argh2 (argh)
+import Control.Monad
diff --git a/tests/goldenFiles/SymbolTest5.hs b/tests/goldenFiles/SymbolTest5.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/SymbolTest5.hs
@@ -0,0 +1,8 @@
+module Test where
+import Foo.Bar
+import Foo.Bar.Blub
+import Ugah.Argh
+import Control.Monad
+
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/goldenFiles/SymbolTest6.hs b/tests/goldenFiles/SymbolTest6.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/SymbolTest6.hs
@@ -0,0 +1,8 @@
+module Test where
+import Foo.Bar
+import Foo.Bar.Blub
+import Ugah.Argh
+import Control.Monad (when, unless)
+
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/goldenFiles/SymbolTest7.hs b/tests/goldenFiles/SymbolTest7.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/SymbolTest7.hs
@@ -0,0 +1,9 @@
+module Test where
+import Foo.Bar
+import Foo.Bar.Blub
+import Ugah.Argh
+import qualified Control.Monad as M
+import Control.Monad (unless)
+
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/goldenFiles/SymbolTest8.hs b/tests/goldenFiles/SymbolTest8.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/SymbolTest8.hs
@@ -0,0 +1,9 @@
+module Test where
+import Foo.Bar
+import Foo.Bar.Blub
+import Ugah.Argh
+import Control.Monad hiding (when)
+import Control.Monad (unless)
+
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/goldenFiles/SymbolTest9.hs b/tests/goldenFiles/SymbolTest9.hs
new file mode 100644
--- /dev/null
+++ b/tests/goldenFiles/SymbolTest9.hs
@@ -0,0 +1,9 @@
+module Test where
+import Foo.Bar
+import Foo.Bar.Blub
+import Ugah.Argh
+import qualified Control.Monad
+import Control.Monad (unless)
+
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/inputFiles/ModuleTest0.hs b/tests/inputFiles/ModuleTest0.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/ModuleTest0.hs
diff --git a/tests/inputFiles/ModuleTest1.hs b/tests/inputFiles/ModuleTest1.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/ModuleTest1.hs
@@ -0,0 +1,1 @@
+module Test where
diff --git a/tests/inputFiles/ModuleTest10.hs b/tests/inputFiles/ModuleTest10.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/ModuleTest10.hs
@@ -0,0 +1,2 @@
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/inputFiles/ModuleTest11.hs b/tests/inputFiles/ModuleTest11.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/ModuleTest11.hs
@@ -0,0 +1,3 @@
+import Control.Blub
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/inputFiles/ModuleTest12.hs b/tests/inputFiles/ModuleTest12.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/ModuleTest12.hs
@@ -0,0 +1,2 @@
+{-# Language PatternGuards #-}
+module Blub where
diff --git a/tests/inputFiles/ModuleTest13.hs b/tests/inputFiles/ModuleTest13.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/ModuleTest13.hs
@@ -0,0 +1,1 @@
+{-# Language PatternGuards #-}
diff --git a/tests/inputFiles/ModuleTest14.hs b/tests/inputFiles/ModuleTest14.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/ModuleTest14.hs
@@ -0,0 +1,5 @@
+module Blub
+   ( blub
+   , foo
+   , bar
+   ) where
diff --git a/tests/inputFiles/ModuleTest15.hs b/tests/inputFiles/ModuleTest15.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/ModuleTest15.hs
@@ -0,0 +1,6 @@
+{-# Language PatternGuards #-}
+module Blub
+   ( blub
+   , foo
+   , bar
+   ) where
diff --git a/tests/inputFiles/ModuleTest16.hs b/tests/inputFiles/ModuleTest16.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/ModuleTest16.hs
@@ -0,0 +1,8 @@
+{-# Language PatternGuards #-}
+module Blub
+   ( blub
+   , foo
+   , bar
+   ) where
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/inputFiles/ModuleTest17.hs b/tests/inputFiles/ModuleTest17.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/ModuleTest17.hs
@@ -0,0 +1,7 @@
+module Blub
+   ( blub
+   , foo
+   , bar
+   ) where
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/inputFiles/ModuleTest18.hs b/tests/inputFiles/ModuleTest18.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/ModuleTest18.hs
@@ -0,0 +1,11 @@
+{-# Language PatternGuards #-}
+module Blub
+   ( blub
+   , foo
+   , bar
+   ) where
+import Ugah.Foo
+import Control.Applicative
+import Ugah.Blub
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/inputFiles/ModuleTest19.hs b/tests/inputFiles/ModuleTest19.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/ModuleTest19.hs
@@ -0,0 +1,13 @@
+{-# Language PatternGuards #-}
+module Blub
+   ( blub
+   , foo
+   , bar
+   ) where
+import Ugah.Foo
+import Control.Applicative
+import Ugah.Blub
+f :: Int -> Int
+f = (+ 3)
+
+ddd
diff --git a/tests/inputFiles/ModuleTest2.hs b/tests/inputFiles/ModuleTest2.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/ModuleTest2.hs
@@ -0,0 +1,3 @@
+module Test where
+import Foo.Bar
+import Ugah.Argh
diff --git a/tests/inputFiles/ModuleTest20.hs b/tests/inputFiles/ModuleTest20.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/ModuleTest20.hs
@@ -0,0 +1,12 @@
+{-# Language PatternGuards #-}
+module Blub
+   ( blub
+   , foo
+   , bar
+   ) where
+import Ugah.Foo
+import Control.Applicative
+import Ugah.Blub
+ddd
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/inputFiles/ModuleTest21.hs b/tests/inputFiles/ModuleTest21.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/ModuleTest21.hs
@@ -0,0 +1,15 @@
+{-# Language PatternGuards #-}
+module Blub
+   ( blub
+   , foo
+   , bar
+   ) where
+import Ugah.Foo
+import Control.Applicative
+import Ugah.Blub
+f :: Int -> Int
+f = (+ 3)
+
+g :: Int -> Int
+g =
+   where
diff --git a/tests/inputFiles/ModuleTest22.hs b/tests/inputFiles/ModuleTest22.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/ModuleTest22.hs
@@ -0,0 +1,6 @@
+module Blub where
+import qualified Language.Haskell.Exts as HS
+
+addSymbol :: HS.ImportDecl -> String -> HS.ImportDecl
+addSymbol (id@HS.ImportDecl {HS.importSpecs = specs}) symbolName =
+   id {HS.importSpecs = specs & _Just . _2 %~ (++ [HS.IVar $ hsName symbolName])}
diff --git a/tests/inputFiles/ModuleTest23.hs b/tests/inputFiles/ModuleTest23.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/ModuleTest23.hs
@@ -0,0 +1,15 @@
+{-# Language PatternGuards #-}
+module Blub
+   ( blub
+   , foo
+   , bar
+   ) where
+import Ugah.Foo
+import Control.Applicative
+import Ugah.Blub
+f :: Int -> Int
+f = (+ 3)
+
+g :: Int -> Int
+g =
+   where
diff --git a/tests/inputFiles/ModuleTest24.hs b/tests/inputFiles/ModuleTest24.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/ModuleTest24.hs
@@ -0,0 +1,16 @@
+{-# Language PatternGuards #-}
+module Blub
+   ( blub
+   , foo
+   , bar
+   ) where
+import Ugah.Foo
+import Control.Applicative
+import qualified Control.Monad as CM
+import Ugah.Blub
+f :: Int -> Int
+f = (+ 3)
+
+g :: Int -> Int
+g =
+   where
diff --git a/tests/inputFiles/ModuleTest25.hs b/tests/inputFiles/ModuleTest25.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/ModuleTest25.hs
@@ -0,0 +1,15 @@
+{-# Language PatternGuards #-}
+module Blub
+   ( blub
+   , foo
+   , bar
+   ) where
+import Ugah.Foo
+import Control.Applicative
+import Ugah.Blub
+f :: Int -> Int
+f = (+ 3)
+
+g :: Int -> Int
+g =
+   where
diff --git a/tests/inputFiles/ModuleTest26.hs b/tests/inputFiles/ModuleTest26.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/ModuleTest26.hs
@@ -0,0 +1,18 @@
+{-# Language PatternGuards #-}
+module Blub
+   ( blub
+   , foo
+   , bar
+   ) where
+#include "Foo.h"
+import Ugah.Foo
+import Control.Applicative
+#ifdef FOO
+import Ugah.Blub
+#endif
+f :: Int -> Int
+f = (+ 3)
+
+g :: Int -> Int
+g =
+   where
diff --git a/tests/inputFiles/ModuleTest3.hs b/tests/inputFiles/ModuleTest3.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/ModuleTest3.hs
@@ -0,0 +1,4 @@
+module Test where
+import Foo.Bar
+import Foo.Bar.Blub
+import Ugah.Argh
diff --git a/tests/inputFiles/ModuleTest4.hs b/tests/inputFiles/ModuleTest4.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/ModuleTest4.hs
@@ -0,0 +1,5 @@
+module Test where
+import Foo.Bar
+import Foo.Bar.Blub
+import Ugah.Argh
+import Control.Monad
diff --git a/tests/inputFiles/ModuleTest5.hs b/tests/inputFiles/ModuleTest5.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/ModuleTest5.hs
@@ -0,0 +1,8 @@
+module Test where
+import Foo.Bar
+import Foo.Bar.Blub
+import Ugah.Argh
+import Control.Monad (when)
+
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/inputFiles/ModuleTest6.hs b/tests/inputFiles/ModuleTest6.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/ModuleTest6.hs
@@ -0,0 +1,9 @@
+module Test where
+import Foo.Bar
+import Foo.Bar.Blub
+import Ugah.Argh
+import Control.Monad (when)
+import Control.Monad
+
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/inputFiles/ModuleTest7.hs b/tests/inputFiles/ModuleTest7.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/ModuleTest7.hs
@@ -0,0 +1,9 @@
+module Test where
+import Foo.Bar
+import Foo.Bar.Blub
+import Ugah.Argh
+import Control.Monad (when)
+import qualified Control.Monad as M
+
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/inputFiles/ModuleTest8.hs b/tests/inputFiles/ModuleTest8.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/ModuleTest8.hs
@@ -0,0 +1,8 @@
+module Test where
+import Foo.Bar
+import Foo.Bar.Blub
+import Ugah.Argh
+import Control.Monad hiding (when)
+
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/inputFiles/ModuleTest9.hs b/tests/inputFiles/ModuleTest9.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/ModuleTest9.hs
@@ -0,0 +1,8 @@
+module Test where
+import Foo.Bar
+import Foo.Bar.Blub
+import Ugah.Argh
+import qualified Control.Monad
+
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/inputFiles/SymbolTest0.hs b/tests/inputFiles/SymbolTest0.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/SymbolTest0.hs
diff --git a/tests/inputFiles/SymbolTest1.hs b/tests/inputFiles/SymbolTest1.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/SymbolTest1.hs
@@ -0,0 +1,1 @@
+module Test where
diff --git a/tests/inputFiles/SymbolTest10.hs b/tests/inputFiles/SymbolTest10.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/SymbolTest10.hs
@@ -0,0 +1,8 @@
+module Test where
+import Foo.Bar
+import Foo.Bar.Blub
+import Ugah.Argh
+import Control.Applicative
+
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/inputFiles/SymbolTest11.hs b/tests/inputFiles/SymbolTest11.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/SymbolTest11.hs
@@ -0,0 +1,8 @@
+module Test where
+import Foo.Bar
+import Foo.Bar.Blub
+import Ugah.Argh
+import Control.Applicative (pure)
+
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/inputFiles/SymbolTest12.hs b/tests/inputFiles/SymbolTest12.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/SymbolTest12.hs
@@ -0,0 +1,8 @@
+module Test where
+import Foo.Bar
+import Foo.Bar.Blub
+import Ugah.Argh
+import Control.Applicative (pure, (<$>))
+
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/inputFiles/SymbolTest13.hs b/tests/inputFiles/SymbolTest13.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/SymbolTest13.hs
@@ -0,0 +1,8 @@
+module Test where
+import Foo.Bar
+import Foo.Bar.Blub
+import Ugah.Argh
+import Control.Applicative (pure, (<$>))
+
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/inputFiles/SymbolTest14.hs b/tests/inputFiles/SymbolTest14.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/SymbolTest14.hs
@@ -0,0 +1,8 @@
+module Test where
+import Foo.Bar
+import Foo.Bar.Blub
+import Ugah.Argh
+import Control.Applicative (pure, (<$>), (<*))
+
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/inputFiles/SymbolTest15.hs b/tests/inputFiles/SymbolTest15.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/SymbolTest15.hs
@@ -0,0 +1,8 @@
+module Test where
+import Foo.Bar
+import Foo.Bar.Blub
+import Ugah.Argh
+import Control.Applicative (pure, (<$>), (<*))
+
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/inputFiles/SymbolTest16.hs b/tests/inputFiles/SymbolTest16.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/SymbolTest16.hs
@@ -0,0 +1,15 @@
+{-# Language PatternGuards #-}
+module Blub
+   ( blub
+   , foo
+   , bar
+   ) where
+import Ugah.Foo
+import Control.Applicative
+import Ugah.Blub
+f :: Int -> Int
+f = (+ 3)
+
+g :: Int -> Int
+g =
+   where
diff --git a/tests/inputFiles/SymbolTest17.hs b/tests/inputFiles/SymbolTest17.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/SymbolTest17.hs
@@ -0,0 +1,5 @@
+module Blub
+   ( blub
+   , foo
+   , bar
+   ) where
diff --git a/tests/inputFiles/SymbolTest18.hs b/tests/inputFiles/SymbolTest18.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/SymbolTest18.hs
@@ -0,0 +1,6 @@
+module Blub
+   ( blub
+   , foo
+   , bar
+   ) where
+import Data.Text (Text)
diff --git a/tests/inputFiles/SymbolTest2.hs b/tests/inputFiles/SymbolTest2.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/SymbolTest2.hs
@@ -0,0 +1,3 @@
+module Test where
+import Foo.Bar
+import Ugah.Argh
diff --git a/tests/inputFiles/SymbolTest3.hs b/tests/inputFiles/SymbolTest3.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/SymbolTest3.hs
@@ -0,0 +1,4 @@
+module Test where
+import Foo.Bar
+import Foo.Bar.Blub
+import Ugah.Argh
diff --git a/tests/inputFiles/SymbolTest4.hs b/tests/inputFiles/SymbolTest4.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/SymbolTest4.hs
@@ -0,0 +1,5 @@
+module Test where
+import Foo.Bar
+import Foo.Bar.Blub
+import Ugah.Argh
+import Control.Monad
diff --git a/tests/inputFiles/SymbolTest5.hs b/tests/inputFiles/SymbolTest5.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/SymbolTest5.hs
@@ -0,0 +1,8 @@
+module Test where
+import Foo.Bar
+import Foo.Bar.Blub
+import Ugah.Argh
+import Control.Monad
+
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/inputFiles/SymbolTest6.hs b/tests/inputFiles/SymbolTest6.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/SymbolTest6.hs
@@ -0,0 +1,8 @@
+module Test where
+import Foo.Bar
+import Foo.Bar.Blub
+import Ugah.Argh
+import Control.Monad (when)
+
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/inputFiles/SymbolTest7.hs b/tests/inputFiles/SymbolTest7.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/SymbolTest7.hs
@@ -0,0 +1,8 @@
+module Test where
+import Foo.Bar
+import Foo.Bar.Blub
+import Ugah.Argh
+import qualified Control.Monad as M
+
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/inputFiles/SymbolTest8.hs b/tests/inputFiles/SymbolTest8.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/SymbolTest8.hs
@@ -0,0 +1,8 @@
+module Test where
+import Foo.Bar
+import Foo.Bar.Blub
+import Ugah.Argh
+import Control.Monad hiding (when)
+
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/inputFiles/SymbolTest9.hs b/tests/inputFiles/SymbolTest9.hs
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/SymbolTest9.hs
@@ -0,0 +1,8 @@
+module Test where
+import Foo.Bar
+import Foo.Bar.Blub
+import Ugah.Argh
+import qualified Control.Monad
+
+f :: Int -> Int
+f = (+ 3)
diff --git a/tests/outputFiles/.gitignore b/tests/outputFiles/.gitignore
new file mode 100644
--- /dev/null
+++ b/tests/outputFiles/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore
