packages feed

himari-1.1.6.0: .hlint.yaml

# himari hlint configuration
#
# このファイルはDhallによって自動生成されています。
# 直接編集しないでください。
#
# himariが推奨するスタイルを機械的にチェックするためのhlint設定ファイルです。
# 部分関数や危険な関数の使用を警告したり、
# より可読性の高いパターンを提案します。
#
# 使い方:
#   * このファイルをプロジェクトルートに .hlint.yaml としてコピー
#   * または .hlint.yaml から参照: - arguments: [--hint=path/to/this/.hlint.yaml]
- arguments:
    - "-XGHC2024"
    - "-XApplicativeDo"
    - "-XBlockArguments"
    - "-XCPP"
    - "-XDefaultSignatures"
    - "-XDerivingVia"
    - "-XDuplicateRecordFields"
    - "-XFunctionalDependencies"
    - "-XLexicalNegation"
    - "-XLinearTypes"
    - "-XMonadComprehensions"
    - "-XMultiWayIf"
    - "-XNegativeLiterals"
    - "-XNoFieldSelectors"
    - "-XNoImplicitPrelude"
    - "-XOverloadedLabels"
    - "-XOverloadedRecordDot"
    - "-XOverloadedStrings"
    - "-XParallelListComp"
    - "-XPatternSynonyms"
    - "-XQualifiedDo"
    - "-XQuantifiedConstraints"
    - "-XQuasiQuotes"
    - "-XRecordWildCards"
    - "-XRecursiveDo"
    - "-XStrictData"
    - "-XTemplateHaskell"
    - "-XTypeData"
    - "-XTypeFamilies"
    - "-XTypeFamilyDependencies"
    - "-XViewPatterns"
- group:
    enabled: true
    name: generalise
- group:
    enabled: true
    name: dollar
- group:
    enabled: true
    name: "use-lens"
- group:
    enabled: true
    name: "use-th-quotes"
- functions:
    - message: Discards error info. Use eitherDecode instead to get error messages.
      name: Data.Aeson.decode
      within: []
    - message: Discards error info. Use eitherDecodeStrict instead to get error messages.
      name: Data.Aeson.decodeStrict
      within: []
    - message: Discards error info. Use eitherDecodeFileStrict instead to get error messages.
      name: Data.Aeson.decodeFileStrict
      within: []
    - message: Discards error info. Use eitherDecodeStrictText instead to get error messages.
      name: Data.Aeson.decodeStrictText
      within: []
- functions:
    - message: Deprecated alias since aeson 2.2.0.0. Use eitherDecode instead.
      name: "Data.Aeson.decode'"
      within: []
    - message: Deprecated alias since aeson 2.2.0.0. Use eitherDecodeStrict instead.
      name: "Data.Aeson.decodeStrict'"
      within: []
    - message: Deprecated alias since aeson 2.2.0.0. Use eitherDecodeFileStrict instead.
      name: "Data.Aeson.decodeFileStrict'"
      within: []
- functions:
    - message: Deprecated alias since aeson 2.2.0.0. Use eitherDecode instead.
      name: "Data.Aeson.eitherDecode'"
      within: []
    - message: Deprecated alias since aeson 2.2.0.0. Use eitherDecodeStrict instead.
      name: "Data.Aeson.eitherDecodeStrict'"
      within: []
    - message: Deprecated alias since aeson 2.2.0.0. Use eitherDecodeFileStrict instead.
      name: "Data.Aeson.eitherDecodeFileStrict'"
      within: []
- functions:
    - message: Deprecated alias since aeson 2.2.0.0. Use throwDecode instead.
      name: "Data.Aeson.throwDecode'"
      within: []
    - message: Deprecated alias since aeson 2.2.0.0. Use throwDecodeStrict instead.
      name: "Data.Aeson.throwDecodeStrict'"
      within: []
- functions:
    - message: Discards error info. Use parseEither instead to get error messages.
      name: Data.Aeson.parseMaybe
      within: []
    - message: Discards error info. Use parseEither instead to get error messages.
      name: Data.Aeson.Types.parseMaybe
      within: []
    - message: Discards error info. Use parseEither instead to get error messages.
      name: Data.Aeson.Types.Internal.parseMaybe
      within: []
- modules:
    - message: Unsafe ST operations. Use Control.Monad.ST instead.
      name: Control.Monad.ST.Unsafe
      within: []
    - message: Unsafe lazy ST operations. Use Control.Monad.ST.Lazy instead.
      name: Control.Monad.ST.Lazy.Unsafe
      within: []
- functions:
    - message: Deprecated and partial. Use bitSizeMaybe or finiteBitSize instead.
      name: Data.Bits.bitSize
      within: []
    - message: Undefined for negative or overflow shift.
      name: Data.Bits.unsafeShiftL
      within: []
    - message: Undefined for negative or overflow shift.
      name: Data.Bits.unsafeShiftR
      within: []
    - message: Undefined for negative rotation.
      name: Data.Bits.rotateL
      within: []
    - message: Undefined for negative rotation.
      name: Data.Bits.rotateR
      within: []
- functions:
    - message: Use Data.ByteString.uncons instead
      name: Data.ByteString.head
      within: []
    - message: Use Data.ByteString.uncons instead
      name: Data.ByteString.tail
      within: []
    - message: Use Data.ByteString.unsnoc instead
      name: Data.ByteString.init
      within: []
    - message: Use Data.ByteString.unsnoc instead
      name: Data.ByteString.last
      within: []
    - message: "Partial: throws on empty ByteString. Use foldl with explicit initial value."
      name: Data.ByteString.foldl1
      within: []
    - message: "Partial: throws on empty ByteString. Use foldl' with explicit initial value."
      name: "Data.ByteString.foldl1'"
      within: []
    - message: "Partial: throws on empty ByteString. Use foldr with explicit initial value."
      name: Data.ByteString.foldr1
      within: []
    - message: "Partial: throws on empty ByteString. Use foldr' with explicit initial value."
      name: "Data.ByteString.foldr1'"
      within: []
    - message: "Partial: throws on empty ByteString. Use fold with explicit initial value."
      name: Data.ByteString.maximum
      within: []
    - message: "Partial: throws on empty ByteString. Use fold with explicit initial value."
      name: Data.ByteString.minimum
      within: []
    - message: "Partial: throws on out-of-bounds. Use Data.ByteString.indexMaybe or Data.ByteString.(!?) instead"
      name: Data.ByteString.index
      within: []
- functions:
    - message: Use Data.ByteString.Char8.uncons instead
      name: Data.ByteString.Char8.head
      within: []
    - message: Use Data.ByteString.Char8.uncons instead
      name: Data.ByteString.Char8.tail
      within: []
    - message: Use Data.ByteString.Char8.unsnoc instead
      name: Data.ByteString.Char8.init
      within: []
    - message: Use Data.ByteString.Char8.unsnoc instead
      name: Data.ByteString.Char8.last
      within: []
    - message: "Partial: throws on empty ByteString. Use foldl with explicit initial value."
      name: Data.ByteString.Char8.foldl1
      within: []
    - message: "Partial: throws on empty ByteString. Use foldl' with explicit initial value."
      name: "Data.ByteString.Char8.foldl1'"
      within: []
    - message: "Partial: throws on empty ByteString. Use foldr with explicit initial value."
      name: Data.ByteString.Char8.foldr1
      within: []
    - message: "Partial: throws on empty ByteString. Use foldr' with explicit initial value."
      name: "Data.ByteString.Char8.foldr1'"
      within: []
    - message: "Partial: throws on empty ByteString. Use fold with explicit initial value."
      name: Data.ByteString.Char8.maximum
      within: []
    - message: "Partial: throws on empty ByteString. Use fold with explicit initial value."
      name: Data.ByteString.Char8.minimum
      within: []
    - message: "Partial: throws on out-of-bounds. Use Data.ByteString.Char8.indexMaybe or Data.ByteString.Char8.(!?) instead"
      name: Data.ByteString.Char8.index
      within: []
- functions:
    - message: Use Data.ByteString.Lazy.uncons instead
      name: Data.ByteString.Lazy.head
      within: []
    - message: Use Data.ByteString.Lazy.uncons instead
      name: Data.ByteString.Lazy.tail
      within: []
    - message: Use Data.ByteString.Lazy.unsnoc instead
      name: Data.ByteString.Lazy.init
      within: []
    - message: Use Data.ByteString.Lazy.unsnoc instead
      name: Data.ByteString.Lazy.last
      within: []
    - message: "Partial: throws on empty ByteString. Use foldl with explicit initial value."
      name: Data.ByteString.Lazy.foldl1
      within: []
    - message: "Partial: throws on empty ByteString. Use foldl' with explicit initial value."
      name: "Data.ByteString.Lazy.foldl1'"
      within: []
    - message: "Partial: throws on empty ByteString. Use foldr with explicit initial value."
      name: Data.ByteString.Lazy.foldr1
      within: []
    - message: "Partial: throws on empty ByteString. Use foldr' with explicit initial value."
      name: "Data.ByteString.Lazy.foldr1'"
      within: []
    - message: "Partial: throws on empty ByteString. Use fold with explicit initial value."
      name: Data.ByteString.Lazy.maximum
      within: []
    - message: "Partial: throws on empty ByteString. Use fold with explicit initial value."
      name: Data.ByteString.Lazy.minimum
      within: []
    - message: "Partial: throws on out-of-bounds. Use Data.ByteString.Lazy.indexMaybe or Data.ByteString.Lazy.(!?) instead"
      name: Data.ByteString.Lazy.index
      within: []
    - message: "Partial: throws on empty ByteString."
      name: Data.ByteString.Lazy.cycle
      within: []
- functions:
    - message: Use Data.ByteString.Lazy.Char8.uncons instead
      name: Data.ByteString.Lazy.Char8.head
      within: []
    - message: Use Data.ByteString.Lazy.Char8.uncons instead
      name: Data.ByteString.Lazy.Char8.tail
      within: []
    - message: Use Data.ByteString.Lazy.Char8.unsnoc instead
      name: Data.ByteString.Lazy.Char8.init
      within: []
    - message: Use Data.ByteString.Lazy.Char8.unsnoc instead
      name: Data.ByteString.Lazy.Char8.last
      within: []
    - message: "Partial: throws on empty ByteString. Use foldl with explicit initial value."
      name: Data.ByteString.Lazy.Char8.foldl1
      within: []
    - message: "Partial: throws on empty ByteString. Use foldl' with explicit initial value."
      name: "Data.ByteString.Lazy.Char8.foldl1'"
      within: []
    - message: "Partial: throws on empty ByteString. Use foldr with explicit initial value."
      name: Data.ByteString.Lazy.Char8.foldr1
      within: []
    - message: "Partial: throws on empty ByteString. Use foldr' with explicit initial value."
      name: "Data.ByteString.Lazy.Char8.foldr1'"
      within: []
    - message: "Partial: throws on empty ByteString. Use fold with explicit initial value."
      name: Data.ByteString.Lazy.Char8.maximum
      within: []
    - message: "Partial: throws on empty ByteString. Use fold with explicit initial value."
      name: Data.ByteString.Lazy.Char8.minimum
      within: []
    - message: "Partial: throws on out-of-bounds. Use Data.ByteString.Lazy.Char8.indexMaybe or Data.ByteString.Lazy.Char8.(!?) instead"
      name: Data.ByteString.Lazy.Char8.index
      within: []
    - message: "Partial: throws on empty ByteString."
      name: Data.ByteString.Lazy.Char8.cycle
      within: []
- functions:
    - message: Use Data.ByteString.Short.uncons instead
      name: Data.ByteString.Short.head
      within: []
    - message: Use Data.ByteString.Short.uncons instead
      name: Data.ByteString.Short.tail
      within: []
    - message: Use Data.ByteString.Short.unsnoc instead
      name: Data.ByteString.Short.init
      within: []
    - message: Use Data.ByteString.Short.unsnoc instead
      name: Data.ByteString.Short.last
      within: []
    - message: "Partial: throws on empty ShortByteString. Use foldl with explicit initial value."
      name: Data.ByteString.Short.foldl1
      within: []
    - message: "Partial: throws on empty ShortByteString. Use foldl' with explicit initial value."
      name: "Data.ByteString.Short.foldl1'"
      within: []
    - message: "Partial: throws on empty ShortByteString. Use foldr with explicit initial value."
      name: Data.ByteString.Short.foldr1
      within: []
    - message: "Partial: throws on empty ShortByteString. Use foldr' with explicit initial value."
      name: "Data.ByteString.Short.foldr1'"
      within: []
    - message: "Partial: throws on out-of-bounds. Use Data.ByteString.Short.indexMaybe or Data.ByteString.Short.(!?) instead"
      name: Data.ByteString.Short.index
      within: []
- functions:
    - message: "Unsafe: no bounds check. Use Data.ByteString.uncons instead"
      name: Data.ByteString.Unsafe.unsafeHead
      within: []
    - message: "Unsafe: no bounds check. Use Data.ByteString.uncons instead"
      name: Data.ByteString.Unsafe.unsafeTail
      within: []
    - message: "Unsafe: no bounds check. Use Data.ByteString.unsnoc instead"
      name: Data.ByteString.Unsafe.unsafeInit
      within: []
    - message: "Unsafe: no bounds check. Use Data.ByteString.unsnoc instead"
      name: Data.ByteString.Unsafe.unsafeLast
      within: []
    - message: "Unsafe: no bounds check. Use Data.ByteString.indexMaybe instead"
      name: Data.ByteString.Unsafe.unsafeIndex
      within: []
    - message: "Unsafe: no bounds check. Use Data.ByteString.take instead"
      name: Data.ByteString.Unsafe.unsafeTake
      within: []
    - message: "Unsafe: no bounds check. Use Data.ByteString.drop instead"
      name: Data.ByteString.Unsafe.unsafeDrop
      within: []
- functions:
    - message: "Partial: throws on non-hex-digit character. Use digitToIntMay from Himari.Char which returns Maybe."
      name: Data.Char.digitToInt
      within: []
    - message: "Partial: throws on out-of-range (must be 0-15). Use intToDigitMay from Himari.Char which returns Maybe."
      name: Data.Char.intToDigit
      within: []
    - message: "Partial: throws on invalid code point. Use chrMay from Himari.Char which returns Maybe."
      name: Data.Char.chr
      within: []
- functions:
    - message: "Exceptions don't propagate to parent thread. Use async or withAsync from UnliftIO.Async instead."
      name: forkIO
      within: []
    - message: "Exceptions don't propagate to parent thread. Use asyncBound or withAsyncBound from UnliftIO.Async instead."
      name: forkOS
      within: []
    - message: "Exceptions don't propagate to parent thread. Use asyncOn or withAsyncOn from UnliftIO.Async instead."
      name: forkOn
      within: []
    - message: "Exceptions don't propagate to parent thread. Use asyncWithUnmask or withAsyncWithUnmask from UnliftIO.Async instead."
      name: forkIOWithUnmask
      within: []
    - message: "Exceptions don't propagate to parent thread. Use asyncOnWithUnmask or withAsyncOnWithUnmask from UnliftIO.Async instead."
      name: forkOnWithUnmask
      within: []
    - message: "Deprecated and exceptions don't propagate to parent thread. Use asyncWithUnmask or withAsyncWithUnmask from UnliftIO.Async instead."
      name: forkWithUnmask
      within: []
    - message: No automatic cancellation or exception handling. Use UnliftIO.Async instead.
      name: forkFinally
      within: []
    - message: Prefer structured cancellation with cancel or withAsync. Use UnliftIO.Async instead.
      name: killThread
      within: []
    - message: "Almost impossible to use correctly. Consider typed-process or UnliftIO.Async."
      name: forkProcess
      within: []
- functions:
    - message: "Use Data.Map.lookup or Data.Map.!? instead"
      name: "Data.Map.!"
      within: []
    - message: "Partial: throws on empty map. Use Data.Map.lookupMin instead."
      name: Data.Map.findMin
      within: []
    - message: "Partial: throws on empty map. Use Data.Map.lookupMax instead."
      name: Data.Map.findMax
      within: []
    - message: "Partial: throws on out-of-bounds. Use Data.Map.lookupMin/lookupMax or check size."
      name: Data.Map.elemAt
      within: []
    - message: "Partial: throws on out-of-bounds. Check size before using."
      name: Data.Map.deleteAt
      within: []
    - message: "Partial: throws if key not found. Use Data.Map.lookupIndex instead."
      name: Data.Map.findIndex
      within: []
    - message: "Partial: throws on out-of-bounds. Check size before using."
      name: Data.Map.updateAt
      within: []
    - message: "Partial: throws on empty map. Use Data.Map.minViewWithKey instead."
      name: Data.Map.deleteFindMin
      within: []
    - message: "Partial: throws on empty map. Use Data.Map.maxViewWithKey instead."
      name: Data.Map.deleteFindMax
      within: []
- functions:
    - message: "Use Data.Map.Strict.lookup or Data.Map.Strict.!? instead"
      name: "Data.Map.Strict.!"
      within: []
    - message: "Partial: throws on empty map. Use Data.Map.Strict.lookupMin instead."
      name: Data.Map.Strict.findMin
      within: []
    - message: "Partial: throws on empty map. Use Data.Map.Strict.lookupMax instead."
      name: Data.Map.Strict.findMax
      within: []
    - message: "Partial: throws on out-of-bounds. Use Data.Map.Strict.lookupMin/lookupMax or check size."
      name: Data.Map.Strict.elemAt
      within: []
    - message: "Partial: throws on out-of-bounds. Check size before using."
      name: Data.Map.Strict.deleteAt
      within: []
    - message: "Partial: throws if key not found. Use Data.Map.Strict.lookupIndex instead."
      name: Data.Map.Strict.findIndex
      within: []
    - message: "Partial: throws on out-of-bounds. Check size before using."
      name: Data.Map.Strict.updateAt
      within: []
    - message: "Partial: throws on empty map. Use Data.Map.Strict.minViewWithKey instead."
      name: Data.Map.Strict.deleteFindMin
      within: []
    - message: "Partial: throws on empty map. Use Data.Map.Strict.maxViewWithKey instead."
      name: Data.Map.Strict.deleteFindMax
      within: []
- functions:
    - message: "Use Data.Map.Lazy.lookup or Data.Map.Lazy.!? instead"
      name: "Data.Map.Lazy.!"
      within: []
    - message: "Partial: throws on empty map. Use Data.Map.Lazy.lookupMin instead."
      name: Data.Map.Lazy.findMin
      within: []
    - message: "Partial: throws on empty map. Use Data.Map.Lazy.lookupMax instead."
      name: Data.Map.Lazy.findMax
      within: []
    - message: "Partial: throws on out-of-bounds. Use Data.Map.Lazy.lookupMin/lookupMax or check size."
      name: Data.Map.Lazy.elemAt
      within: []
    - message: "Partial: throws on out-of-bounds. Check size before using."
      name: Data.Map.Lazy.deleteAt
      within: []
    - message: "Partial: throws if key not found. Use Data.Map.Lazy.lookupIndex instead."
      name: Data.Map.Lazy.findIndex
      within: []
    - message: "Partial: throws on out-of-bounds. Check size before using."
      name: Data.Map.Lazy.updateAt
      within: []
    - message: "Partial: throws on empty map. Use Data.Map.Lazy.minViewWithKey instead."
      name: Data.Map.Lazy.deleteFindMin
      within: []
    - message: "Partial: throws on empty map. Use Data.Map.Lazy.maxViewWithKey instead."
      name: Data.Map.Lazy.deleteFindMax
      within: []
