support type alias declarations
support preprocessor commands
properly end type declarations when a function signature appears, even if indented (as in class definitions)
recognize foreign import <language> ""
properly recognize dangling data constructors as constructors and not standalone function signatures that happen to include a = and {