moduleDecl_0_17 :: IParser Module.Header
moduleDecl_0_17 =
  expecting "a module declaration" $
  do
      srcTag <-
        try $
            choice
                [ Module.Port <$> (reserved "port" *> whitespace)
                , Module.Effect <$> (reserved "effect" *> whitespace)
                , return Module.Normal
                ]
            <* reserved "module"
      preName <- whitespace
      names <- dotSep1 capVar <?> "the name of this module"
      whereClause <-
        optionMaybe $
          commentedKeyword "where" $
            brackets $ (\f pre post _ -> f pre post) <$> commaSep1 (keyValue equals lowVar capVar)

      exports <-
        commentedKeyword "exposing" $
          listing detailedListing

      return $
        Module.Header
          srcTag
          (Commented preName names [])
          whereClause
          exports
moduleDecl_0_17 :: IParser Module.Header
moduleDecl_0_17 =
  expecting "a module declaration" $
  do
      srcTag <-
        try $
            choice
                [ Module.Port <$> (reserved "port" *> whitespace)
                , Module.Effect <$> (reserved "effect" *> whitespace)
                , return Module.Normal
                ]
            <* reserved "module"
      preName <- whitespace
      names <- dotSep1 capVar <?> "the name of this module"
      whereClause <-
        optionMaybe $
          commentedKeyword "where" $
            brackets $ (\f pre post _ -> f pre post) <$> commaSep1 (keyValue equals lowVar capVar)

      exports <-
        commentedKeyword "exposing" $
          listing detailedListing

      return $
        Module.Header
          srcTag
          (Commented preName names [])
          whereClause
          exports
moduleDecl_0_17 =
  expecting "a module declaration" $
  do
      srcTag <-
        try $
            choice
                [ Module.Port <$> (reserved "port" *> whitespace)
                , Module.Effect <$> (reserved "effect" *> whitespace)
                , return Module.Normal
                ]
            <* reserved "module"
      preName <- whitespace
      names <- dotSep1 capVar <?> "the name of this module"
      whereClause <-
        optionMaybe $
          commentedKeyword "where" $
            brackets $ (\f pre post _ -> f pre post) <$> commaSep1 (keyValue equals lowVar capVar)

      exports <-
        commentedKeyword "exposing" $
          listing detailedListing

      return $
        Module.Header
          srcTag
          (Commented preName names [])
          whereClause
          exports