- functions:
    - message: "Partial: throws on empty set. Use Data.Set.lookupMin instead."
      name: Data.Set.findMin
      within: []
    - message: "Partial: throws on empty set. Use Data.Set.lookupMax instead."
      name: Data.Set.findMax
      within: []
    - message: "Partial: throws on out-of-bounds. Use Data.Set.lookupMin/lookupMax or check size."
      name: Data.Set.elemAt
      within: []
    - message: "Partial: throws on out-of-bounds. Check size before using."
      name: Data.Set.deleteAt
      within: []
    - message: "Partial: throws if element not found. Use Data.Set.lookupIndex instead."
      name: Data.Set.findIndex
      within: []
    - message: "Partial: throws on empty set. Use Data.Set.minView instead."
      name: Data.Set.deleteFindMin
      within: []
    - message: "Partial: throws on empty set. Use Data.Set.maxView instead."
      name: Data.Set.deleteFindMax
      within: []
- functions:
    - message: "Use Data.IntMap.lookup or Data.IntMap.!? instead"
      name: "Data.IntMap.!"
      within: []
    - message: "Partial: throws on empty map. Use Data.IntMap.lookupMin instead."
      name: Data.IntMap.findMin
      within: []
    - message: "Partial: throws on empty map. Use Data.IntMap.lookupMax instead."
      name: Data.IntMap.findMax
      within: []
    - message: "Partial: throws on empty map. Use Data.IntMap.minViewWithKey instead."
      name: Data.IntMap.deleteFindMin
      within: []
    - message: "Partial: throws on empty map. Use Data.IntMap.maxViewWithKey instead."
      name: Data.IntMap.deleteFindMax
      within: []
- functions:
    - message: "Use Data.IntMap.Strict.lookup or Data.IntMap.Strict.!? instead"
      name: "Data.IntMap.Strict.!"
      within: []
    - message: "Partial: throws on empty map. Use Data.IntMap.Strict.lookupMin instead."
      name: Data.IntMap.Strict.findMin
      within: []
    - message: "Partial: throws on empty map. Use Data.IntMap.Strict.lookupMax instead."
      name: Data.IntMap.Strict.findMax
      within: []
    - message: "Partial: throws on empty map. Use Data.IntMap.Strict.minViewWithKey instead."
      name: Data.IntMap.Strict.deleteFindMin
      within: []
    - message: "Partial: throws on empty map. Use Data.IntMap.Strict.maxViewWithKey instead."
      name: Data.IntMap.Strict.deleteFindMax
      within: []
- functions:
    - message: "Use Data.IntMap.Lazy.lookup or Data.IntMap.Lazy.!? instead"
      name: "Data.IntMap.Lazy.!"
      within: []
    - message: "Partial: throws on empty map. Use Data.IntMap.Lazy.lookupMin instead."
      name: Data.IntMap.Lazy.findMin
      within: []
    - message: "Partial: throws on empty map. Use Data.IntMap.Lazy.lookupMax instead."
      name: Data.IntMap.Lazy.findMax
      within: []
    - message: "Partial: throws on empty map. Use Data.IntMap.Lazy.minViewWithKey instead."
      name: Data.IntMap.Lazy.deleteFindMin
      within: []
    - message: "Partial: throws on empty map. Use Data.IntMap.Lazy.maxViewWithKey instead."
      name: Data.IntMap.Lazy.deleteFindMax
      within: []
- functions:
    - message: "Partial: throws on empty set. Use Data.IntSet.lookupMin instead."
      name: Data.IntSet.findMin
      within: []
    - message: "Partial: throws on empty set. Use Data.IntSet.lookupMax instead."
      name: Data.IntSet.findMax
      within: []
    - message: "Partial: throws on empty set. Use Data.IntSet.minView instead."
      name: Data.IntSet.deleteFindMin
      within: []
    - message: "Partial: throws on empty set. Use Data.IntSet.maxView instead."
      name: Data.IntSet.deleteFindMax
      within: []
- functions:
    - message: "Partial: throws on out-of-bounds. Use Data.Sequence.lookup or Data.Sequence.!? instead."
      name: Data.Sequence.index
      within: []
    - message: "Partial: throws on empty Seq."
      name: Data.Sequence.scanl1
      within: []
    - message: "Partial: throws on empty Seq."
      name: Data.Sequence.scanr1
      within: []
- hint:
    lhs: Data.Text.pack
    note: Use convert from Data.Convertible for uniform type conversion
    rhs: convert
- hint:
    lhs: Data.Text.unpack
    note: Use convert from Data.Convertible for uniform type conversion
    rhs: convert
- hint:
    lhs: Data.Text.Lazy.pack
    note: Use convert from Data.Convertible for uniform type conversion
    rhs: convert
- hint:
    lhs: Data.Text.Lazy.unpack
    note: Use convert from Data.Convertible for uniform type conversion
    rhs: convert
- hint:
    lhs: Data.Text.Lazy.toStrict
    note: Use convert from Data.Convertible for uniform type conversion
    rhs: convert
- hint:
    lhs: Data.Text.Lazy.fromStrict
    note: Use convert from Data.Convertible for uniform type conversion
    rhs: convert
- hint:
    lhs: Data.Text.Encoding.encodeUtf8
    note: Use convert from Data.Convertible for uniform type conversion
    rhs: convert
- hint:
    lhs: Data.Text.Encoding.decodeUtf8
    note: Use convert from Data.Convertible for uniform type conversion
    rhs: convert
- hint:
    lhs: Data.Text.Lazy.Encoding.encodeUtf8
    note: Use convert from Data.Convertible for uniform type conversion
    rhs: convert
- hint:
    lhs: Data.Text.Lazy.Encoding.decodeUtf8
    note: Use convert from Data.Convertible for uniform type conversion
    rhs: convert
- hint:
    lhs: Data.ByteString.pack
    note: Use convert from Data.Convertible for uniform type conversion
    rhs: convert
- hint:
    lhs: Data.ByteString.unpack
    note: Use convert from Data.Convertible for uniform type conversion
    rhs: convert
- hint:
    lhs: Data.ByteString.Lazy.pack
    note: Use convert from Data.Convertible for uniform type conversion
    rhs: convert
- hint:
    lhs: Data.ByteString.Lazy.unpack
    note: Use convert from Data.Convertible for uniform type conversion
    rhs: convert
- hint:
    lhs: Data.ByteString.Lazy.toStrict
    note: Use convert from Data.Convertible for uniform type conversion
    rhs: convert
- hint:
    lhs: Data.ByteString.Lazy.fromStrict
    note: Use convert from Data.Convertible for uniform type conversion
    rhs: convert
- hint:
    lhs: Data.Text.Lazy.Builder.fromText
    note: Use convert from Data.Convertible for uniform type conversion
    rhs: convert
- hint:
    lhs: Data.Text.Lazy.Builder.fromLazyText
    note: Use convert from Data.Convertible for uniform type conversion
    rhs: convert
- hint:
    lhs: Data.Text.Lazy.Builder.fromString
    note: Use convert from Data.Convertible for uniform type conversion
    rhs: convert
- hint:
    lhs: Data.Text.Lazy.Builder.toLazyText
    note: Use convert from Data.Convertible for uniform type conversion
    rhs: convert
- functions:
    - message: "Don't throw in pure code. Use throwM in MonadThrow context."
      name: throw
      within: []
    - message: Use typed exceptions with throwM instead of throwString.
      name: throwString
      within: []
    - message: Use typed exceptions with throwM instead of throwIO.
      name: throwIO
      within: []
    - message: "Avoid in production code. For development placeholders, consider typed holes instead."
      name: error
      within: []
    - message: Remember to implement before release. Consider typed holes for better error messages.
      name: undefined
      within: []
    - message: Use proper error handling
      name: errorWithoutStackTrace
      within: []
    - message: "Deprecated. Use error instead, which now includes stack traces."
      name: errorWithStackTrace
      within: []
- extensions:
    - message: "Defers ambiguity errors to call sites, making debugging harder"
      name:
        - AllowAmbiguousTypes
      within: []
    - message: "Defers type errors to runtime, defeating Haskell's type safety"
      name:
        - DeferTypeErrors
      within: []
    - message: "Causes unexpected type defaulting (e.g., show.read defaults to ())"
      name:
        - ExtendedDefaultRules
      within: []
    - message: Experimental and may break in future GHC versions
      name:
        - ImpredicativeTypes
      within: []
    - message: "Makes instance selection non-deterministic and order-dependent"
      name:
        - IncoherentInstances
      within: []
    - message: Can cause Core Lint errors with DataKinds and PolyKinds
      name:
        - LiberalTypeSynonyms
      within: []
    - message: "Deprecated since GHC 7.10, use OVERLAPPING pragma if truly needed"
      name:
        - OverlappingInstances
      within: []
    - message: "Changes do/if-then-else semantics, breaks deriving and TH"
      name:
        - RebindableSyntax
      within: []
    - message: "Can cause type checker non-termination or stack overflow"
      name:
        - UndecidableSuperClasses
      within: []
- extensions:
    - message: 'Breaks coherence. If unavoidable, add {-# HLINT ignore "Avoid restricted extensions" #-}'
      name:
        - ImplicitParams
      within: []
    - message: 'May cause type checker loops. If unavoidable, add {-# HLINT ignore "Avoid restricted extensions" #-}'
      name:
        - UndecidableInstances
      within: []
- functions:
    - message: "Partial: throws on empty Fold. Use (^?) instead."
      name: "Control.Lens.Fold.^?!"
      within: []
    - message: "Partial: throws on empty Fold. Use (^@?) instead."
      name: "Control.Lens.Fold.^@?!"
      within: []
    - message: "Partial: throws on 0 or >1 elements. Consider using (^?) or ensure exactly 1 element."
      name: Control.Lens.Traversal.singular
      within: []
    - message: "Partial: throws on 0 or >1 elements."
      name: Control.Lens.Traversal.unsafeSingular
      within: []
    - message: "Unsafe: may throw if list length changes."
      name: Control.Lens.Traversal.unsafePartsOf
      within: []
    - message: "Unsafe: may throw if list length changes."
      name: Control.Lens.Traversal.iunsafePartsOf
      within: []
- functions:
    - message: "Unsound: violates lens laws unless lenses are disjoint. Use alongside instead."
      name: Control.Lens.Unsound.lensProduct
      within: []
    - message: "Unsound: violates prism laws. Use without instead."
      name: Control.Lens.Unsound.prismSum
      within: []
    - message: "Unsound: violates traversal laws unless traversals are disjoint. Use failing instead."
      name: Control.Lens.Unsound.adjoin
      within: []
- modules:
    - message: Replace with Control.Monad.Writer.CPS to avoid space leaks.
      name: Control.Monad.Writer
      within: []
    - message: Replace with Control.Monad.Writer.CPS to avoid space leaks.
      name: Control.Monad.Writer.Lazy
      within: []
    - message: Replace with Control.Monad.Writer.CPS to avoid space leaks.
      name: Control.Monad.Writer.Strict
      within: []
    - message: Replace with Control.Monad.RWS.CPS to avoid space leaks.
      name: Control.Monad.RWS
      within: []
    - message: Replace with Control.Monad.RWS.CPS to avoid space leaks.
      name: Control.Monad.RWS.Lazy
      within: []
    - message: Replace with Control.Monad.RWS.CPS to avoid space leaks.
      name: Control.Monad.RWS.Strict
      within: []
- modules:
    - message: "Ambiguous: Use Control.Monad.State.Lazy or Control.Monad.State.Strict explicitly."
      name: Control.Monad.State
      within: []
    - message: "Redirect: Import Control.Monad.Trans.Class or Control.Monad.IO.Class directly."
      name: Control.Monad.Trans
      within: []
    - message: "Redirect: Import Data.Functor.Identity directly."
      name: Control.Monad.Identity
      within: []
- functions:
    - message: "Partial: throws on base <= 1 or negative input. Ensure base > 1 and non-negative input."
      name: showIntAtBase
      within: []
    - message: "Partial: throws on negative numbers. Ensure non-negative input."
      name: showInt
      within: []
    - message: "Partial: throws on negative numbers. Ensure non-negative input."
      name: showHex
      within: []
    - message: "Partial: throws on negative numbers. Ensure non-negative input."
      name: showOct
      within: []
    - message: "Partial: throws on negative numbers. Ensure non-negative input."
      name: showBin
      within: []
- functions:
    - message: "O(n^2) complexity. Use ordNub or nubOrd instead."
      name: nub
      within: []
    - message: "Lazy accumulator causes space leaks. Use foldl' instead."
      name: foldl
      within: []
    - message: "O(n) stack space. Use length with explicit conversion."
      name: genericLength
      within: []
- hint:
    lhs: trace
    note: "pTrace* provides pretty-printed output for easier debugging"
    rhs: pTrace
- hint:
    lhs: traceId
    note: "pTrace* provides pretty-printed output for easier debugging"
    rhs: pTraceId
- hint:
    lhs: traceShow
    note: "pTrace* provides pretty-printed output for easier debugging"
    rhs: pTraceShow
- hint:
    lhs: traceShowId
    note: "pTrace* provides pretty-printed output for easier debugging"
    rhs: pTraceShowId
- hint:
    lhs: traceWith
    note: "pTrace* provides pretty-printed output for easier debugging"
    rhs: pTraceWith
- hint:
    lhs: traceShowWith
    note: "pTrace* provides pretty-printed output for easier debugging"
    rhs: pTraceShowWith
- hint:
    lhs: traceStack
    note: "pTrace* provides pretty-printed output for easier debugging"
    rhs: pTraceStack
- hint:
    lhs: traceIO
    note: "pTrace* provides pretty-printed output for easier debugging"
    rhs: pTraceIO
- hint:
    lhs: traceM
    note: "pTrace* provides pretty-printed output for easier debugging"
    rhs: pTraceM
- hint:
    lhs: traceShowM
    note: "pTrace* provides pretty-printed output for easier debugging"
    rhs: pTraceShowM
- hint:
    lhs: traceEvent
    note: "pTrace* provides pretty-printed output for easier debugging"
    rhs: pTraceEvent
- hint:
    lhs: traceEventIO
    note: "pTrace* provides pretty-printed output for easier debugging"
    rhs: pTraceEventIO
- hint:
    lhs: traceMarker
    note: "pTrace* provides pretty-printed output for easier debugging"
    rhs: pTraceMarker
- hint:
    lhs: traceMarkerIO
    note: "pTrace* provides pretty-printed output for easier debugging"
    rhs: pTraceMarkerIO
- functions:
    - message: Unsafe primitive state token conversion. Use safe alternatives.
      name: unsafePrimToPrim
      within: []
    - message: Unsafe freeze without copying. Use freezeArray for safety.
      name: unsafeFreezeArray
      within: []
    - message: Unsafe thaw without copying. Use thawArray for safety.
      name: unsafeThawArray
      within: []
    - message: Unsafe freeze without copying. Use freezeByteArray for safety.
      name: unsafeFreezeByteArray
      within: []
    - message: Unsafe thaw without copying. Use thawByteArray for safety.
      name: unsafeThawByteArray
      within: []
    - message: Unsafe freeze without copying. Use freezeSmallArray for safety.
      name: unsafeFreezeSmallArray
      within: []
    - message: Unsafe thaw without copying. Use thawSmallArray for safety.
      name: unsafeThawSmallArray
      within: []
    - message: Unsafe freeze without copying. Use freezePrimArray for safety.
      name: unsafeFreezePrimArray
      within: []
    - message: Unsafe thaw without copying. Use thawPrimArray for safety.
      name: unsafeThawPrimArray
      within: []
- modules:
    - as: B
      importStyle: explicitOrQualified
      name: Data.ByteString
    - as: B8
      importStyle: explicitOrQualified
      name: Data.ByteString.Char8
    - as: BL
      importStyle: explicitOrQualified
      name: Data.ByteString.Lazy
    - as: BL8
      importStyle: explicitOrQualified
      name: Data.ByteString.Lazy.Char8
    - as: T
      importStyle: explicitOrQualified
      name: Data.Text
    - as: TL
      importStyle: explicitOrQualified
      name: Data.Text.Lazy
    - message: "Data.Map is a re-export of Data.Map.Lazy. Use Data.Map.Strict or Data.Map.Lazy directly."
      name: Data.Map
      within: []
    - as: Map
      importStyle: explicitOrQualified
      name: Data.Map.Strict
    - as: MapL
      importStyle: explicitOrQualified
      name: Data.Map.Lazy
    - message: "Data.IntMap is a re-export of Data.IntMap.Lazy. Use Data.IntMap.Strict or Data.IntMap.Lazy directly."
      name: Data.IntMap
      within: []
    - as: IntMap
      importStyle: explicitOrQualified
      name: Data.IntMap.Strict
    - as: IntMapL
      importStyle: explicitOrQualified
      name: Data.IntMap.Lazy
    - as: Set
      importStyle: explicitOrQualified
      name: Data.Set
    - as: Seq
      importStyle: explicitOrQualified
      name: Data.Sequence
    - as: IntSet
      importStyle: explicitOrQualified
      name: Data.IntSet
    - as: HM
      importStyle: explicitOrQualified
      name: Data.HashMap.Strict
    - as: HML
      importStyle: explicitOrQualified
      name: Data.HashMap.Lazy
    - as: HS
      importStyle: explicitOrQualified
      name: Data.HashSet
    - as: L
      importStyle: explicitOrQualified
      name: Data.List
    - as: L
      importStyle: explicitOrQualified
      name: Data.Containers.ListUtils
    - as: NE
      importStyle: explicitOrQualified
      name: Data.List.NonEmpty
    - as: C
      importStyle: explicitOrQualified
      name: Data.Char
    - as: Key
      importStyle: explicitOrQualified
      name: Data.Aeson.Key
    - as: KeyMap
      importStyle: explicitOrQualified
      name: Data.Aeson.KeyMap
    - as: V
      importStyle: explicitOrQualified
      name: Data.Vector
    - as: VG
      importStyle: explicitOrQualified
      name: Data.Vector.Generic
    - as: VS
      importStyle: explicitOrQualified
      name: Data.Vector.Storable
    - as: VU
      importStyle: explicitOrQualified
      name: Data.Vector.Unboxed
- functions:
    - message: "Partial: throws on maxBound. Use succMay, succDef, or succSafe from Safe instead."
      name: succ
      within: []
    - message: "Partial: throws on minBound. Use predMay, predDef, or predSafe from Safe instead."
      name: pred
      within: []
    - message: "Partial: throws on out-of-bounds. Use toEnumMay, toEnumDef, or toEnumSafe from Safe instead."
      name: toEnum
      within: []
- functions:
    - message: "Partial: throws on empty list. Use headMay or headDef from Safe instead."
      name: Data.List.head
      within: []
    - message: "Partial: throws on empty list. Use tailMay, tailDef, or tailSafe from Safe instead."
      name: Data.List.tail
      within: []
    - message: "Partial: throws on empty list. Use initMay, initDef, or initSafe from Safe instead."
      name: Data.List.init
      within: []
    - message: "Partial: throws on empty list. Use lastMay or lastDef from Safe instead."
      name: Data.List.last
      within: []
    - message: "Partial: throws on out-of-bounds. Use atMay or atDef from Safe instead."
      name: "Data.List.!!"
      within: []
    - message: "Partial: throws on empty list. Use cycleMay or cycleDef from Safe instead."
      name: Data.List.cycle
      within: []
    - message: "Partial: throws on empty list. Use scanl1May or scanl1Def from Safe instead."
      name: Data.List.scanl1
      within: []
    - message: "Partial: throws on empty list. Use scanr1May or scanr1Def from Safe instead."
      name: Data.List.scanr1
      within: []
    - message: "Partial: throws on empty list. Use foldl1May from Safe instead."
      name: Data.List.foldl1
      within: []
    - message: "Partial: throws on empty list. Use foldl1May' from Safe instead."
      name: "Data.List.foldl1'"
      within: []
    - message: "Partial: throws on empty list. Use foldr1May from Safe instead."
      name: Data.List.foldr1
      within: []
    - message: "Partial: throws on empty list. Use maximumMay or maximumBound from Safe instead."
      name: Data.List.maximum
      within: []
    - message: "Partial: throws on empty list. Use minimumMay or minimumBound from Safe instead."
      name: Data.List.minimum
      within: []
    - message: "Partial: throws on empty list. Use maximumByMay or maximumBoundBy from Safe instead."
      name: Data.List.maximumBy
      within: []
    - message: "Partial: throws on empty list. Use minimumByMay or minimumBoundBy from Safe instead."
      name: Data.List.minimumBy
      within: []
- functions:
    - message: "Partial: throws on Nothing. Use fromMaybe or pattern match instead."
      name: Data.Maybe.fromJust
      within: []
- functions:
    - message: "Partial: throws on parse failure. Use readMay or readDef from Safe instead."
      name: read
      within: []
- functions:
    - message: "Partial: throws on empty structure. Use foldl1May from Safe.Foldable instead."
      name: Data.Foldable.foldl1
      within: []
    - message: "Partial: throws on empty structure. Use foldr1May from Safe.Foldable instead."
      name: Data.Foldable.foldr1
      within: []
    - message: "Partial: throws on empty structure. Use maximumMay or maximumBound from Safe.Foldable instead."
      name: Data.Foldable.maximum
      within: []
    - message: "Partial: throws on empty structure. Use minimumMay or minimumBound from Safe.Foldable instead."
      name: Data.Foldable.minimum
      within: []
    - message: "Partial: throws on empty structure. Use maximumByMay or maximumBoundBy from Safe.Foldable instead."
      name: Data.Foldable.maximumBy
      within: []
    - message: "Partial: throws on empty structure. Use minimumByMay or minimumBoundBy from Safe.Foldable instead."
      name: Data.Foldable.minimumBy
      within: []
- functions:
    - message: "Partial: throws on empty structure. Use bifoldl with a default value instead."
      name: Data.Bifoldable.bifoldl1
      within: []
    - message: "Partial: throws on empty structure. Use bifoldr with a default value instead."
      name: Data.Bifoldable.bifoldr1
      within: []
    - message: "Partial: throws on empty structure. Use bifoldr with explicit initial value."
      name: Data.Bifoldable.bimaximum
      within: []
    - message: "Partial: throws on empty structure. Use bifoldr with explicit initial value."
      name: Data.Bifoldable.biminimum
      within: []
    - message: "Partial: throws on empty structure. Use bifoldr with explicit initial value."
      name: Data.Bifoldable.bimaximumBy
      within: []
    - message: "Partial: throws on empty structure. Use bifoldr with explicit initial value."
      name: Data.Bifoldable.biminimumBy
      within: []
- functions:
    - message: "Partial: throws on out-of-bounds. Use atMay or atDef from Safe with toList instead."
      name: "Data.List.NonEmpty.!!"
      within: []
    - message: "Partial: throws on empty list. Use nonEmpty instead."
      name: Data.List.NonEmpty.fromList
      within: []
- functions:
    - message: "Partial: throws on out-of-range. Use indexMay or indexDef from Safe instead."
      name: Data.Ix.index
      within: []
- functions:
    - message: "Partial: synonym for error. Use throwM or Left instead."
      name: Safe.abort
      within: []
    - message: "Partial: throws on out-of-bounds. Use atMay or atDef instead."
      name: Safe.at
      within: []
    - message: "Partial: throws on empty list. Use headMay or headDef instead."
      name: Safe.headErr
      within: []
    - message: "Partial: throws on empty list. Use tailMay or tailDef instead."
      name: Safe.tailErr
      within: []
    - message: "Partial: throws on missing key. Use lookup or lookupJustDef instead."
      name: Safe.lookupJust
      within: []
    - message: "Partial: throws when not found. Use find or findJustDef instead."
      name: Safe.findJust
      within: []
    - message: "Partial: throws when not found. Use elemIndex or elemIndexJustDef instead."
      name: Safe.elemIndexJust
      within: []
    - message: "Partial: throws when not found. Use findIndex or findIndexJustDef instead."
      name: Safe.findIndexJust
      within: []
- functions:
    - message: "Partial: throws on empty list. Use tailMay or tailDef instead."
      name: Safe.tailNote
      within: []
    - message: "Partial: throws on empty list. Use initMay or initDef instead."
      name: Safe.initNote
      within: []
    - message: "Partial: throws on empty list. Use headMay or headDef instead."
      name: Safe.headNote
      within: []
    - message: "Partial: throws on empty list. Use lastMay or lastDef instead."
      name: Safe.lastNote
      within: []
    - message: "Partial: throws on empty list. Use minimumMay or minimumBound instead."
      name: Safe.minimumNote
      within: []
    - message: "Partial: throws on empty list. Use maximumMay or maximumBound instead."
      name: Safe.maximumNote
      within: []
    - message: "Partial: throws on empty list. Use minimumByMay or minimumBoundBy instead."
      name: Safe.minimumByNote
      within: []
    - message: "Partial: throws on empty list. Use maximumByMay or maximumBoundBy instead."
      name: Safe.maximumByNote
      within: []
    - message: "Partial: throws on empty list. Use foldr1May instead."
      name: Safe.foldr1Note
      within: []
    - message: "Partial: throws on empty list. Use foldl1May instead."
      name: Safe.foldl1Note
      within: []
    - message: "Partial: throws on empty list. Use foldl1May' instead."
      name: "Safe.foldl1Note'"
      within: []
    - message: "Partial: throws on empty list. Use scanr1May or scanr1Def instead."
      name: Safe.scanr1Note
      within: []
    - message: "Partial: throws on empty list. Use scanl1May or scanl1Def instead."
      name: Safe.scanl1Note
      within: []
    - message: "Partial: throws on empty list. Use cycleMay or cycleDef instead."
      name: Safe.cycleNote
      within: []
    - message: "Partial: throws on Nothing. Use fromMaybe instead."
      name: Safe.fromJustNote
      within: []
    - message: "Partial: throws on False. Use guard or when instead."
      name: Safe.assertNote
      within: []
    - message: "Partial: throws on out-of-bounds. Use atMay or atDef instead."
      name: Safe.atNote
      within: []
    - message: "Partial: throws on parse failure. Use readMay or readDef instead."
      name: Safe.readNote
      within: []
    - message: "Partial: throws on missing key. Use lookup or lookupJustDef instead."
      name: Safe.lookupJustNote
      within: []
    - message: "Partial: throws when not found. Use find or findJustDef instead."
      name: Safe.findJustNote
      within: []
    - message: "Partial: throws when not found. Use elemIndex or elemIndexJustDef instead."
      name: Safe.elemIndexJustNote
      within: []
    - message: "Partial: throws when not found. Use findIndex or findIndexJustDef instead."
      name: Safe.findIndexJustNote
      within: []
    - message: "Partial: throws on out-of-bounds. Use toEnumMay or toEnumDef instead."
      name: Safe.toEnumNote
      within: []
    - message: "Partial: throws on maxBound. Use succMay or succDef instead."
      name: Safe.succNote
      within: []
    - message: "Partial: throws on minBound. Use predMay or predDef instead."
      name: Safe.predNote
      within: []
    - message: "Partial: throws on out-of-range. Use indexMay or indexDef instead."
      name: Safe.indexNote
      within: []
- functions:
    - message: "Partial: throws on insufficient elements. Use takeExactMay or takeExactDef instead."
      name: Safe.Exact.takeExact
      within: []
    - message: "Partial: throws on insufficient elements. Use dropExactMay or dropExactDef instead."
      name: Safe.Exact.dropExact
      within: []
    - message: "Partial: throws on insufficient elements. Use splitAtExactMay or splitAtExactDef instead."
      name: Safe.Exact.splitAtExact
      within: []
    - message: "Partial: throws on length mismatch. Use zipExactMay or zipExactDef instead."
      name: Safe.Exact.zipExact
      within: []
    - message: "Partial: throws on length mismatch. Use zipWithExactMay or zipWithExactDef instead."
      name: Safe.Exact.zipWithExact
      within: []
    - message: "Partial: throws on length mismatch. Use zip3ExactMay or zip3ExactDef instead."
      name: Safe.Exact.zip3Exact
      within: []
    - message: "Partial: throws on length mismatch. Use zipWith3ExactMay or zipWith3ExactDef instead."
      name: Safe.Exact.zipWith3Exact
      within: []
    - message: "Partial: throws on insufficient elements. Use takeExactMay or takeExactDef instead."
      name: Safe.Exact.takeExactNote
      within: []
    - message: "Partial: throws on insufficient elements. Use dropExactMay or dropExactDef instead."
      name: Safe.Exact.dropExactNote
      within: []
    - message: "Partial: throws on insufficient elements. Use splitAtExactMay or splitAtExactDef instead."
      name: Safe.Exact.splitAtExactNote
      within: []
    - message: "Partial: throws on length mismatch. Use zipExactMay or zipExactDef instead."
      name: Safe.Exact.zipExactNote
      within: []
    - message: "Partial: throws on length mismatch. Use zipWithExactMay or zipWithExactDef instead."
      name: Safe.Exact.zipWithExactNote
      within: []
    - message: "Partial: throws on length mismatch. Use zip3ExactMay or zip3ExactDef instead."
      name: Safe.Exact.zip3ExactNote
      within: []
    - message: "Partial: throws on length mismatch. Use zipWith3ExactMay or zipWith3ExactDef instead."
      name: Safe.Exact.zipWith3ExactNote
      within: []
- functions:
    - message: "Partial: throws on empty structure. Use foldl1May instead."
      name: Safe.Foldable.foldl1Note
      within: []
    - message: "Partial: throws on empty structure. Use foldr1May instead."
      name: Safe.Foldable.foldr1Note
      within: []
    - message: "Partial: throws on empty structure. Use minimumMay or minimumBound instead."
      name: Safe.Foldable.minimumNote
      within: []
    - message: "Partial: throws on empty structure. Use maximumMay or maximumBound instead."
      name: Safe.Foldable.maximumNote
      within: []
    - message: "Partial: throws on empty structure. Use minimumByMay or minimumBoundBy instead."
      name: Safe.Foldable.minimumByNote
      within: []
    - message: "Partial: throws on empty structure. Use maximumByMay or maximumBoundBy instead."
      name: Safe.Foldable.maximumByNote
      within: []
    - message: "Partial: throws when not found. Use find or findJustDef instead."
      name: Safe.Foldable.findJust
      within: []
    - message: "Partial: throws when not found. Use find or findJustDef instead."
      name: Safe.Foldable.findJustNote
      within: []
- functions:
    - message: Encoding depends on LANG env. Use Text or ByteString.
      name: System.IO.getChar
      within: []
    - message: Encoding depends on LANG env. Use Text or ByteString.
      name: System.IO.getLine
      within: []
    - message: "Lazy IO + env-dependent encoding. Use strict Text or ByteString."
      name: System.IO.getContents
      within: []
    - message: "Lazy IO + env-dependent encoding. Use Data.Text.IO.readFile or Data.ByteString.readFile."
      name: System.IO.readFile
      within: []
    - message: "Lazy IO + env-dependent encoding."
      name: System.IO.interact
      within: []
    - message: "Env-dependent + partial (uses read)."
      name: System.IO.readIO
      within: []
    - message: "Env-dependent + partial (uses read)."
      name: System.IO.readLn
      within: []
    - message: Encoding depends on LANG env. Use Text or ByteString.
      name: System.IO.putChar
      within: []
    - message: Encoding depends on LANG env. Use Text or ByteString.
      name: System.IO.putStr
      within: []
    - message: Encoding depends on LANG env. Use Text or ByteString.
      name: System.IO.putStrLn
      within: []
    - message: Encoding depends on LANG env. Use Text or ByteString.
      name: System.IO.print
      within: []
    - message: "Env-dependent encoding. Use Data.Text.IO.writeFile or Data.ByteString.writeFile."
      name: System.IO.writeFile
      within: []
    - message: "Env-dependent encoding. Use Data.Text.IO.appendFile or Data.ByteString.appendFile."
      name: System.IO.appendFile
      within: []
- functions:
    - message: Use Data.Text.uncons instead
      name: Data.Text.head
      within: []
    - message: Use Data.Text.uncons instead
      name: Data.Text.tail
      within: []
    - message: Use Data.Text.unsnoc instead
      name: Data.Text.init
      within: []
    - message: Use Data.Text.unsnoc instead
      name: Data.Text.last
      within: []
    - message: "Partial: throws on empty Text. Use foldl with explicit initial value."
      name: Data.Text.foldl1
      within: []
    - message: "Partial: throws on empty Text. Use foldl' with explicit initial value."
      name: "Data.Text.foldl1'"
      within: []
    - message: "Partial: throws on empty Text. Use foldr with explicit initial value."
      name: Data.Text.foldr1
      within: []
    - message: "Partial: throws on empty Text. Use fold with explicit initial value."
      name: Data.Text.maximum
      within: []
    - message: "Partial: throws on empty Text. Use fold with explicit initial value."
      name: Data.Text.minimum
      within: []
    - message: "Partial: throws on out-of-bounds. Use safe indexing alternatives."
      name: Data.Text.index
      within: []
- functions:
    - message: Use Data.Text.Lazy.uncons instead
      name: Data.Text.Lazy.head
      within: []
    - message: Use Data.Text.Lazy.uncons instead
      name: Data.Text.Lazy.tail
      within: []
    - message: Use Data.Text.Lazy.unsnoc instead
      name: Data.Text.Lazy.init
      within: []
    - message: Use Data.Text.Lazy.unsnoc instead
      name: Data.Text.Lazy.last
      within: []
    - message: "Partial: throws on empty Text. Use foldl with explicit initial value."
      name: Data.Text.Lazy.foldl1
      within: []
    - message: "Partial: throws on empty Text. Use foldl' with explicit initial value."
      name: "Data.Text.Lazy.foldl1'"
      within: []
    - message: "Partial: throws on empty Text. Use foldr with explicit initial value."
      name: Data.Text.Lazy.foldr1
      within: []
    - message: "Partial: throws on empty Text. Use fold with explicit initial value."
      name: Data.Text.Lazy.maximum
      within: []
    - message: "Partial: throws on empty Text. Use fold with explicit initial value."
      name: Data.Text.Lazy.minimum
      within: []
    - message: "Partial: throws on out-of-bounds. Use safe indexing alternatives."
      name: Data.Text.Lazy.index
      within: []
    - message: "Partial: throws on empty Text."
      name: Data.Text.Lazy.cycle
      within: []
- functions:
    - message: "Unsafe: no bounds check. Use Data.Text.uncons instead"
      name: Data.Text.Unsafe.unsafeHead
      within: []
    - message: "Unsafe: no bounds check. Use Data.Text.uncons instead"
      name: Data.Text.Unsafe.unsafeTail
      within: []
    - message: "Unsafe: no bounds check. Use Data.Text.take instead"
      name: Data.Text.Unsafe.takeWord8
      within: []
    - message: "Unsafe: no bounds check. Use Data.Text.drop instead"
      name: Data.Text.Unsafe.dropWord8
      within: []
- functions:
    - message: "Use System.Process.Typed.runProcess_ instead for type-safe process execution."
      name: System.Process.callProcess
      within: []
    - message: "Use System.Process.Typed.runProcess_ with shell instead for type-safe process execution."
      name: System.Process.callCommand
      within: []
    - message: "Use System.Process.Typed.startProcess instead for type-safe process execution."
      name: System.Process.spawnProcess
      within: []
    - message: "Use System.Process.Typed.startProcess with shell instead for type-safe process execution."
      name: System.Process.spawnCommand
      within: []
    - message: "Use System.Process.Typed.startProcess instead for type-safe process execution."
      name: System.Process.createProcess
      within: []
    - message: "Use System.Process.Typed.startProcess instead for type-safe process execution."
      name: System.Process.createProcess_
      within: []
    - message: "Use System.Process.Typed.stopProcess instead for type-safe process cleanup."
      name: System.Process.cleanupProcess
      within: []
    - message: "Use System.Process.Typed.readProcessStdout instead for type-safe output capture."
      name: System.Process.readProcess
      within: []
    - message: "Use System.Process.Typed.readProcess instead for type-safe output capture."
      name: System.Process.readProcessWithExitCode
      within: []
    - message: "Use System.Process.Typed.readProcessStdout instead for type-safe output capture."
      name: System.Process.readCreateProcess
      within: []
    - message: "Use System.Process.Typed.readProcess instead for type-safe output capture."
      name: System.Process.readCreateProcessWithExitCode
      within: []
    - message: Use System.Process.Typed.waitExitCode instead for MonadIO support.
      name: System.Process.waitForProcess
      within: []
    - message: Use System.Process.Typed.getExitCode instead for MonadIO support.
      name: System.Process.getProcessExitCode
      within: []
    - message: Use System.Process.Typed.stopProcess instead for proper cleanup.
      name: System.Process.terminateProcess
      within: []
    - message: Consider using System.Process.Typed with setCreateGroup for process group management.
      name: System.Process.interruptProcessGroupOf
      within: []
    - message: "Use System.Process.Typed.runProcess with shell instead for type-safe process execution."
      name: System.Process.runCommand
      within: []
    - message: "Use System.Process.Typed.runProcess instead for type-safe process execution."
      name: System.Process.runProcess
      within: []
    - message: Use System.Process.Typed.startProcess with shell and createPipe instead.
      name: System.Process.runInteractiveCommand
      within: []
    - message: Use System.Process.Typed.startProcess with createPipe instead.
      name: System.Process.runInteractiveProcess
      within: []
    - message: "Use System.Process.Typed.runProcess with shell instead for type-safe process execution."
      name: System.Process.system
      within: []
    - message: "Use System.Process.Typed.runProcess instead for type-safe process execution."
      name: System.Process.rawSystem
      within: []
    - message: "Use System.Process.Typed.proc instead for type-safe ProcessConfig."
      name: System.Process.proc
      within: []
    - message: "Use System.Process.Typed.shell instead for type-safe ProcessConfig."
      name: System.Process.shell
      within: []
    - message: Use System.Process.Typed.withProcessWait or withProcessTerm instead for MonadUnliftIO support.
      name: System.Process.withCreateProcess
      within: []
    - message: Use System.Process.Typed.withProcessWait_ or withProcessTerm_ instead for MonadUnliftIO support.
      name: System.Process.withCreateProcess_
      within: []
- functions:
    - message: Use typed exceptions instead. Define a proper exception type.
      name: UnliftIO.Exception.throwString
      within: []
    - message: Use typed exceptions instead. Define a proper exception type.
      name: UnliftIO.Exception.stringException
      within: []
- functions:
    - message: Use UnliftIO.Async.async instead for MonadUnliftIO support.
      name: Control.Concurrent.Async.async
      within: []
    - message: Use UnliftIO.Async.asyncBound instead for MonadUnliftIO support.
      name: Control.Concurrent.Async.asyncBound
      within: []
    - message: Use UnliftIO.Async.asyncOn instead for MonadUnliftIO support.
      name: Control.Concurrent.Async.asyncOn
      within: []
    - message: Use UnliftIO.Async.asyncWithUnmask instead for MonadUnliftIO support.
      name: Control.Concurrent.Async.asyncWithUnmask
      within: []
    - message: Use UnliftIO.Async.withAsync instead for MonadUnliftIO support.
      name: Control.Concurrent.Async.withAsync
      within: []
    - message: Use UnliftIO.Async.withAsyncBound instead for MonadUnliftIO support.
      name: Control.Concurrent.Async.withAsyncBound
      within: []
    - message: Use UnliftIO.Async.withAsyncOn instead for MonadUnliftIO support.
      name: Control.Concurrent.Async.withAsyncOn
      within: []
    - message: Use UnliftIO.Async.withAsyncWithUnmask instead for MonadUnliftIO support.
      name: Control.Concurrent.Async.withAsyncWithUnmask
      within: []
    - message: Use UnliftIO.Async.wait instead for MonadUnliftIO support.
      name: Control.Concurrent.Async.wait
      within: []
    - message: Use UnliftIO.Async.poll instead for MonadUnliftIO support.
      name: Control.Concurrent.Async.poll
      within: []
    - message: Use UnliftIO.Async.waitCatch instead for MonadUnliftIO support.
      name: Control.Concurrent.Async.waitCatch
      within: []
    - message: Use UnliftIO.Async.cancel instead for MonadUnliftIO support.
      name: Control.Concurrent.Async.cancel
      within: []
    - message: Use UnliftIO.Async.uninterruptibleCancel instead for MonadUnliftIO support.
      name: Control.Concurrent.Async.uninterruptibleCancel
      within: []
    - message: Use UnliftIO.Async.cancelWith instead for MonadUnliftIO support.
      name: Control.Concurrent.Async.cancelWith
      within: []
    - message: Use UnliftIO.Async.race instead for MonadUnliftIO support.
      name: Control.Concurrent.Async.race
      within: []
    - message: Use UnliftIO.Async.race_ instead for MonadUnliftIO support.
      name: Control.Concurrent.Async.race_
      within: []
    - message: Use UnliftIO.Async.concurrently instead for MonadUnliftIO support.
      name: Control.Concurrent.Async.concurrently
      within: []
    - message: Use UnliftIO.Async.concurrently_ instead for MonadUnliftIO support.
      name: Control.Concurrent.Async.concurrently_
      within: []
    - message: Use UnliftIO.Async.mapConcurrently instead for MonadUnliftIO support.
      name: Control.Concurrent.Async.mapConcurrently
      within: []
    - message: Use UnliftIO.Async.forConcurrently instead for MonadUnliftIO support.
      name: Control.Concurrent.Async.forConcurrently
      within: []
    - message: Use UnliftIO.Async.mapConcurrently_ instead for MonadUnliftIO support.
      name: Control.Concurrent.Async.mapConcurrently_
      within: []
    - message: Use UnliftIO.Async.forConcurrently_ instead for MonadUnliftIO support.
      name: Control.Concurrent.Async.forConcurrently_
      within: []
    - message: Use UnliftIO.Async.replicateConcurrently instead for MonadUnliftIO support.
      name: Control.Concurrent.Async.replicateConcurrently
      within: []
    - message: Use UnliftIO.Async.replicateConcurrently_ instead for MonadUnliftIO support.
      name: Control.Concurrent.Async.replicateConcurrently_
      within: []
    - message: Use UnliftIO.Async.waitAny instead for MonadUnliftIO support.
      name: Control.Concurrent.Async.waitAny
      within: []
    - message: Use UnliftIO.Async.waitAnyCatch instead for MonadUnliftIO support.
      name: Control.Concurrent.Async.waitAnyCatch
      within: []
    - message: Use UnliftIO.Async.waitAnyCancel instead for MonadUnliftIO support.
      name: Control.Concurrent.Async.waitAnyCancel
      within: []
    - message: Use UnliftIO.Async.waitAnyCatchCancel instead for MonadUnliftIO support.
      name: Control.Concurrent.Async.waitAnyCatchCancel
      within: []
    - message: Use UnliftIO.Async.waitEither instead for MonadUnliftIO support.
      name: Control.Concurrent.Async.waitEither
      within: []
    - message: Use UnliftIO.Async.waitEitherCatch instead for MonadUnliftIO support.
      name: Control.Concurrent.Async.waitEitherCatch
      within: []
    - message: Use UnliftIO.Async.waitEitherCancel instead for MonadUnliftIO support.
      name: Control.Concurrent.Async.waitEitherCancel
      within: []
    - message: Use UnliftIO.Async.waitEitherCatchCancel instead for MonadUnliftIO support.
      name: Control.Concurrent.Async.waitEitherCatchCancel
      within: []
    - message: Use UnliftIO.Async.waitEither_ instead for MonadUnliftIO support.
      name: Control.Concurrent.Async.waitEither_
      within: []
    - message: Use UnliftIO.Async.waitBoth instead for MonadUnliftIO support.
      name: Control.Concurrent.Async.waitBoth
      within: []
    - message: Use UnliftIO.Async.link instead for MonadUnliftIO support.
      name: Control.Concurrent.Async.link
      within: []
    - message: Use UnliftIO.Async.linkOnly instead for MonadUnliftIO support.
      name: Control.Concurrent.Async.linkOnly
      within: []
    - message: Use UnliftIO.Async.link2 instead for MonadUnliftIO support.
      name: Control.Concurrent.Async.link2
      within: []
    - message: Use UnliftIO.Async.link2Only instead for MonadUnliftIO support.
      name: Control.Concurrent.Async.link2Only
      within: []
- functions:
    - message: Use UnliftIO.Exception.catch instead for MonadUnliftIO support.
      name: Control.Exception.catch
      within: []
    - message: Use UnliftIO.Exception.catchJust instead for MonadUnliftIO support.
      name: Control.Exception.catchJust
      within: []
    - message: Use UnliftIO.Exception.handle instead for MonadUnliftIO support.
      name: Control.Exception.handle
      within: []
    - message: Use UnliftIO.Exception.handleJust instead for MonadUnliftIO support.
      name: Control.Exception.handleJust
      within: []
    - message: Use UnliftIO.Exception.try instead for MonadUnliftIO support.
      name: Control.Exception.try
      within: []
    - message: Use UnliftIO.Exception.tryJust instead for MonadUnliftIO support.
      name: Control.Exception.tryJust
      within: []
    - message: Use UnliftIO.Exception.bracket instead for MonadUnliftIO support.
      name: Control.Exception.bracket
      within: []
    - message: Use UnliftIO.Exception.bracket_ instead for MonadUnliftIO support.
      name: Control.Exception.bracket_
      within: []
    - message: Use UnliftIO.Exception.bracketOnError instead for MonadUnliftIO support.
      name: Control.Exception.bracketOnError
      within: []
    - message: Use UnliftIO.Exception.finally instead for MonadUnliftIO support.
      name: Control.Exception.finally
      within: []
    - message: Use UnliftIO.Exception.onException instead for MonadUnliftIO support.
      name: Control.Exception.onException
      within: []
    - message: Use UnliftIO.Exception.mask instead for MonadUnliftIO support.
      name: Control.Exception.mask
      within: []
    - message: Use UnliftIO.Exception.mask_ instead for MonadUnliftIO support.
      name: Control.Exception.mask_
      within: []
    - message: Use UnliftIO.Exception.uninterruptibleMask instead for MonadUnliftIO support.
      name: Control.Exception.uninterruptibleMask
      within: []
    - message: Use UnliftIO.Exception.uninterruptibleMask_ instead for MonadUnliftIO support.
      name: Control.Exception.uninterruptibleMask_
      within: []
    - message: Use UnliftIO.Exception.evaluate instead for MonadUnliftIO support.
      name: Control.Exception.evaluate
      within: []
- functions:
    - message: Use UnliftIO.MVar.withMVar instead for MonadUnliftIO support.
      name: Control.Concurrent.MVar.withMVar
      within: []
    - message: Use UnliftIO.MVar.withMVarMasked instead for MonadUnliftIO support.
      name: Control.Concurrent.MVar.withMVarMasked
      within: []
    - message: Use UnliftIO.MVar.modifyMVar instead for MonadUnliftIO support.
      name: Control.Concurrent.MVar.modifyMVar
      within: []
    - message: Use UnliftIO.MVar.modifyMVar_ instead for MonadUnliftIO support.
      name: Control.Concurrent.MVar.modifyMVar_
      within: []
    - message: Use UnliftIO.MVar.modifyMVarMasked instead for MonadUnliftIO support.
      name: Control.Concurrent.MVar.modifyMVarMasked
      within: []
    - message: Use UnliftIO.MVar.modifyMVarMasked_ instead for MonadUnliftIO support.
      name: Control.Concurrent.MVar.modifyMVarMasked_
      within: []
- functions:
    - message: Use UnliftIO.Timeout.timeout instead for MonadUnliftIO support.
      name: System.Timeout.timeout
      within: []
- functions:
    - message: Use UnliftIO.Temporary.withSystemTempFile instead for MonadUnliftIO support.
      name: System.IO.Temp.withSystemTempFile
      within: []
    - message: Use UnliftIO.Temporary.withSystemTempDirectory instead for MonadUnliftIO support.
      name: System.IO.Temp.withSystemTempDirectory
      within: []
    - message: Use UnliftIO.Temporary.withTempFile instead for MonadUnliftIO support.
      name: System.IO.Temp.withTempFile
      within: []
    - message: Use UnliftIO.Temporary.withTempDirectory instead for MonadUnliftIO support.
      name: System.IO.Temp.withTempDirectory
      within: []
- functions:
    - message: Use UnliftIO.STM.atomically instead for MonadIO support.
      name: Control.Concurrent.STM.atomically
      within: []
    - message: Use UnliftIO.STM.newTVarIO instead for MonadIO support.
      name: Control.Concurrent.STM.newTVarIO
      within: []
    - message: Use UnliftIO.STM.readTVarIO instead for MonadIO support.
      name: Control.Concurrent.STM.readTVarIO
      within: []
    - message: Use UnliftIO.STM.registerDelay instead for MonadIO support.
      name: Control.Concurrent.STM.registerDelay
      within: []
    - message: Use UnliftIO.STM.mkWeakTVar instead for MonadIO support.
      name: Control.Concurrent.STM.mkWeakTVar
      within: []
    - message: Use UnliftIO.STM.newTMVarIO instead for MonadIO support.
      name: Control.Concurrent.STM.newTMVarIO
      within: []
    - message: Use UnliftIO.STM.newEmptyTMVarIO instead for MonadIO support.
      name: Control.Concurrent.STM.newEmptyTMVarIO
      within: []
    - message: Use UnliftIO.STM.mkWeakTMVar instead for MonadIO support.
      name: Control.Concurrent.STM.mkWeakTMVar
      within: []
    - message: Use UnliftIO.STM.newTChanIO instead for MonadIO support.
      name: Control.Concurrent.STM.newTChanIO
      within: []
    - message: Use UnliftIO.STM.newBroadcastTChanIO instead for MonadIO support.
      name: Control.Concurrent.STM.newBroadcastTChanIO
      within: []
    - message: Use UnliftIO.STM.newTQueueIO instead for MonadIO support.
      name: Control.Concurrent.STM.newTQueueIO
      within: []
    - message: Use UnliftIO.STM.newTBQueueIO instead for MonadIO support.
      name: Control.Concurrent.STM.newTBQueueIO
      within: []
- functions:
    - message: Use UnliftIO.IO.withFile instead for MonadIO support.
      name: System.IO.withFile
      within: []
    - message: Use UnliftIO.IO.withBinaryFile instead for MonadIO support.
      name: System.IO.withBinaryFile
      within: []
    - message: Use UnliftIO.IO.openFile instead for MonadIO support.
      name: System.IO.openFile
      within: []
    - message: Use UnliftIO.IO.hClose instead for MonadIO support.
      name: System.IO.hClose
      within: []
    - message: Use UnliftIO.IO.hFlush instead for MonadIO support.
      name: System.IO.hFlush
      within: []
    - message: Use UnliftIO.IO.hFileSize instead for MonadIO support.
      name: System.IO.hFileSize
      within: []
    - message: Use UnliftIO.IO.hSetFileSize instead for MonadIO support.
      name: System.IO.hSetFileSize
      within: []
    - message: Use UnliftIO.IO.hIsEOF instead for MonadIO support.
      name: System.IO.hIsEOF
      within: []
    - message: Use UnliftIO.IO.hSetBuffering instead for MonadIO support.
      name: System.IO.hSetBuffering
      within: []
    - message: Use UnliftIO.IO.hGetBuffering instead for MonadIO support.
      name: System.IO.hGetBuffering
      within: []
    - message: Use UnliftIO.IO.hSeek instead for MonadIO support.
      name: System.IO.hSeek
      within: []
    - message: Use UnliftIO.IO.hTell instead for MonadIO support.
      name: System.IO.hTell
      within: []
    - message: Use UnliftIO.IO.hIsOpen instead for MonadIO support.
      name: System.IO.hIsOpen
      within: []
    - message: Use UnliftIO.IO.hIsClosed instead for MonadIO support.
      name: System.IO.hIsClosed
      within: []
    - message: Use UnliftIO.IO.hIsReadable instead for MonadIO support.
      name: System.IO.hIsReadable
      within: []
    - message: Use UnliftIO.IO.hIsWritable instead for MonadIO support.
      name: System.IO.hIsWritable
      within: []
    - message: Use UnliftIO.IO.hIsSeekable instead for MonadIO support.
      name: System.IO.hIsSeekable
      within: []
    - message: Use UnliftIO.IO.hIsTerminalDevice instead for MonadIO support.
      name: System.IO.hIsTerminalDevice
      within: []
    - message: Use UnliftIO.IO.hSetEcho instead for MonadIO support.
      name: System.IO.hSetEcho
      within: []
    - message: Use UnliftIO.IO.hGetEcho instead for MonadIO support.
      name: System.IO.hGetEcho
      within: []
    - message: Use UnliftIO.IO.hWaitForInput instead for MonadIO support.
      name: System.IO.hWaitForInput
      within: []
    - message: Use UnliftIO.IO.hReady instead for MonadIO support.
      name: System.IO.hReady
      within: []
- functions:
    - message: Use UnliftIO.IORef.newIORef instead for MonadIO support.
      name: Data.IORef.newIORef
      within: []
    - message: Use UnliftIO.IORef.readIORef instead for MonadIO support.
      name: Data.IORef.readIORef
      within: []
    - message: Use UnliftIO.IORef.writeIORef instead for MonadIO support.
      name: Data.IORef.writeIORef
      within: []
    - message: Use UnliftIO.IORef.modifyIORef instead for MonadIO support.
      name: Data.IORef.modifyIORef
      within: []
    - message: "Use UnliftIO.IORef.modifyIORef' instead for MonadIO support."
      name: "Data.IORef.modifyIORef'"
      within: []
    - message: Use UnliftIO.IORef.atomicModifyIORef instead for MonadIO support.
      name: Data.IORef.atomicModifyIORef
      within: []
    - message: "Use UnliftIO.IORef.atomicModifyIORef' instead for MonadIO support."
      name: "Data.IORef.atomicModifyIORef'"
      within: []
    - message: Use UnliftIO.IORef.mkWeakIORef instead for MonadIO support.
      name: Data.IORef.mkWeakIORef
      within: []
- functions:
    - message: Use UnliftIO.Chan.newChan instead for MonadIO support.
      name: Control.Concurrent.Chan.newChan
      within: []
    - message: Use UnliftIO.Chan.writeChan instead for MonadIO support.
      name: Control.Concurrent.Chan.writeChan
      within: []
    - message: Use UnliftIO.Chan.readChan instead for MonadIO support.
      name: Control.Concurrent.Chan.readChan
      within: []
    - message: Use UnliftIO.Chan.dupChan instead for MonadIO support.
      name: Control.Concurrent.Chan.dupChan
      within: []
    - message: Use UnliftIO.Chan.getChanContents instead for MonadIO support.
      name: Control.Concurrent.Chan.getChanContents
      within: []
    - message: Use UnliftIO.Chan.writeList2Chan instead for MonadIO support.
      name: Control.Concurrent.Chan.writeList2Chan
      within: []
- functions:
    - message: Use UnliftIO.QSem.newQSem instead for MonadIO support.
      name: Control.Concurrent.QSem.newQSem
      within: []
    - message: Use UnliftIO.QSem.waitQSem instead for MonadIO support.
      name: Control.Concurrent.QSem.waitQSem
      within: []
    - message: Use UnliftIO.QSem.signalQSem instead for MonadIO support.
      name: Control.Concurrent.QSem.signalQSem
      within: []
- functions:
    - message: Use UnliftIO.QSemN.newQSemN instead for MonadIO support.
      name: Control.Concurrent.QSemN.newQSemN
      within: []
    - message: Use UnliftIO.QSemN.waitQSemN instead for MonadIO support.
      name: Control.Concurrent.QSemN.waitQSemN
      within: []
    - message: Use UnliftIO.QSemN.signalQSemN instead for MonadIO support.
      name: Control.Concurrent.QSemN.signalQSemN
      within: []
- functions:
    - message: Use UnliftIO.Directory.createDirectory instead for MonadIO support.
      name: System.Directory.createDirectory
      within: []
    - message: Use UnliftIO.Directory.createDirectoryIfMissing instead for MonadIO support.
      name: System.Directory.createDirectoryIfMissing
      within: []
    - message: Use UnliftIO.Directory.createFileLink instead for MonadIO support.
      name: System.Directory.createFileLink
      within: []
    - message: Use UnliftIO.Directory.createDirectoryLink instead for MonadIO support.
      name: System.Directory.createDirectoryLink
      within: []
    - message: Use UnliftIO.Directory.removeDirectoryLink instead for MonadIO support.
      name: System.Directory.removeDirectoryLink
      within: []
    - message: Use UnliftIO.Directory.getSymbolicLinkTarget instead for MonadIO support.
      name: System.Directory.getSymbolicLinkTarget
      within: []
    - message: Use UnliftIO.Directory.removeDirectory instead for MonadIO support.
      name: System.Directory.removeDirectory
      within: []
    - message: Use UnliftIO.Directory.removeDirectoryRecursive instead for MonadIO support.
      name: System.Directory.removeDirectoryRecursive
      within: []
    - message: Use UnliftIO.Directory.removePathForcibly instead for MonadIO support.
      name: System.Directory.removePathForcibly
      within: []
    - message: Use UnliftIO.Directory.renameDirectory instead for MonadIO support.
      name: System.Directory.renameDirectory
      within: []
    - message: Use UnliftIO.Directory.listDirectory instead for MonadIO support.
      name: System.Directory.listDirectory
      within: []
    - message: Use UnliftIO.Directory.getDirectoryContents instead for MonadIO support.
      name: System.Directory.getDirectoryContents
      within: []
    - message: Use UnliftIO.Directory.getCurrentDirectory instead for MonadIO support.
      name: System.Directory.getCurrentDirectory
      within: []
    - message: Use UnliftIO.Directory.setCurrentDirectory instead for MonadIO support.
      name: System.Directory.setCurrentDirectory
      within: []
    - message: Use UnliftIO.Directory.withCurrentDirectory instead for MonadIO support.
      name: System.Directory.withCurrentDirectory
      within: []
    - message: Use UnliftIO.Directory.getHomeDirectory instead for MonadIO support.
      name: System.Directory.getHomeDirectory
      within: []
    - message: Use UnliftIO.Directory.getXdgDirectory instead for MonadIO support.
      name: System.Directory.getXdgDirectory
      within: []
    - message: Use UnliftIO.Directory.getXdgDirectoryList instead for MonadIO support.
      name: System.Directory.getXdgDirectoryList
      within: []
    - message: Use UnliftIO.Directory.getAppUserDataDirectory instead for MonadIO support.
      name: System.Directory.getAppUserDataDirectory
      within: []
    - message: Use UnliftIO.Directory.getUserDocumentsDirectory instead for MonadIO support.
      name: System.Directory.getUserDocumentsDirectory
      within: []
    - message: Use UnliftIO.Directory.getTemporaryDirectory instead for MonadIO support.
      name: System.Directory.getTemporaryDirectory
      within: []
    - message: Use UnliftIO.Directory.removeFile instead for MonadIO support.
      name: System.Directory.removeFile
      within: []
    - message: Use UnliftIO.Directory.renameFile instead for MonadIO support.
      name: System.Directory.renameFile
      within: []
    - message: Use UnliftIO.Directory.renamePath instead for MonadIO support.
      name: System.Directory.renamePath
      within: []
    - message: Use UnliftIO.Directory.copyFile instead for MonadIO support.
      name: System.Directory.copyFile
      within: []
    - message: Use UnliftIO.Directory.copyFileWithMetadata instead for MonadIO support.
      name: System.Directory.copyFileWithMetadata
      within: []
    - message: Use UnliftIO.Directory.canonicalizePath instead for MonadIO support.
      name: System.Directory.canonicalizePath
      within: []
    - message: Use UnliftIO.Directory.makeAbsolute instead for MonadIO support.
      name: System.Directory.makeAbsolute
      within: []
    - message: Use UnliftIO.Directory.makeRelativeToCurrentDirectory instead for MonadIO support.
      name: System.Directory.makeRelativeToCurrentDirectory
      within: []
    - message: Use UnliftIO.Directory.findExecutable instead for MonadIO support.
      name: System.Directory.findExecutable
      within: []
    - message: Use UnliftIO.Directory.findExecutables instead for MonadIO support.
      name: System.Directory.findExecutables
      within: []
    - message: Use UnliftIO.Directory.findExecutablesInDirectories instead for MonadIO support.
      name: System.Directory.findExecutablesInDirectories
      within: []
    - message: Use UnliftIO.Directory.findFile instead for MonadIO support.
      name: System.Directory.findFile
      within: []
    - message: Use UnliftIO.Directory.findFiles instead for MonadIO support.
      name: System.Directory.findFiles
      within: []
    - message: Use UnliftIO.Directory.findFileWith instead for MonadIO support.
      name: System.Directory.findFileWith
      within: []
    - message: Use UnliftIO.Directory.findFilesWith instead for MonadIO support.
      name: System.Directory.findFilesWith
      within: []
    - message: Use UnliftIO.Directory.getFileSize instead for MonadIO support.
      name: System.Directory.getFileSize
      within: []
    - message: Use UnliftIO.Directory.doesPathExist instead for MonadIO support.
      name: System.Directory.doesPathExist
      within: []
    - message: Use UnliftIO.Directory.doesFileExist instead for MonadIO support.
      name: System.Directory.doesFileExist
      within: []
    - message: Use UnliftIO.Directory.doesDirectoryExist instead for MonadIO support.
      name: System.Directory.doesDirectoryExist
      within: []
    - message: Use UnliftIO.Directory.pathIsSymbolicLink instead for MonadIO support.
      name: System.Directory.pathIsSymbolicLink
      within: []
    - message: Use UnliftIO.Directory.getPermissions instead for MonadIO support.
      name: System.Directory.getPermissions
      within: []
    - message: Use UnliftIO.Directory.setPermissions instead for MonadIO support.
      name: System.Directory.setPermissions
      within: []
    - message: Use UnliftIO.Directory.copyPermissions instead for MonadIO support.
      name: System.Directory.copyPermissions
      within: []
    - message: Use UnliftIO.Directory.getAccessTime instead for MonadIO support.
      name: System.Directory.getAccessTime
      within: []
    - message: Use UnliftIO.Directory.getModificationTime instead for MonadIO support.
      name: System.Directory.getModificationTime
      within: []
    - message: Use UnliftIO.Directory.setAccessTime instead for MonadIO support.
      name: System.Directory.setAccessTime
      within: []
    - message: Use UnliftIO.Directory.setModificationTime instead for MonadIO support.
      name: System.Directory.setModificationTime
      within: []
- functions:
    - message: Use UnliftIO.Foreign.peekCString instead for MonadIO support.
      name: Foreign.C.String.peekCString
      within: []
    - message: Use UnliftIO.Foreign.peekCStringLen instead for MonadIO support.
      name: Foreign.C.String.peekCStringLen
      within: []
    - message: Use UnliftIO.Foreign.newCString instead for MonadIO support.
      name: Foreign.C.String.newCString
      within: []
    - message: Use UnliftIO.Foreign.newCStringLen instead for MonadIO support.
      name: Foreign.C.String.newCStringLen
      within: []
    - message: Use UnliftIO.Foreign.withCString instead for MonadIO support.
      name: Foreign.C.String.withCString
      within: []
    - message: Use UnliftIO.Foreign.withCStringLen instead for MonadIO support.
      name: Foreign.C.String.withCStringLen
      within: []
    - message: Use UnliftIO.Foreign.peekCAString instead for MonadIO support.
      name: Foreign.C.String.peekCAString
      within: []
    - message: Use UnliftIO.Foreign.peekCAStringLen instead for MonadIO support.
      name: Foreign.C.String.peekCAStringLen
      within: []
    - message: Use UnliftIO.Foreign.newCAString instead for MonadIO support.
      name: Foreign.C.String.newCAString
      within: []
    - message: Use UnliftIO.Foreign.newCAStringLen instead for MonadIO support.
      name: Foreign.C.String.newCAStringLen
      within: []
    - message: Use UnliftIO.Foreign.withCAString instead for MonadIO support.
      name: Foreign.C.String.withCAString
      within: []
    - message: Use UnliftIO.Foreign.withCAStringLen instead for MonadIO support.
      name: Foreign.C.String.withCAStringLen
      within: []
- functions:
    - message: Use UnliftIO.Foreign.throwErrno instead for MonadIO support.
      name: Foreign.C.Error.throwErrno
      within: []
    - message: Use UnliftIO.Foreign.throwErrnoIf instead for MonadIO support.
      name: Foreign.C.Error.throwErrnoIf
      within: []
    - message: Use UnliftIO.Foreign.throwErrnoIf_ instead for MonadIO support.
      name: Foreign.C.Error.throwErrnoIf_
      within: []
    - message: Use UnliftIO.Foreign.throwErrnoIfRetry instead for MonadIO support.
      name: Foreign.C.Error.throwErrnoIfRetry
      within: []
    - message: Use UnliftIO.Foreign.throwErrnoIfRetry_ instead for MonadIO support.
      name: Foreign.C.Error.throwErrnoIfRetry_
      within: []
    - message: Use UnliftIO.Foreign.throwErrnoIfMinus1 instead for MonadIO support.
      name: Foreign.C.Error.throwErrnoIfMinus1
      within: []
    - message: Use UnliftIO.Foreign.throwErrnoIfMinus1_ instead for MonadIO support.
      name: Foreign.C.Error.throwErrnoIfMinus1_
      within: []
    - message: Use UnliftIO.Foreign.throwErrnoIfMinus1Retry instead for MonadIO support.
      name: Foreign.C.Error.throwErrnoIfMinus1Retry
      within: []
    - message: Use UnliftIO.Foreign.throwErrnoIfMinus1Retry_ instead for MonadIO support.
      name: Foreign.C.Error.throwErrnoIfMinus1Retry_
      within: []
    - message: Use UnliftIO.Foreign.throwErrnoIfNull instead for MonadIO support.
      name: Foreign.C.Error.throwErrnoIfNull
      within: []
    - message: Use UnliftIO.Foreign.throwErrnoIfNullRetry instead for MonadIO support.
      name: Foreign.C.Error.throwErrnoIfNullRetry
      within: []
    - message: Use UnliftIO.Foreign.throwErrnoIfRetryMayBlock instead for MonadIO support.
      name: Foreign.C.Error.throwErrnoIfRetryMayBlock
      within: []
    - message: Use UnliftIO.Foreign.throwErrnoIfRetryMayBlock_ instead for MonadIO support.
      name: Foreign.C.Error.throwErrnoIfRetryMayBlock_
      within: []
    - message: Use UnliftIO.Foreign.throwErrnoIfMinus1RetryMayBlock instead for MonadIO support.
      name: Foreign.C.Error.throwErrnoIfMinus1RetryMayBlock
      within: []
    - message: Use UnliftIO.Foreign.throwErrnoIfMinus1RetryMayBlock_ instead for MonadIO support.
      name: Foreign.C.Error.throwErrnoIfMinus1RetryMayBlock_
      within: []
    - message: Use UnliftIO.Foreign.throwErrnoIfNullRetryMayBlock instead for MonadIO support.
      name: Foreign.C.Error.throwErrnoIfNullRetryMayBlock
      within: []
    - message: Use UnliftIO.Foreign.throwErrnoPath instead for MonadIO support.
      name: Foreign.C.Error.throwErrnoPath
      within: []
    - message: Use UnliftIO.Foreign.throwErrnoPathIf instead for MonadIO support.
      name: Foreign.C.Error.throwErrnoPathIf
      within: []
    - message: Use UnliftIO.Foreign.throwErrnoPathIf_ instead for MonadIO support.
      name: Foreign.C.Error.throwErrnoPathIf_
      within: []
    - message: Use UnliftIO.Foreign.throwErrnoPathIfNull instead for MonadIO support.
      name: Foreign.C.Error.throwErrnoPathIfNull
      within: []
    - message: Use UnliftIO.Foreign.throwErrnoPathIfMinus1 instead for MonadIO support.
      name: Foreign.C.Error.throwErrnoPathIfMinus1
      within: []
    - message: Use UnliftIO.Foreign.throwErrnoPathIfMinus1_ instead for MonadIO support.
      name: Foreign.C.Error.throwErrnoPathIfMinus1_
      within: []
- functions:
    - message: Use UnliftIO.Foreign.peek instead for MonadIO support.
      name: Foreign.Storable.peek
      within: []
    - message: Use UnliftIO.Foreign.poke instead for MonadIO support.
      name: Foreign.Storable.poke
      within: []
    - message: Use UnliftIO.Foreign.peekByteOff instead for MonadIO support.
      name: Foreign.Storable.peekByteOff
      within: []
    - message: Use UnliftIO.Foreign.pokeByteOff instead for MonadIO support.
      name: Foreign.Storable.pokeByteOff
      within: []
    - message: Use UnliftIO.Foreign.peekElemOff instead for MonadIO support.
      name: Foreign.Storable.peekElemOff
      within: []
    - message: Use UnliftIO.Foreign.pokeElemOff instead for MonadIO support.
      name: Foreign.Storable.pokeElemOff
      within: []
- functions:
    - message: Use UnliftIO.Foreign.alloca instead for MonadIO support.
      name: Foreign.Marshal.Alloc.alloca
      within: []
    - message: Use UnliftIO.Foreign.allocaBytes instead for MonadIO support.
      name: Foreign.Marshal.Alloc.allocaBytes
      within: []
    - message: Use UnliftIO.Foreign.allocaBytesAligned instead for MonadIO support.
      name: Foreign.Marshal.Alloc.allocaBytesAligned
      within: []
    - message: Use UnliftIO.Foreign.malloc instead for MonadIO support.
      name: Foreign.Marshal.Alloc.malloc
      within: []
    - message: Use UnliftIO.Foreign.mallocBytes instead for MonadIO support.
      name: Foreign.Marshal.Alloc.mallocBytes
      within: []
    - message: Use UnliftIO.Foreign.calloc instead for MonadIO support.
      name: Foreign.Marshal.Alloc.calloc
      within: []
    - message: Use UnliftIO.Foreign.callocBytes instead for MonadIO support.
      name: Foreign.Marshal.Alloc.callocBytes
      within: []
    - message: Use UnliftIO.Foreign.realloc instead for MonadIO support.
      name: Foreign.Marshal.Alloc.realloc
      within: []
    - message: Use UnliftIO.Foreign.reallocBytes instead for MonadIO support.
      name: Foreign.Marshal.Alloc.reallocBytes
      within: []
    - message: Use UnliftIO.Foreign.free instead for MonadIO support.
      name: Foreign.Marshal.Alloc.free
      within: []
    - message: Use UnliftIO.Foreign.finalizerFree instead for MonadIO support.
      name: Foreign.Marshal.Alloc.finalizerFree
      within: []
- functions:
    - message: Use UnliftIO.Foreign.peekArray instead for MonadIO support.
      name: Foreign.Marshal.Array.peekArray
      within: []
    - message: Use UnliftIO.Foreign.peekArray0 instead for MonadIO support.
      name: Foreign.Marshal.Array.peekArray0
      within: []
    - message: Use UnliftIO.Foreign.pokeArray instead for MonadIO support.
      name: Foreign.Marshal.Array.pokeArray
      within: []
    - message: Use UnliftIO.Foreign.pokeArray0 instead for MonadIO support.
      name: Foreign.Marshal.Array.pokeArray0
      within: []
    - message: Use UnliftIO.Foreign.newArray instead for MonadIO support.
      name: Foreign.Marshal.Array.newArray
      within: []
    - message: Use UnliftIO.Foreign.newArray0 instead for MonadIO support.
      name: Foreign.Marshal.Array.newArray0
      within: []
    - message: Use UnliftIO.Foreign.withArray instead for MonadIO support.
      name: Foreign.Marshal.Array.withArray
      within: []
    - message: Use UnliftIO.Foreign.withArray0 instead for MonadIO support.
      name: Foreign.Marshal.Array.withArray0
      within: []
    - message: Use UnliftIO.Foreign.withArrayLen instead for MonadIO support.
      name: Foreign.Marshal.Array.withArrayLen
      within: []
    - message: Use UnliftIO.Foreign.withArrayLen0 instead for MonadIO support.
      name: Foreign.Marshal.Array.withArrayLen0
      within: []
    - message: Use UnliftIO.Foreign.copyArray instead for MonadIO support.
      name: Foreign.Marshal.Array.copyArray
      within: []
    - message: Use UnliftIO.Foreign.moveArray instead for MonadIO support.
      name: Foreign.Marshal.Array.moveArray
      within: []
    - message: Use UnliftIO.Foreign.lengthArray0 instead for MonadIO support.
      name: Foreign.Marshal.Array.lengthArray0
      within: []
    - message: Use UnliftIO.Foreign.allocaArray instead for MonadIO support.
      name: Foreign.Marshal.Array.allocaArray
      within: []
    - message: Use UnliftIO.Foreign.allocaArray0 instead for MonadIO support.
      name: Foreign.Marshal.Array.allocaArray0
      within: []
    - message: Use UnliftIO.Foreign.mallocArray instead for MonadIO support.
      name: Foreign.Marshal.Array.mallocArray
      within: []
    - message: Use UnliftIO.Foreign.mallocArray0 instead for MonadIO support.
      name: Foreign.Marshal.Array.mallocArray0
      within: []
    - message: Use UnliftIO.Foreign.callocArray instead for MonadIO support.
      name: Foreign.Marshal.Array.callocArray
      within: []
    - message: Use UnliftIO.Foreign.callocArray0 instead for MonadIO support.
      name: Foreign.Marshal.Array.callocArray0
      within: []
    - message: Use UnliftIO.Foreign.reallocArray instead for MonadIO support.
      name: Foreign.Marshal.Array.reallocArray
      within: []
    - message: Use UnliftIO.Foreign.reallocArray0 instead for MonadIO support.
      name: Foreign.Marshal.Array.reallocArray0
      within: []
- functions:
    - message: Use UnliftIO.Foreign.with instead for MonadIO support.
      name: Foreign.Marshal.Utils.with
      within: []
    - message: Use UnliftIO.Foreign.new instead for MonadIO support.
      name: Foreign.Marshal.Utils.new
      within: []
    - message: Use UnliftIO.Foreign.fromBool instead for MonadIO support.
      name: Foreign.Marshal.Utils.fromBool
      within: []
    - message: Use UnliftIO.Foreign.toBool instead for MonadIO support.
      name: Foreign.Marshal.Utils.toBool
      within: []
    - message: Use UnliftIO.Foreign.maybeNew instead for MonadIO support.
      name: Foreign.Marshal.Utils.maybeNew
      within: []
    - message: Use UnliftIO.Foreign.maybeWith instead for MonadIO support.
      name: Foreign.Marshal.Utils.maybeWith
      within: []
    - message: Use UnliftIO.Foreign.maybePeek instead for MonadIO support.
      name: Foreign.Marshal.Utils.maybePeek
      within: []
    - message: Use UnliftIO.Foreign.withMany instead for MonadIO support.
      name: Foreign.Marshal.Utils.withMany
      within: []
    - message: Use UnliftIO.Foreign.copyBytes instead for MonadIO support.
      name: Foreign.Marshal.Utils.copyBytes
      within: []
    - message: Use UnliftIO.Foreign.moveBytes instead for MonadIO support.
      name: Foreign.Marshal.Utils.moveBytes
      within: []
    - message: Use UnliftIO.Foreign.fillBytes instead for MonadIO support.
      name: Foreign.Marshal.Utils.fillBytes
      within: []
- functions:
    - message: Use UnliftIO.Foreign.withPool instead for MonadIO support.
      name: Foreign.Marshal.Pool.withPool
      within: []
    - message: Use UnliftIO.Foreign.pooledMalloc instead for MonadIO support.
      name: Foreign.Marshal.Pool.pooledMalloc
      within: []
    - message: Use UnliftIO.Foreign.pooledMallocBytes instead for MonadIO support.
      name: Foreign.Marshal.Pool.pooledMallocBytes
      within: []
    - message: Use UnliftIO.Foreign.pooledRealloc instead for MonadIO support.
      name: Foreign.Marshal.Pool.pooledRealloc
      within: []
    - message: Use UnliftIO.Foreign.pooledReallocBytes instead for MonadIO support.
      name: Foreign.Marshal.Pool.pooledReallocBytes
      within: []
    - message: Use UnliftIO.Foreign.pooledMallocArray instead for MonadIO support.
      name: Foreign.Marshal.Pool.pooledMallocArray
      within: []
    - message: Use UnliftIO.Foreign.pooledMallocArray0 instead for MonadIO support.
      name: Foreign.Marshal.Pool.pooledMallocArray0
      within: []
    - message: Use UnliftIO.Foreign.pooledReallocArray instead for MonadIO support.
      name: Foreign.Marshal.Pool.pooledReallocArray
      within: []
    - message: Use UnliftIO.Foreign.pooledReallocArray0 instead for MonadIO support.
      name: Foreign.Marshal.Pool.pooledReallocArray0
      within: []
    - message: Use UnliftIO.Foreign.pooledNew instead for MonadIO support.
      name: Foreign.Marshal.Pool.pooledNew
      within: []
    - message: Use UnliftIO.Foreign.pooledNewArray instead for MonadIO support.
      name: Foreign.Marshal.Pool.pooledNewArray
      within: []
    - message: Use UnliftIO.Foreign.pooledNewArray0 instead for MonadIO support.
      name: Foreign.Marshal.Pool.pooledNewArray0
      within: []
- functions:
    - message: Use UnliftIO.Foreign.newForeignPtr instead for MonadIO support.
      name: Foreign.ForeignPtr.newForeignPtr
      within: []
    - message: Use UnliftIO.Foreign.newForeignPtr_ instead for MonadIO support.
      name: Foreign.ForeignPtr.newForeignPtr_
      within: []
    - message: Use UnliftIO.Foreign.addForeignPtrFinalizer instead for MonadIO support.
      name: Foreign.ForeignPtr.addForeignPtrFinalizer
      within: []
    - message: Use UnliftIO.Foreign.withForeignPtr instead for MonadIO support.
      name: Foreign.ForeignPtr.withForeignPtr
      within: []
    - message: Use UnliftIO.Foreign.finalizeForeignPtr instead for MonadIO support.
      name: Foreign.ForeignPtr.finalizeForeignPtr
      within: []
    - message: Use UnliftIO.Foreign.touchForeignPtr instead for MonadIO support.
      name: Foreign.ForeignPtr.touchForeignPtr
      within: []
    - message: Use UnliftIO.Foreign.mallocForeignPtr instead for MonadIO support.
      name: Foreign.ForeignPtr.mallocForeignPtr
      within: []
    - message: Use UnliftIO.Foreign.mallocForeignPtrBytes instead for MonadIO support.
      name: Foreign.ForeignPtr.mallocForeignPtrBytes
      within: []
    - message: Use UnliftIO.Foreign.mallocForeignPtrArray instead for MonadIO support.
      name: Foreign.ForeignPtr.mallocForeignPtrArray
      within: []
    - message: Use UnliftIO.Foreign.mallocForeignPtrArray0 instead for MonadIO support.
      name: Foreign.ForeignPtr.mallocForeignPtrArray0
      within: []
    - message: Use UnliftIO.Foreign.newGHCForeignPtr instead for MonadIO support.
      name: Foreign.ForeignPtr.newGHCForeignPtr
      within: []
    - message: Use UnliftIO.Foreign.addGHCForeignPtrFinalizer instead for MonadIO support.
      name: Foreign.ForeignPtr.addGHCForeignPtrFinalizer
      within: []
- functions:
    - message: Use UnliftIO.Foreign.newStablePtr instead for MonadIO support.
      name: Foreign.StablePtr.newStablePtr
      within: []
    - message: Use UnliftIO.Foreign.deRefStablePtr instead for MonadIO support.
      name: Foreign.StablePtr.deRefStablePtr
      within: []
    - message: Use UnliftIO.Foreign.freeStablePtr instead for MonadIO support.
      name: Foreign.StablePtr.freeStablePtr
      within: []
- functions:
    - message: Use UnliftIO.Concurrent.myThreadId instead for MonadIO support.
      name: Control.Concurrent.myThreadId
      within: []
    - message: Use UnliftIO.Concurrent.getNumCapabilities instead for MonadIO support.
      name: Control.Concurrent.getNumCapabilities
      within: []
    - message: Use UnliftIO.Concurrent.setNumCapabilities instead for MonadIO support.
      name: Control.Concurrent.setNumCapabilities
      within: []
    - message: Use UnliftIO.Concurrent.threadCapability instead for MonadIO support.
      name: Control.Concurrent.threadCapability
      within: []
    - message: Use UnliftIO.Concurrent.yield instead for MonadIO support.
      name: Control.Concurrent.yield
      within: []
    - message: Use UnliftIO.Concurrent.threadDelay instead for MonadIO support.
      name: Control.Concurrent.threadDelay
      within: []
    - message: Use UnliftIO.Concurrent.threadWaitRead instead for MonadIO support.
      name: Control.Concurrent.threadWaitRead
      within: []
    - message: Use UnliftIO.Concurrent.threadWaitWrite instead for MonadIO support.
      name: Control.Concurrent.threadWaitWrite
      within: []
    - message: Use UnliftIO.Concurrent.isCurrentThreadBound instead for MonadIO support.
      name: Control.Concurrent.isCurrentThreadBound
      within: []
    - message: Use UnliftIO.Concurrent.runInBoundThread instead for MonadIO support.
      name: Control.Concurrent.runInBoundThread
      within: []
    - message: Use UnliftIO.Concurrent.runInUnboundThread instead for MonadIO support.
      name: Control.Concurrent.runInUnboundThread
      within: []
    - message: Use UnliftIO.Concurrent.mkWeakThreadId instead for MonadIO support.
      name: Control.Concurrent.mkWeakThreadId
      within: []
- functions:
    - message: Use UnliftIO.Environment.getArgs instead for MonadIO support.
      name: System.Environment.getArgs
      within: []
    - message: Use UnliftIO.Environment.getProgName instead for MonadIO support.
      name: System.Environment.getProgName
      within: []
    - message: Use UnliftIO.Environment.getExecutablePath instead for MonadIO support.
      name: System.Environment.getExecutablePath
      within: []
    - message: Use UnliftIO.Environment.getEnv instead for MonadIO support.
      name: System.Environment.getEnv
      within: []
    - message: Use UnliftIO.Environment.lookupEnv instead for MonadIO support.
      name: System.Environment.lookupEnv
      within: []
    - message: Use UnliftIO.Environment.setEnv instead for MonadIO support.
      name: System.Environment.setEnv
      within: []
    - message: Use UnliftIO.Environment.unsetEnv instead for MonadIO support.
      name: System.Environment.unsetEnv
      within: []
    - message: Use UnliftIO.Environment.withArgs instead for MonadIO support.
      name: System.Environment.withArgs
      within: []
    - message: Use UnliftIO.Environment.withProgName instead for MonadIO support.
      name: System.Environment.withProgName
      within: []
    - message: Use UnliftIO.Environment.getEnvironment instead for MonadIO support.
      name: System.Environment.getEnvironment
      within: []
- functions:
    - message: Use UnliftIO.Exception.Lens.catching instead for MonadUnliftIO support.
      name: Control.Exception.Lens.catching
      within: []
    - message: Use UnliftIO.Exception.Lens.catching_ instead for MonadUnliftIO support.
      name: Control.Exception.Lens.catching_
      within: []
    - message: Use UnliftIO.Exception.Lens.handling instead for MonadUnliftIO support.
      name: Control.Exception.Lens.handling
      within: []
    - message: Use UnliftIO.Exception.Lens.handling_ instead for MonadUnliftIO support.
      name: Control.Exception.Lens.handling_
      within: []
    - message: Use UnliftIO.Exception.Lens.trying instead for MonadUnliftIO support.
      name: Control.Exception.Lens.trying
      within: []
    - message: Use UnliftIO.Exception.Lens.trying_ instead for MonadUnliftIO support.
      name: Control.Exception.Lens.trying_
      within: []
- functions:
    - message: "Partial: throws on missing key. Use Data.HashMap.Strict.lookup or Data.HashMap.Strict.!? instead"
      name: "Data.HashMap.Strict.!"
      within: []
- functions:
    - message: "Partial: throws on missing key. Use Data.HashMap.Lazy.lookup or Data.HashMap.Lazy.!? instead"
      name: "Data.HashMap.Lazy.!"
      within: []
- functions:
    - message: Breaks type safety. Only for very specific use cases.
      name: unsafePerformIO
      within: []
    - message: Even more dangerous than unsafePerformIO.
      name: unsafeDupablePerformIO
      within: []
    - message: Creates lazy IO. Avoid.
      name: unsafeInterleaveIO
      within: []
    - message: Can cause segfaults. Avoid.
      name: unsafeCoerce
      within: []
    - message: Unsafe version of fixIO. Avoid.
      name: unsafeFixIO
      within: []
- functions:
    - message: "Partial: throws on out-of-bounds. Use (!?) for safe indexing."
      name: "Data.Vector.!"
      within: []
    - message: "Partial: throws on empty vector. Use uncons or (!?) 0 instead."
      name: Data.Vector.head
      within: []
    - message: "Partial: throws on empty vector. Use unsnoc or check null first."
      name: Data.Vector.last
      within: []
    - message: "Partial: throws on out-of-bounds regardless of Monad (M is for evaluation control, not error handling). Use (!?) for safe indexing."
      name: Data.Vector.indexM
      within: []
    - message: "Partial: throws on empty vector regardless of Monad (M is for evaluation control, not error handling). Use uncons or check null first."
      name: Data.Vector.headM
      within: []
    - message: "Partial: throws on empty vector regardless of Monad (M is for evaluation control, not error handling). Use unsnoc or check null first."
      name: Data.Vector.lastM
      within: []
    - message: "Partial: throws on empty vector. Use unsnoc for safe init."
      name: Data.Vector.init
      within: []
    - message: "Partial: throws on empty vector. Use uncons for safe tail."
      name: Data.Vector.tail
      within: []
    - message: "Partial: throws on out-of-bounds indices. Validate indices against length or use modify."
      name: Data.Vector.//
      within: []
    - message: "Partial: throws on out-of-bounds indices. Validate indices against length or use modify."
      name: Data.Vector.update
      within: []
    - message: "Partial: throws on out-of-bounds indices. Validate indices against length or use modify."
      name: Data.Vector.update_
      within: []
    - message: "Partial: throws on out-of-bounds indices. Validate indices against length or use modify."
      name: Data.Vector.accum
      within: []
    - message: "Partial: throws on out-of-bounds indices. Validate indices against length or use modify."
      name: Data.Vector.accumulate
      within: []
    - message: "Partial: throws on out-of-bounds indices. Validate indices against length or use modify."
      name: Data.Vector.accumulate_
      within: []
    - message: "Partial: throws on out-of-bounds indices. Validate indices against length or use modify."
      name: Data.Vector.backpermute
      within: []
    - message: "Partial: throws on empty vector. Use foldl with explicit initial value."
      name: Data.Vector.foldl1
      within: []
    - message: "Partial: throws on empty vector. Use foldl' with explicit initial value."
      name: "Data.Vector.foldl1'"
      within: []
    - message: "Partial: throws on empty vector. Use foldr with explicit initial value."
      name: Data.Vector.foldr1
      within: []
    - message: "Partial: throws on empty vector. Use foldr' with explicit initial value."
      name: "Data.Vector.foldr1'"
      within: []
    - message: "Partial: throws on empty vector. Use fold with explicit initial value."
      name: Data.Vector.maximum
      within: []
    - message: "Partial: throws on empty vector. Use fold with explicit initial value."
      name: Data.Vector.maximumBy
      within: []
    - message: "Partial: throws on empty vector. Use fold with explicit initial value."
      name: Data.Vector.minimum
      within: []
    - message: "Partial: throws on empty vector. Use fold with explicit initial value."
      name: Data.Vector.minimumBy
      within: []
    - message: "Partial: throws on empty vector. Use indexed fold with Maybe result."
      name: Data.Vector.minIndex
      within: []
    - message: "Partial: throws on empty vector. Use indexed fold with Maybe result."
      name: Data.Vector.minIndexBy
      within: []
    - message: "Partial: throws on empty vector. Use indexed fold with Maybe result."
      name: Data.Vector.maxIndex
      within: []
    - message: "Partial: throws on empty vector. Use indexed fold with Maybe result."
      name: Data.Vector.maxIndexBy
      within: []
    - message: "Partial: throws on empty vector. Use foldM with explicit initial value."
      name: Data.Vector.fold1M
      within: []
    - message: "Partial: throws on empty vector. Use foldM' with explicit initial value."
      name: "Data.Vector.fold1M'"
      within: []
    - message: "Partial: throws on empty vector. Use foldM_ with explicit initial value."
      name: Data.Vector.fold1M_
      within: []
    - message: "Partial: throws on empty vector. Use foldM'_ with explicit initial value."
      name: "Data.Vector.fold1M'_"
      within: []
    - message: "Partial: throws on empty vector. Use scanl with explicit initial value."
      name: Data.Vector.scanl1
      within: []
    - message: "Partial: throws on empty vector. Use scanl' with explicit initial value."
      name: "Data.Vector.scanl1'"
      within: []
    - message: "Partial: throws on empty vector. Use scanr with explicit initial value."
      name: Data.Vector.scanr1
      within: []
    - message: "Partial: throws on empty vector. Use scanr' with explicit initial value."
      name: "Data.Vector.scanr1'"
      within: []
    - message: "Partial: throws on out-of-bounds. Use (!?) for safe indexing."
      name: "Data.Vector.Generic.!"
      within: []
    - message: "Partial: throws on empty vector. Use uncons or (!?) 0 instead."
      name: Data.Vector.Generic.head
      within: []
    - message: "Partial: throws on empty vector. Use unsnoc or check null first."
      name: Data.Vector.Generic.last
      within: []
    - message: "Partial: throws on out-of-bounds regardless of Monad (M is for evaluation control, not error handling). Use (!?) for safe indexing."
      name: Data.Vector.Generic.indexM
      within: []
    - message: "Partial: throws on empty vector regardless of Monad (M is for evaluation control, not error handling). Use uncons or check null first."
      name: Data.Vector.Generic.headM
      within: []
    - message: "Partial: throws on empty vector regardless of Monad (M is for evaluation control, not error handling). Use unsnoc or check null first."
      name: Data.Vector.Generic.lastM
      within: []
    - message: "Partial: throws on empty vector. Use unsnoc for safe init."
      name: Data.Vector.Generic.init
      within: []
    - message: "Partial: throws on empty vector. Use uncons for safe tail."
      name: Data.Vector.Generic.tail
      within: []
    - message: "Partial: throws on out-of-bounds indices. Validate indices against length or use modify."
      name: Data.Vector.Generic.//
      within: []
    - message: "Partial: throws on out-of-bounds indices. Validate indices against length or use modify."
      name: Data.Vector.Generic.update
      within: []
    - message: "Partial: throws on out-of-bounds indices. Validate indices against length or use modify."
      name: Data.Vector.Generic.update_
      within: []
    - message: "Partial: throws on out-of-bounds indices. Validate indices against length or use modify."
      name: Data.Vector.Generic.accum
      within: []
    - message: "Partial: throws on out-of-bounds indices. Validate indices against length or use modify."
      name: Data.Vector.Generic.accumulate
      within: []
    - message: "Partial: throws on out-of-bounds indices. Validate indices against length or use modify."
      name: Data.Vector.Generic.accumulate_
      within: []
    - message: "Partial: throws on out-of-bounds indices. Validate indices against length or use modify."
      name: Data.Vector.Generic.backpermute
      within: []
    - message: "Partial: throws on empty vector. Use foldl with explicit initial value."
      name: Data.Vector.Generic.foldl1
      within: []
    - message: "Partial: throws on empty vector. Use foldl' with explicit initial value."
      name: "Data.Vector.Generic.foldl1'"
      within: []
    - message: "Partial: throws on empty vector. Use foldr with explicit initial value."
      name: Data.Vector.Generic.foldr1
      within: []
    - message: "Partial: throws on empty vector. Use foldr' with explicit initial value."
      name: "Data.Vector.Generic.foldr1'"
      within: []
    - message: "Partial: throws on empty vector. Use fold with explicit initial value."
      name: Data.Vector.Generic.maximum
      within: []
    - message: "Partial: throws on empty vector. Use fold with explicit initial value."
      name: Data.Vector.Generic.maximumBy
      within: []
    - message: "Partial: throws on empty vector. Use fold with explicit initial value."
      name: Data.Vector.Generic.minimum
      within: []
    - message: "Partial: throws on empty vector. Use fold with explicit initial value."
      name: Data.Vector.Generic.minimumBy
      within: []
    - message: "Partial: throws on empty vector. Use indexed fold with Maybe result."
      name: Data.Vector.Generic.minIndex
      within: []
    - message: "Partial: throws on empty vector. Use indexed fold with Maybe result."
      name: Data.Vector.Generic.minIndexBy
      within: []
    - message: "Partial: throws on empty vector. Use indexed fold with Maybe result."
      name: Data.Vector.Generic.maxIndex
      within: []
    - message: "Partial: throws on empty vector. Use indexed fold with Maybe result."
      name: Data.Vector.Generic.maxIndexBy
      within: []
    - message: "Partial: throws on empty vector. Use foldM with explicit initial value."
      name: Data.Vector.Generic.fold1M
      within: []
    - message: "Partial: throws on empty vector. Use foldM' with explicit initial value."
      name: "Data.Vector.Generic.fold1M'"
      within: []
    - message: "Partial: throws on empty vector. Use foldM_ with explicit initial value."
      name: Data.Vector.Generic.fold1M_
      within: []
    - message: "Partial: throws on empty vector. Use foldM'_ with explicit initial value."
      name: "Data.Vector.Generic.fold1M'_"
      within: []
    - message: "Partial: throws on empty vector. Use scanl with explicit initial value."
      name: Data.Vector.Generic.scanl1
      within: []
    - message: "Partial: throws on empty vector. Use scanl' with explicit initial value."
      name: "Data.Vector.Generic.scanl1'"
      within: []
    - message: "Partial: throws on empty vector. Use scanr with explicit initial value."
      name: Data.Vector.Generic.scanr1
      within: []
    - message: "Partial: throws on empty vector. Use scanr' with explicit initial value."
      name: "Data.Vector.Generic.scanr1'"
      within: []
    - message: "Partial: throws on out-of-bounds. Use (!?) for safe indexing."
      name: "Data.Vector.Primitive.!"
      within: []
    - message: "Partial: throws on empty vector. Use uncons or (!?) 0 instead."
      name: Data.Vector.Primitive.head
      within: []
    - message: "Partial: throws on empty vector. Use unsnoc or check null first."
      name: Data.Vector.Primitive.last
      within: []
    - message: "Partial: throws on out-of-bounds regardless of Monad (M is for evaluation control, not error handling). Use (!?) for safe indexing."
      name: Data.Vector.Primitive.indexM
      within: []
    - message: "Partial: throws on empty vector regardless of Monad (M is for evaluation control, not error handling). Use uncons or check null first."
      name: Data.Vector.Primitive.headM
      within: []
    - message: "Partial: throws on empty vector regardless of Monad (M is for evaluation control, not error handling). Use unsnoc or check null first."
      name: Data.Vector.Primitive.lastM
      within: []
    - message: "Partial: throws on empty vector. Use unsnoc for safe init."
      name: Data.Vector.Primitive.init
      within: []
    - message: "Partial: throws on empty vector. Use uncons for safe tail."
      name: Data.Vector.Primitive.tail
      within: []
    - message: "Partial: throws on out-of-bounds indices. Validate indices against length or use modify."
      name: Data.Vector.Primitive.//
      within: []
    - message: "Partial: throws on out-of-bounds indices. Validate indices against length or use modify."
      name: Data.Vector.Primitive.update
      within: []
    - message: "Partial: throws on out-of-bounds indices. Validate indices against length or use modify."
      name: Data.Vector.Primitive.update_
      within: []
    - message: "Partial: throws on out-of-bounds indices. Validate indices against length or use modify."
      name: Data.Vector.Primitive.accum
      within: []
    - message: "Partial: throws on out-of-bounds indices. Validate indices against length or use modify."
      name: Data.Vector.Primitive.accumulate
      within: []
    - message: "Partial: throws on out-of-bounds indices. Validate indices against length or use modify."
      name: Data.Vector.Primitive.accumulate_
      within: []
    - message: "Partial: throws on out-of-bounds indices. Validate indices against length or use modify."
      name: Data.Vector.Primitive.backpermute
      within: []
    - message: "Partial: throws on empty vector. Use foldl with explicit initial value."
      name: Data.Vector.Primitive.foldl1
      within: []
    - message: "Partial: throws on empty vector. Use foldl' with explicit initial value."
      name: "Data.Vector.Primitive.foldl1'"
      within: []
    - message: "Partial: throws on empty vector. Use foldr with explicit initial value."
      name: Data.Vector.Primitive.foldr1
      within: []
    - message: "Partial: throws on empty vector. Use foldr' with explicit initial value."
      name: "Data.Vector.Primitive.foldr1'"
      within: []
    - message: "Partial: throws on empty vector. Use fold with explicit initial value."
      name: Data.Vector.Primitive.maximum
      within: []
    - message: "Partial: throws on empty vector. Use fold with explicit initial value."
      name: Data.Vector.Primitive.maximumBy
      within: []
    - message: "Partial: throws on empty vector. Use fold with explicit initial value."
      name: Data.Vector.Primitive.minimum
      within: []
    - message: "Partial: throws on empty vector. Use fold with explicit initial value."
      name: Data.Vector.Primitive.minimumBy
      within: []
    - message: "Partial: throws on empty vector. Use indexed fold with Maybe result."
      name: Data.Vector.Primitive.minIndex
      within: []
    - message: "Partial: throws on empty vector. Use indexed fold with Maybe result."
      name: Data.Vector.Primitive.minIndexBy
      within: []
    - message: "Partial: throws on empty vector. Use indexed fold with Maybe result."
      name: Data.Vector.Primitive.maxIndex
      within: []
    - message: "Partial: throws on empty vector. Use indexed fold with Maybe result."
      name: Data.Vector.Primitive.maxIndexBy
      within: []
    - message: "Partial: throws on empty vector. Use foldM with explicit initial value."
      name: Data.Vector.Primitive.fold1M
      within: []
    - message: "Partial: throws on empty vector. Use foldM' with explicit initial value."
      name: "Data.Vector.Primitive.fold1M'"
      within: []
    - message: "Partial: throws on empty vector. Use foldM_ with explicit initial value."
      name: Data.Vector.Primitive.fold1M_
      within: []
    - message: "Partial: throws on empty vector. Use foldM'_ with explicit initial value."
      name: "Data.Vector.Primitive.fold1M'_"
      within: []
    - message: "Partial: throws on empty vector. Use scanl with explicit initial value."
      name: Data.Vector.Primitive.scanl1
      within: []
    - message: "Partial: throws on empty vector. Use scanl' with explicit initial value."
      name: "Data.Vector.Primitive.scanl1'"
      within: []
    - message: "Partial: throws on empty vector. Use scanr with explicit initial value."
      name: Data.Vector.Primitive.scanr1
      within: []
    - message: "Partial: throws on empty vector. Use scanr' with explicit initial value."
      name: "Data.Vector.Primitive.scanr1'"
      within: []
    - message: "Partial: throws on out-of-bounds. Use (!?) for safe indexing."
      name: "Data.Vector.Storable.!"
      within: []
    - message: "Partial: throws on empty vector. Use uncons or (!?) 0 instead."
      name: Data.Vector.Storable.head
      within: []
    - message: "Partial: throws on empty vector. Use unsnoc or check null first."
      name: Data.Vector.Storable.last
      within: []
    - message: "Partial: throws on out-of-bounds regardless of Monad (M is for evaluation control, not error handling). Use (!?) for safe indexing."
      name: Data.Vector.Storable.indexM
      within: []
    - message: "Partial: throws on empty vector regardless of Monad (M is for evaluation control, not error handling). Use uncons or check null first."
      name: Data.Vector.Storable.headM
      within: []
    - message: "Partial: throws on empty vector regardless of Monad (M is for evaluation control, not error handling). Use unsnoc or check null first."
      name: Data.Vector.Storable.lastM
      within: []
    - message: "Partial: throws on empty vector. Use unsnoc for safe init."
      name: Data.Vector.Storable.init
      within: []
    - message: "Partial: throws on empty vector. Use uncons for safe tail."
      name: Data.Vector.Storable.tail
      within: []
    - message: "Partial: throws on out-of-bounds indices. Validate indices against length or use modify."
      name: Data.Vector.Storable.//
      within: []
    - message: "Partial: throws on out-of-bounds indices. Validate indices against length or use modify."
      name: Data.Vector.Storable.update
      within: []
    - message: "Partial: throws on out-of-bounds indices. Validate indices against length or use modify."
      name: Data.Vector.Storable.update_
      within: []
    - message: "Partial: throws on out-of-bounds indices. Validate indices against length or use modify."
      name: Data.Vector.Storable.accum
      within: []
    - message: "Partial: throws on out-of-bounds indices. Validate indices against length or use modify."
      name: Data.Vector.Storable.accumulate
      within: []
    - message: "Partial: throws on out-of-bounds indices. Validate indices against length or use modify."
      name: Data.Vector.Storable.accumulate_
      within: []
    - message: "Partial: throws on out-of-bounds indices. Validate indices against length or use modify."
      name: Data.Vector.Storable.backpermute
      within: []
    - message: "Partial: throws on empty vector. Use foldl with explicit initial value."
      name: Data.Vector.Storable.foldl1
      within: []
    - message: "Partial: throws on empty vector. Use foldl' with explicit initial value."
      name: "Data.Vector.Storable.foldl1'"
      within: []
    - message: "Partial: throws on empty vector. Use foldr with explicit initial value."
      name: Data.Vector.Storable.foldr1
      within: []
    - message: "Partial: throws on empty vector. Use foldr' with explicit initial value."
      name: "Data.Vector.Storable.foldr1'"
      within: []
    - message: "Partial: throws on empty vector. Use fold with explicit initial value."
      name: Data.Vector.Storable.maximum
      within: []
    - message: "Partial: throws on empty vector. Use fold with explicit initial value."
      name: Data.Vector.Storable.maximumBy
      within: []
    - message: "Partial: throws on empty vector. Use fold with explicit initial value."
      name: Data.Vector.Storable.minimum
      within: []
    - message: "Partial: throws on empty vector. Use fold with explicit initial value."
      name: Data.Vector.Storable.minimumBy
      within: []
    - message: "Partial: throws on empty vector. Use indexed fold with Maybe result."
      name: Data.Vector.Storable.minIndex
      within: []
    - message: "Partial: throws on empty vector. Use indexed fold with Maybe result."
      name: Data.Vector.Storable.minIndexBy
      within: []
    - message: "Partial: throws on empty vector. Use indexed fold with Maybe result."
      name: Data.Vector.Storable.maxIndex
      within: []
    - message: "Partial: throws on empty vector. Use indexed fold with Maybe result."
      name: Data.Vector.Storable.maxIndexBy
      within: []
    - message: "Partial: throws on empty vector. Use foldM with explicit initial value."
      name: Data.Vector.Storable.fold1M
      within: []
    - message: "Partial: throws on empty vector. Use foldM' with explicit initial value."
      name: "Data.Vector.Storable.fold1M'"
      within: []
    - message: "Partial: throws on empty vector. Use foldM_ with explicit initial value."
      name: Data.Vector.Storable.fold1M_
      within: []
    - message: "Partial: throws on empty vector. Use foldM'_ with explicit initial value."
      name: "Data.Vector.Storable.fold1M'_"
      within: []
    - message: "Partial: throws on empty vector. Use scanl with explicit initial value."
      name: Data.Vector.Storable.scanl1
      within: []
    - message: "Partial: throws on empty vector. Use scanl' with explicit initial value."
      name: "Data.Vector.Storable.scanl1'"
      within: []
    - message: "Partial: throws on empty vector. Use scanr with explicit initial value."
      name: Data.Vector.Storable.scanr1
      within: []
    - message: "Partial: throws on empty vector. Use scanr' with explicit initial value."
      name: "Data.Vector.Storable.scanr1'"
      within: []
    - message: "Partial: throws on out-of-bounds. Use (!?) for safe indexing."
      name: "Data.Vector.Strict.!"
      within: []
    - message: "Partial: throws on empty vector. Use uncons or (!?) 0 instead."
      name: Data.Vector.Strict.head
      within: []
    - message: "Partial: throws on empty vector. Use unsnoc or check null first."
      name: Data.Vector.Strict.last
      within: []
    - message: "Partial: throws on out-of-bounds regardless of Monad (M is for evaluation control, not error handling). Use (!?) for safe indexing."
      name: Data.Vector.Strict.indexM
      within: []
    - message: "Partial: throws on empty vector regardless of Monad (M is for evaluation control, not error handling). Use uncons or check null first."
      name: Data.Vector.Strict.headM
      within: []
    - message: "Partial: throws on empty vector regardless of Monad (M is for evaluation control, not error handling). Use unsnoc or check null first."
      name: Data.Vector.Strict.lastM
      within: []
    - message: "Partial: throws on empty vector. Use unsnoc for safe init."
      name: Data.Vector.Strict.init
      within: []
    - message: "Partial: throws on empty vector. Use uncons for safe tail."
      name: Data.Vector.Strict.tail
      within: []
    - message: "Partial: throws on out-of-bounds indices. Validate indices against length or use modify."
      name: Data.Vector.Strict.//
      within: []
    - message: "Partial: throws on out-of-bounds indices. Validate indices against length or use modify."
      name: Data.Vector.Strict.update
      within: []
    - message: "Partial: throws on out-of-bounds indices. Validate indices against length or use modify."
      name: Data.Vector.Strict.update_
      within: []
    - message: "Partial: throws on out-of-bounds indices. Validate indices against length or use modify."
      name: Data.Vector.Strict.accum
      within: []
    - message: "Partial: throws on out-of-bounds indices. Validate indices against length or use modify."
      name: Data.Vector.Strict.accumulate
      within: []
    - message: "Partial: throws on out-of-bounds indices. Validate indices against length or use modify."
      name: Data.Vector.Strict.accumulate_
      within: []
    - message: "Partial: throws on out-of-bounds indices. Validate indices against length or use modify."
      name: Data.Vector.Strict.backpermute
      within: []
    - message: "Partial: throws on empty vector. Use foldl with explicit initial value."
      name: Data.Vector.Strict.foldl1
      within: []
    - message: "Partial: throws on empty vector. Use foldl' with explicit initial value."
      name: "Data.Vector.Strict.foldl1'"
      within: []
    - message: "Partial: throws on empty vector. Use foldr with explicit initial value."
      name: Data.Vector.Strict.foldr1
      within: []
    - message: "Partial: throws on empty vector. Use foldr' with explicit initial value."
      name: "Data.Vector.Strict.foldr1'"
      within: []
    - message: "Partial: throws on empty vector. Use fold with explicit initial value."
      name: Data.Vector.Strict.maximum
      within: []
    - message: "Partial: throws on empty vector. Use fold with explicit initial value."
      name: Data.Vector.Strict.maximumBy
      within: []
    - message: "Partial: throws on empty vector. Use fold with explicit initial value."
      name: Data.Vector.Strict.minimum
      within: []
    - message: "Partial: throws on empty vector. Use fold with explicit initial value."
      name: Data.Vector.Strict.minimumBy
      within: []
    - message: "Partial: throws on empty vector. Use indexed fold with Maybe result."
      name: Data.Vector.Strict.minIndex
      within: []
    - message: "Partial: throws on empty vector. Use indexed fold with Maybe result."
      name: Data.Vector.Strict.minIndexBy
      within: []
    - message: "Partial: throws on empty vector. Use indexed fold with Maybe result."
      name: Data.Vector.Strict.maxIndex
      within: []
    - message: "Partial: throws on empty vector. Use indexed fold with Maybe result."
      name: Data.Vector.Strict.maxIndexBy
      within: []
    - message: "Partial: throws on empty vector. Use foldM with explicit initial value."
      name: Data.Vector.Strict.fold1M
      within: []
    - message: "Partial: throws on empty vector. Use foldM' with explicit initial value."
      name: "Data.Vector.Strict.fold1M'"
      within: []
    - message: "Partial: throws on empty vector. Use foldM_ with explicit initial value."
      name: Data.Vector.Strict.fold1M_
      within: []
    - message: "Partial: throws on empty vector. Use foldM'_ with explicit initial value."
      name: "Data.Vector.Strict.fold1M'_"
      within: []
    - message: "Partial: throws on empty vector. Use scanl with explicit initial value."
      name: Data.Vector.Strict.scanl1
      within: []
    - message: "Partial: throws on empty vector. Use scanl' with explicit initial value."
      name: "Data.Vector.Strict.scanl1'"
      within: []
    - message: "Partial: throws on empty vector. Use scanr with explicit initial value."
      name: Data.Vector.Strict.scanr1
      within: []
    - message: "Partial: throws on empty vector. Use scanr' with explicit initial value."
      name: "Data.Vector.Strict.scanr1'"
      within: []
    - message: "Partial: throws on out-of-bounds. Use (!?) for safe indexing."
      name: "Data.Vector.Unboxed.!"
      within: []
    - message: "Partial: throws on empty vector. Use uncons or (!?) 0 instead."
      name: Data.Vector.Unboxed.head
      within: []
    - message: "Partial: throws on empty vector. Use unsnoc or check null first."
      name: Data.Vector.Unboxed.last
      within: []
    - message: "Partial: throws on out-of-bounds regardless of Monad (M is for evaluation control, not error handling). Use (!?) for safe indexing."
      name: Data.Vector.Unboxed.indexM
      within: []
    - message: "Partial: throws on empty vector regardless of Monad (M is for evaluation control, not error handling). Use uncons or check null first."
      name: Data.Vector.Unboxed.headM
      within: []
    - message: "Partial: throws on empty vector regardless of Monad (M is for evaluation control, not error handling). Use unsnoc or check null first."
      name: Data.Vector.Unboxed.lastM
      within: []
    - message: "Partial: throws on empty vector. Use unsnoc for safe init."
      name: Data.Vector.Unboxed.init
      within: []
    - message: "Partial: throws on empty vector. Use uncons for safe tail."
      name: Data.Vector.Unboxed.tail
      within: []
    - message: "Partial: throws on out-of-bounds indices. Validate indices against length or use modify."
      name: Data.Vector.Unboxed.//
      within: []
    - message: "Partial: throws on out-of-bounds indices. Validate indices against length or use modify."
      name: Data.Vector.Unboxed.update
      within: []
    - message: "Partial: throws on out-of-bounds indices. Validate indices against length or use modify."
      name: Data.Vector.Unboxed.update_
      within: []
    - message: "Partial: throws on out-of-bounds indices. Validate indices against length or use modify."
      name: Data.Vector.Unboxed.accum
      within: []
    - message: "Partial: throws on out-of-bounds indices. Validate indices against length or use modify."
      name: Data.Vector.Unboxed.accumulate
      within: []
    - message: "Partial: throws on out-of-bounds indices. Validate indices against length or use modify."
      name: Data.Vector.Unboxed.accumulate_
      within: []
    - message: "Partial: throws on out-of-bounds indices. Validate indices against length or use modify."
      name: Data.Vector.Unboxed.backpermute
      within: []
    - message: "Partial: throws on empty vector. Use foldl with explicit initial value."
      name: Data.Vector.Unboxed.foldl1
      within: []
    - message: "Partial: throws on empty vector. Use foldl' with explicit initial value."
      name: "Data.Vector.Unboxed.foldl1'"
      within: []
    - message: "Partial: throws on empty vector. Use foldr with explicit initial value."
      name: Data.Vector.Unboxed.foldr1
      within: []
    - message: "Partial: throws on empty vector. Use foldr' with explicit initial value."
      name: "Data.Vector.Unboxed.foldr1'"
      within: []
    - message: "Partial: throws on empty vector. Use fold with explicit initial value."
      name: Data.Vector.Unboxed.maximum
      within: []
    - message: "Partial: throws on empty vector. Use fold with explicit initial value."
      name: Data.Vector.Unboxed.maximumBy
      within: []
    - message: "Partial: throws on empty vector. Use fold with explicit initial value."
      name: Data.Vector.Unboxed.minimum
      within: []
    - message: "Partial: throws on empty vector. Use fold with explicit initial value."
      name: Data.Vector.Unboxed.minimumBy
      within: []
    - message: "Partial: throws on empty vector. Use indexed fold with Maybe result."
      name: Data.Vector.Unboxed.minIndex
      within: []
    - message: "Partial: throws on empty vector. Use indexed fold with Maybe result."
      name: Data.Vector.Unboxed.minIndexBy
      within: []
    - message: "Partial: throws on empty vector. Use indexed fold with Maybe result."
      name: Data.Vector.Unboxed.maxIndex
      within: []
    - message: "Partial: throws on empty vector. Use indexed fold with Maybe result."
      name: Data.Vector.Unboxed.maxIndexBy
      within: []
    - message: "Partial: throws on empty vector. Use foldM with explicit initial value."
      name: Data.Vector.Unboxed.fold1M
      within: []
    - message: "Partial: throws on empty vector. Use foldM' with explicit initial value."
      name: "Data.Vector.Unboxed.fold1M'"
      within: []
    - message: "Partial: throws on empty vector. Use foldM_ with explicit initial value."
      name: Data.Vector.Unboxed.fold1M_
      within: []
    - message: "Partial: throws on empty vector. Use foldM'_ with explicit initial value."
      name: "Data.Vector.Unboxed.fold1M'_"
      within: []
    - message: "Partial: throws on empty vector. Use scanl with explicit initial value."
      name: Data.Vector.Unboxed.scanl1
      within: []
    - message: "Partial: throws on empty vector. Use scanl' with explicit initial value."
      name: "Data.Vector.Unboxed.scanl1'"
      within: []
    - message: "Partial: throws on empty vector. Use scanr with explicit initial value."
      name: Data.Vector.Unboxed.scanr1
      within: []
    - message: "Partial: throws on empty vector. Use scanr' with explicit initial value."
      name: "Data.Vector.Unboxed.scanr1'"
      within: []
- functions:
    - message: "Unsafe: no bounds checking, may cause segfaults. Use (!) or (!?) instead."
      name: Data.Vector.unsafeIndex
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Use uncons or (!?) 0 instead."
      name: Data.Vector.unsafeHead
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Use unsnoc or check null first."
      name: Data.Vector.unsafeLast
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use (!?) instead."
      name: Data.Vector.unsafeIndexM
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Use uncons or (!?) 0 instead."
      name: Data.Vector.unsafeHeadM
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Use unsnoc or check null first."
      name: Data.Vector.unsafeLastM
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use slice instead."
      name: Data.Vector.unsafeSlice
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Use unsnoc instead."
      name: Data.Vector.unsafeInit
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Use uncons instead."
      name: Data.Vector.unsafeTail
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use take instead."
      name: Data.Vector.unsafeTake
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use drop instead."
      name: Data.Vector.unsafeDrop
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use (//) instead."
      name: Data.Vector.unsafeUpd
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use update instead."
      name: Data.Vector.unsafeUpdate
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use update_ instead."
      name: Data.Vector.unsafeUpdate_
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use accum instead."
      name: Data.Vector.unsafeAccum
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use accumulate instead."
      name: Data.Vector.unsafeAccumulate
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use accumulate_ instead."
      name: Data.Vector.unsafeAccumulate_
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use backpermute instead."
      name: Data.Vector.unsafeBackpermute
      within: []
    - message: "Unsafe: the mutable vector may not be used after this. Use freeze for safety."
      name: Data.Vector.unsafeFreeze
      within: []
    - message: "Unsafe: the immutable vector may not be used after this. Use thaw for safety."
      name: Data.Vector.unsafeThaw
      within: []
    - message: "Unsafe: no length checking. Use copy for safety."
      name: Data.Vector.unsafeCopy
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use (!) or (!?) instead."
      name: Data.Vector.Generic.unsafeIndex
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Use uncons or (!?) 0 instead."
      name: Data.Vector.Generic.unsafeHead
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Use unsnoc or check null first."
      name: Data.Vector.Generic.unsafeLast
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use (!?) instead."
      name: Data.Vector.Generic.unsafeIndexM
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Use uncons or (!?) 0 instead."
      name: Data.Vector.Generic.unsafeHeadM
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Use unsnoc or check null first."
      name: Data.Vector.Generic.unsafeLastM
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use slice instead."
      name: Data.Vector.Generic.unsafeSlice
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Use unsnoc instead."
      name: Data.Vector.Generic.unsafeInit
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Use uncons instead."
      name: Data.Vector.Generic.unsafeTail
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use take instead."
      name: Data.Vector.Generic.unsafeTake
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use drop instead."
      name: Data.Vector.Generic.unsafeDrop
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use (//) instead."
      name: Data.Vector.Generic.unsafeUpd
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use update instead."
      name: Data.Vector.Generic.unsafeUpdate
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use update_ instead."
      name: Data.Vector.Generic.unsafeUpdate_
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use accum instead."
      name: Data.Vector.Generic.unsafeAccum
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use accumulate instead."
      name: Data.Vector.Generic.unsafeAccumulate
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use accumulate_ instead."
      name: Data.Vector.Generic.unsafeAccumulate_
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use backpermute instead."
      name: Data.Vector.Generic.unsafeBackpermute
      within: []
    - message: "Unsafe: the mutable vector may not be used after this. Use freeze for safety."
      name: Data.Vector.Generic.unsafeFreeze
      within: []
    - message: "Unsafe: the immutable vector may not be used after this. Use thaw for safety."
      name: Data.Vector.Generic.unsafeThaw
      within: []
    - message: "Unsafe: no length checking. Use copy for safety."
      name: Data.Vector.Generic.unsafeCopy
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use (!) or (!?) instead."
      name: Data.Vector.Primitive.unsafeIndex
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Use uncons or (!?) 0 instead."
      name: Data.Vector.Primitive.unsafeHead
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Use unsnoc or check null first."
      name: Data.Vector.Primitive.unsafeLast
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use (!?) instead."
      name: Data.Vector.Primitive.unsafeIndexM
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Use uncons or (!?) 0 instead."
      name: Data.Vector.Primitive.unsafeHeadM
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Use unsnoc or check null first."
      name: Data.Vector.Primitive.unsafeLastM
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use slice instead."
      name: Data.Vector.Primitive.unsafeSlice
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Use unsnoc instead."
      name: Data.Vector.Primitive.unsafeInit
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Use uncons instead."
      name: Data.Vector.Primitive.unsafeTail
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use take instead."
      name: Data.Vector.Primitive.unsafeTake
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use drop instead."
      name: Data.Vector.Primitive.unsafeDrop
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use (//) instead."
      name: Data.Vector.Primitive.unsafeUpd
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use update instead."
      name: Data.Vector.Primitive.unsafeUpdate
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use update_ instead."
      name: Data.Vector.Primitive.unsafeUpdate_
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use accum instead."
      name: Data.Vector.Primitive.unsafeAccum
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use accumulate instead."
      name: Data.Vector.Primitive.unsafeAccumulate
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use accumulate_ instead."
      name: Data.Vector.Primitive.unsafeAccumulate_
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use backpermute instead."
      name: Data.Vector.Primitive.unsafeBackpermute
      within: []
    - message: "Unsafe: the mutable vector may not be used after this. Use freeze for safety."
      name: Data.Vector.Primitive.unsafeFreeze
      within: []
    - message: "Unsafe: the immutable vector may not be used after this. Use thaw for safety."
      name: Data.Vector.Primitive.unsafeThaw
      within: []
    - message: "Unsafe: no length checking. Use copy for safety."
      name: Data.Vector.Primitive.unsafeCopy
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use (!) or (!?) instead."
      name: Data.Vector.Storable.unsafeIndex
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Use uncons or (!?) 0 instead."
      name: Data.Vector.Storable.unsafeHead
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Use unsnoc or check null first."
      name: Data.Vector.Storable.unsafeLast
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use (!?) instead."
      name: Data.Vector.Storable.unsafeIndexM
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Use uncons or (!?) 0 instead."
      name: Data.Vector.Storable.unsafeHeadM
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Use unsnoc or check null first."
      name: Data.Vector.Storable.unsafeLastM
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use slice instead."
      name: Data.Vector.Storable.unsafeSlice
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Use unsnoc instead."
      name: Data.Vector.Storable.unsafeInit
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Use uncons instead."
      name: Data.Vector.Storable.unsafeTail
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use take instead."
      name: Data.Vector.Storable.unsafeTake
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use drop instead."
      name: Data.Vector.Storable.unsafeDrop
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use (//) instead."
      name: Data.Vector.Storable.unsafeUpd
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use update instead."
      name: Data.Vector.Storable.unsafeUpdate
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use update_ instead."
      name: Data.Vector.Storable.unsafeUpdate_
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use accum instead."
      name: Data.Vector.Storable.unsafeAccum
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use accumulate instead."
      name: Data.Vector.Storable.unsafeAccumulate
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use accumulate_ instead."
      name: Data.Vector.Storable.unsafeAccumulate_
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use backpermute instead."
      name: Data.Vector.Storable.unsafeBackpermute
      within: []
    - message: "Unsafe: the mutable vector may not be used after this. Use freeze for safety."
      name: Data.Vector.Storable.unsafeFreeze
      within: []
    - message: "Unsafe: the immutable vector may not be used after this. Use thaw for safety."
      name: Data.Vector.Storable.unsafeThaw
      within: []
    - message: "Unsafe: no length checking. Use copy for safety."
      name: Data.Vector.Storable.unsafeCopy
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use (!) or (!?) instead."
      name: Data.Vector.Strict.unsafeIndex
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Use uncons or (!?) 0 instead."
      name: Data.Vector.Strict.unsafeHead
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Use unsnoc or check null first."
      name: Data.Vector.Strict.unsafeLast
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use (!?) instead."
      name: Data.Vector.Strict.unsafeIndexM
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Use uncons or (!?) 0 instead."
      name: Data.Vector.Strict.unsafeHeadM
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Use unsnoc or check null first."
      name: Data.Vector.Strict.unsafeLastM
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use slice instead."
      name: Data.Vector.Strict.unsafeSlice
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Use unsnoc instead."
      name: Data.Vector.Strict.unsafeInit
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Use uncons instead."
      name: Data.Vector.Strict.unsafeTail
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use take instead."
      name: Data.Vector.Strict.unsafeTake
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use drop instead."
      name: Data.Vector.Strict.unsafeDrop
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use (//) instead."
      name: Data.Vector.Strict.unsafeUpd
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use update instead."
      name: Data.Vector.Strict.unsafeUpdate
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use update_ instead."
      name: Data.Vector.Strict.unsafeUpdate_
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use accum instead."
      name: Data.Vector.Strict.unsafeAccum
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use accumulate instead."
      name: Data.Vector.Strict.unsafeAccumulate
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use accumulate_ instead."
      name: Data.Vector.Strict.unsafeAccumulate_
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use backpermute instead."
      name: Data.Vector.Strict.unsafeBackpermute
      within: []
    - message: "Unsafe: the mutable vector may not be used after this. Use freeze for safety."
      name: Data.Vector.Strict.unsafeFreeze
      within: []
    - message: "Unsafe: the immutable vector may not be used after this. Use thaw for safety."
      name: Data.Vector.Strict.unsafeThaw
      within: []
    - message: "Unsafe: no length checking. Use copy for safety."
      name: Data.Vector.Strict.unsafeCopy
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use (!) or (!?) instead."
      name: Data.Vector.Unboxed.unsafeIndex
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Use uncons or (!?) 0 instead."
      name: Data.Vector.Unboxed.unsafeHead
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Use unsnoc or check null first."
      name: Data.Vector.Unboxed.unsafeLast
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use (!?) instead."
      name: Data.Vector.Unboxed.unsafeIndexM
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Use uncons or (!?) 0 instead."
      name: Data.Vector.Unboxed.unsafeHeadM
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Use unsnoc or check null first."
      name: Data.Vector.Unboxed.unsafeLastM
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use slice instead."
      name: Data.Vector.Unboxed.unsafeSlice
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Use unsnoc instead."
      name: Data.Vector.Unboxed.unsafeInit
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Use uncons instead."
      name: Data.Vector.Unboxed.unsafeTail
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use take instead."
      name: Data.Vector.Unboxed.unsafeTake
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use drop instead."
      name: Data.Vector.Unboxed.unsafeDrop
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use (//) instead."
      name: Data.Vector.Unboxed.unsafeUpd
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use update instead."
      name: Data.Vector.Unboxed.unsafeUpdate
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use update_ instead."
      name: Data.Vector.Unboxed.unsafeUpdate_
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use accum instead."
      name: Data.Vector.Unboxed.unsafeAccum
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use accumulate instead."
      name: Data.Vector.Unboxed.unsafeAccumulate
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use accumulate_ instead."
      name: Data.Vector.Unboxed.unsafeAccumulate_
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use backpermute instead."
      name: Data.Vector.Unboxed.unsafeBackpermute
      within: []
    - message: "Unsafe: the mutable vector may not be used after this. Use freeze for safety."
      name: Data.Vector.Unboxed.unsafeFreeze
      within: []
    - message: "Unsafe: the immutable vector may not be used after this. Use thaw for safety."
      name: Data.Vector.Unboxed.unsafeThaw
      within: []
    - message: "Unsafe: no length checking. Use copy for safety."
      name: Data.Vector.Unboxed.unsafeCopy
      within: []
- functions:
    - message: "Partial: throws on empty vector. Use unsafeInit only if you've verified non-empty."
      name: Data.Vector.Mutable.init
      within: []
    - message: "Partial: throws on empty vector. Use unsafeTail only if you've verified non-empty."
      name: Data.Vector.Mutable.tail
      within: []
    - message: "Partial: throws on empty vector. Use unsafeInit only if you've verified non-empty."
      name: Data.Vector.Generic.Mutable.init
      within: []
    - message: "Partial: throws on empty vector. Use unsafeTail only if you've verified non-empty."
      name: Data.Vector.Generic.Mutable.tail
      within: []
    - message: "Partial: throws on empty vector. Use unsafeInit only if you've verified non-empty."
      name: Data.Vector.Primitive.Mutable.init
      within: []
    - message: "Partial: throws on empty vector. Use unsafeTail only if you've verified non-empty."
      name: Data.Vector.Primitive.Mutable.tail
      within: []
    - message: "Partial: throws on empty vector. Use unsafeInit only if you've verified non-empty."
      name: Data.Vector.Storable.Mutable.init
      within: []
    - message: "Partial: throws on empty vector. Use unsafeTail only if you've verified non-empty."
      name: Data.Vector.Storable.Mutable.tail
      within: []
    - message: "Partial: throws on empty vector. Use unsafeInit only if you've verified non-empty."
      name: Data.Vector.Strict.Mutable.init
      within: []
    - message: "Partial: throws on empty vector. Use unsafeTail only if you've verified non-empty."
      name: Data.Vector.Strict.Mutable.tail
      within: []
    - message: "Partial: throws on empty vector. Use unsafeInit only if you've verified non-empty."
      name: Data.Vector.Unboxed.Mutable.init
      within: []
    - message: "Partial: throws on empty vector. Use unsafeTail only if you've verified non-empty."
      name: Data.Vector.Unboxed.Mutable.tail
      within: []
- functions:
    - message: "Unsafe: no bounds checking, may cause segfaults. Use slice instead."
      name: Data.Vector.Mutable.unsafeSlice
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Verify non-empty first."
      name: Data.Vector.Mutable.unsafeInit
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Verify non-empty first."
      name: Data.Vector.Mutable.unsafeTail
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use take instead."
      name: Data.Vector.Mutable.unsafeTake
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use drop instead."
      name: Data.Vector.Mutable.unsafeDrop
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use read instead."
      name: Data.Vector.Mutable.unsafeRead
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use write instead."
      name: Data.Vector.Mutable.unsafeWrite
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use modify instead."
      name: Data.Vector.Mutable.unsafeModify
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use modifyM instead."
      name: Data.Vector.Mutable.unsafeModifyM
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use swap instead."
      name: Data.Vector.Mutable.unsafeSwap
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use exchange instead."
      name: Data.Vector.Mutable.unsafeExchange
      within: []
    - message: "Unsafe: no length/overlap checking. Use copy for safety."
      name: Data.Vector.Mutable.unsafeCopy
      within: []
    - message: "Unsafe: no length checking. Use move for safety."
      name: Data.Vector.Mutable.unsafeMove
      within: []
    - message: "Unsafe: no non-negative check. Use grow for safety."
      name: Data.Vector.Mutable.unsafeGrow
      within: []
    - message: "Unsafe: elements are uninitialized and may cause exceptions. Use new or replicate instead."
      name: Data.Vector.Mutable.unsafeNew
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use slice instead."
      name: Data.Vector.Generic.Mutable.unsafeSlice
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Verify non-empty first."
      name: Data.Vector.Generic.Mutable.unsafeInit
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Verify non-empty first."
      name: Data.Vector.Generic.Mutable.unsafeTail
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use take instead."
      name: Data.Vector.Generic.Mutable.unsafeTake
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use drop instead."
      name: Data.Vector.Generic.Mutable.unsafeDrop
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use read instead."
      name: Data.Vector.Generic.Mutable.unsafeRead
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use write instead."
      name: Data.Vector.Generic.Mutable.unsafeWrite
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use modify instead."
      name: Data.Vector.Generic.Mutable.unsafeModify
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use modifyM instead."
      name: Data.Vector.Generic.Mutable.unsafeModifyM
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use swap instead."
      name: Data.Vector.Generic.Mutable.unsafeSwap
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use exchange instead."
      name: Data.Vector.Generic.Mutable.unsafeExchange
      within: []
    - message: "Unsafe: no length/overlap checking. Use copy for safety."
      name: Data.Vector.Generic.Mutable.unsafeCopy
      within: []
    - message: "Unsafe: no length checking. Use move for safety."
      name: Data.Vector.Generic.Mutable.unsafeMove
      within: []
    - message: "Unsafe: no non-negative check. Use grow for safety."
      name: Data.Vector.Generic.Mutable.unsafeGrow
      within: []
    - message: "Unsafe: elements are uninitialized and may cause exceptions. Use new or replicate instead."
      name: Data.Vector.Generic.Mutable.unsafeNew
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use slice instead."
      name: Data.Vector.Primitive.Mutable.unsafeSlice
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Verify non-empty first."
      name: Data.Vector.Primitive.Mutable.unsafeInit
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Verify non-empty first."
      name: Data.Vector.Primitive.Mutable.unsafeTail
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use take instead."
      name: Data.Vector.Primitive.Mutable.unsafeTake
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use drop instead."
      name: Data.Vector.Primitive.Mutable.unsafeDrop
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use read instead."
      name: Data.Vector.Primitive.Mutable.unsafeRead
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use write instead."
      name: Data.Vector.Primitive.Mutable.unsafeWrite
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use modify instead."
      name: Data.Vector.Primitive.Mutable.unsafeModify
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use modifyM instead."
      name: Data.Vector.Primitive.Mutable.unsafeModifyM
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use swap instead."
      name: Data.Vector.Primitive.Mutable.unsafeSwap
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use exchange instead."
      name: Data.Vector.Primitive.Mutable.unsafeExchange
      within: []
    - message: "Unsafe: no length/overlap checking. Use copy for safety."
      name: Data.Vector.Primitive.Mutable.unsafeCopy
      within: []
    - message: "Unsafe: no length checking. Use move for safety."
      name: Data.Vector.Primitive.Mutable.unsafeMove
      within: []
    - message: "Unsafe: no non-negative check. Use grow for safety."
      name: Data.Vector.Primitive.Mutable.unsafeGrow
      within: []
    - message: "Unsafe: elements are uninitialized and may cause exceptions. Use new or replicate instead."
      name: Data.Vector.Primitive.Mutable.unsafeNew
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use slice instead."
      name: Data.Vector.Storable.Mutable.unsafeSlice
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Verify non-empty first."
      name: Data.Vector.Storable.Mutable.unsafeInit
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Verify non-empty first."
      name: Data.Vector.Storable.Mutable.unsafeTail
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use take instead."
      name: Data.Vector.Storable.Mutable.unsafeTake
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use drop instead."
      name: Data.Vector.Storable.Mutable.unsafeDrop
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use read instead."
      name: Data.Vector.Storable.Mutable.unsafeRead
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use write instead."
      name: Data.Vector.Storable.Mutable.unsafeWrite
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use modify instead."
      name: Data.Vector.Storable.Mutable.unsafeModify
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use modifyM instead."
      name: Data.Vector.Storable.Mutable.unsafeModifyM
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use swap instead."
      name: Data.Vector.Storable.Mutable.unsafeSwap
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use exchange instead."
      name: Data.Vector.Storable.Mutable.unsafeExchange
      within: []
    - message: "Unsafe: no length/overlap checking. Use copy for safety."
      name: Data.Vector.Storable.Mutable.unsafeCopy
      within: []
    - message: "Unsafe: no length checking. Use move for safety."
      name: Data.Vector.Storable.Mutable.unsafeMove
      within: []
    - message: "Unsafe: no non-negative check. Use grow for safety."
      name: Data.Vector.Storable.Mutable.unsafeGrow
      within: []
    - message: "Unsafe: elements are uninitialized and may cause exceptions. Use new or replicate instead."
      name: Data.Vector.Storable.Mutable.unsafeNew
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use slice instead."
      name: Data.Vector.Strict.Mutable.unsafeSlice
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Verify non-empty first."
      name: Data.Vector.Strict.Mutable.unsafeInit
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Verify non-empty first."
      name: Data.Vector.Strict.Mutable.unsafeTail
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use take instead."
      name: Data.Vector.Strict.Mutable.unsafeTake
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use drop instead."
      name: Data.Vector.Strict.Mutable.unsafeDrop
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use read instead."
      name: Data.Vector.Strict.Mutable.unsafeRead
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use write instead."
      name: Data.Vector.Strict.Mutable.unsafeWrite
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use modify instead."
      name: Data.Vector.Strict.Mutable.unsafeModify
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use modifyM instead."
      name: Data.Vector.Strict.Mutable.unsafeModifyM
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use swap instead."
      name: Data.Vector.Strict.Mutable.unsafeSwap
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use exchange instead."
      name: Data.Vector.Strict.Mutable.unsafeExchange
      within: []
    - message: "Unsafe: no length/overlap checking. Use copy for safety."
      name: Data.Vector.Strict.Mutable.unsafeCopy
      within: []
    - message: "Unsafe: no length checking. Use move for safety."
      name: Data.Vector.Strict.Mutable.unsafeMove
      within: []
    - message: "Unsafe: no non-negative check. Use grow for safety."
      name: Data.Vector.Strict.Mutable.unsafeGrow
      within: []
    - message: "Unsafe: elements are uninitialized and may cause exceptions. Use new or replicate instead."
      name: Data.Vector.Strict.Mutable.unsafeNew
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use slice instead."
      name: Data.Vector.Unboxed.Mutable.unsafeSlice
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Verify non-empty first."
      name: Data.Vector.Unboxed.Mutable.unsafeInit
      within: []
    - message: "Unsafe: no empty check, may cause segfaults. Verify non-empty first."
      name: Data.Vector.Unboxed.Mutable.unsafeTail
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use take instead."
      name: Data.Vector.Unboxed.Mutable.unsafeTake
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use drop instead."
      name: Data.Vector.Unboxed.Mutable.unsafeDrop
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use read instead."
      name: Data.Vector.Unboxed.Mutable.unsafeRead
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use write instead."
      name: Data.Vector.Unboxed.Mutable.unsafeWrite
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use modify instead."
      name: Data.Vector.Unboxed.Mutable.unsafeModify
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use modifyM instead."
      name: Data.Vector.Unboxed.Mutable.unsafeModifyM
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use swap instead."
      name: Data.Vector.Unboxed.Mutable.unsafeSwap
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use exchange instead."
      name: Data.Vector.Unboxed.Mutable.unsafeExchange
      within: []
    - message: "Unsafe: no length/overlap checking. Use copy for safety."
      name: Data.Vector.Unboxed.Mutable.unsafeCopy
      within: []
    - message: "Unsafe: no length checking. Use move for safety."
      name: Data.Vector.Unboxed.Mutable.unsafeMove
      within: []
    - message: "Unsafe: no non-negative check. Use grow for safety."
      name: Data.Vector.Unboxed.Mutable.unsafeGrow
      within: []
    - message: "Unsafe: elements are uninitialized and may cause exceptions. Use new or replicate instead."
      name: Data.Vector.Unboxed.Mutable.unsafeNew
      within: []
    - message: "Unsafe: no non-negative check. Use growFront for safety."
      name: Data.Vector.Generic.Mutable.unsafeGrowFront
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use accum for safety."
      name: Data.Vector.Generic.Mutable.unsafeAccum
      within: []
    - message: "Unsafe: no bounds checking, may cause segfaults. Use update for safety."
      name: Data.Vector.Generic.Mutable.unsafeUpdate
      within: []
    - message: "Unsafe: type cast without memory safety guarantees. Ensure correct memory layout."
      name: Data.Vector.Primitive.Mutable.unsafeCast
      within: []
    - message: "Unsafe: coerces vector type without safety checks."
      name: Data.Vector.Primitive.Mutable.unsafeCoerceMVector
      within: []
    - message: "Unsafe: type cast without memory safety guarantees. Ensure correct memory layout."
      name: Data.Vector.Storable.Mutable.unsafeCast
      within: []
    - message: "Unsafe: coerces vector type without safety checks."
      name: Data.Vector.Storable.Mutable.unsafeCoerceMVector
      within: []
    - message: "Unsafe: creates vector from raw pointer without validation."
      name: Data.Vector.Storable.Mutable.unsafeFromForeignPtr
      within: []
    - message: "Unsafe: creates vector from raw pointer without validation."
      name: Data.Vector.Storable.Mutable.unsafeFromForeignPtr0
      within: []
    - message: "Unsafe: extracts raw pointer, vector may not be used safely after."
      name: Data.Vector.Storable.Mutable.unsafeToForeignPtr
      within: []
    - message: "Unsafe: extracts raw pointer, vector may not be used safely after."
      name: Data.Vector.Storable.Mutable.unsafeToForeignPtr0
      within: []
    - message: "Unsafe: passes raw pointer to IO action without safety guarantees."
      name: Data.Vector.Storable.Mutable.unsafeWith
      within: []
- functions:
    - message: "Discards error info. Use decodeEither' or decodeThrow instead."
      name: Data.Yaml.decode
      within: []
    - message: Discards error info. Use decodeFileEither or decodeFileThrow instead.
      name: Data.Yaml.decodeFile
      within: []
- functions:
    - message: "Deprecated. Use decodeEither' instead for ParseException details."
      name: Data.Yaml.decodeEither
      within: []