diff --git a/Cabal-syntax.cabal b/Cabal-syntax.cabal
--- a/Cabal-syntax.cabal
+++ b/Cabal-syntax.cabal
@@ -1,7 +1,7 @@
 cabal-version: 3.6
 name:          Cabal-syntax
-version:       3.16.1.0
-copyright:     2003-2025, Cabal Development Team (see AUTHORS file)
+version:       3.18.1.0
+copyright:     2003-2026, Cabal Development Team (see AUTHORS file)
 license:       BSD-3-Clause
 license-file:  LICENSE
 author:        Cabal Development Team <cabal-devel@haskell.org>
@@ -29,18 +29,18 @@
 
   build-depends:
     , array      >= 0.4.0.1  && < 0.6
-    , base       >= 4.13     && < 5
-    , binary     >= 0.7      && < 0.9
-    , bytestring >= 0.10.0.0 && < 0.13
-    , containers >= 0.5.0.0  && < 0.9
-    , deepseq    >= 1.3.0.1  && < 1.7
+    , base       >= 4.17     && < 5
+    , binary     >= 0.8.1    && < 0.9
+    , bytestring >= 0.10.4.0 && < 0.13
+    , containers >= 0.5.2    && < 0.9
+    , deepseq    >= 1.4      && < 1.7
     , directory  >= 1.2      && < 1.4
     , filepath   >= 1.3.0.1  && < 1.6
     , mtl        >= 2.1      && < 2.4
     , parsec     >= 3.1.13.0 && < 3.2
     , pretty     >= 1.1.1    && < 1.2
-    , text       (>= 1.2.3.0 && < 1.3) || (>= 2.0 && < 2.2)
-    , time       >= 1.4.0.1  && < 1.16
+    , text       >= 2.0.2    && < 2.2
+    , time       >= 1.4.0.1  && < 1.17
     -- transformers-0.4.0.0 doesn't have record syntax e.g. for Identity
     -- See also https://github.com/ekmett/transformers-compat/issues/35
     , transformers (>= 0.3      && < 0.4) || (>=0.4.1.0 && <0.7)
@@ -52,14 +52,15 @@
     -Wincomplete-uni-patterns
     -Wincomplete-record-updates
     -Wno-unticked-promoted-constructors
-
-  if impl(ghc >= 8.0)
-    ghc-options: -Wcompat -Wnoncanonical-monad-instances
+    -Wcompat
+    -Wnoncanonical-monad-instances
 
   if impl(ghc >= 8.0) && impl(ghc < 8.8)
     ghc-options: -Wnoncanonical-monadfail-instances
 
-  build-tool-depends: alex:alex
+  build-tool-depends:
+    -- https://github.com/haskell/alex/issues/288
+    alex:alex < 3.5.4.1 || > 3.5.4.1
 
   exposed-modules:
     Distribution.Backpack
@@ -70,7 +71,6 @@
     Distribution.Compat.Exception
     Distribution.Compat.Graph
     Distribution.Compat.Lens
-    Distribution.Compat.MonadFail
     Distribution.Compat.Newtype
     Distribution.Compat.NonEmptySet
     Distribution.Compat.Parsing
@@ -107,6 +107,7 @@
     Distribution.Parsec.FieldLineStream
     Distribution.Parsec.Position
     Distribution.Parsec.Warning
+    Distribution.Parsec.Source
     Distribution.Pretty
     Distribution.SPDX
     Distribution.SPDX.License
diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,1 +1,1 @@
-Please see https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.16.1.0.md
+Please see https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.18.1.0.md
diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2003-2025, Cabal Development Team.
+Copyright (c) 2003-2026, Cabal Development Team.
 See the AUTHORS file for the full list of copyright holders.
 
 See */LICENSE for the copyright holders of the subcomponents.
diff --git a/src/Distribution/CabalSpecVersion.hs b/src/Distribution/CabalSpecVersion.hs
--- a/src/Distribution/CabalSpecVersion.hs
+++ b/src/Distribution/CabalSpecVersion.hs
@@ -36,16 +36,19 @@
     CabalSpecV3_12
   | CabalSpecV3_14
   | CabalSpecV3_16
+  | -- 3.18: remove build-type: Make
+    CabalSpecV3_18
   deriving (Eq, Ord, Show, Read, Enum, Bounded, Data, Generic)
 
 instance Binary CabalSpecVersion
 instance Structured CabalSpecVersion
-instance NFData CabalSpecVersion where rnf = genericRnf
+instance NFData CabalSpecVersion
 
 -- | Show cabal spec version, but not the way in the .cabal files
 --
 -- @since 3.0.0.0
 showCabalSpecVersion :: CabalSpecVersion -> String
+showCabalSpecVersion CabalSpecV3_18 = "3.18"
 showCabalSpecVersion CabalSpecV3_16 = "3.16"
 showCabalSpecVersion CabalSpecV3_14 = "3.14"
 showCabalSpecVersion CabalSpecV3_12 = "3.12"
@@ -76,6 +79,7 @@
 -- It may fail if for recent versions the version is not exact.
 cabalSpecFromVersionDigits :: [Int] -> Maybe CabalSpecVersion
 cabalSpecFromVersionDigits v
+  | v == [3, 18] = Just CabalSpecV3_18
   | v == [3, 16] = Just CabalSpecV3_16
   | v == [3, 14] = Just CabalSpecV3_14
   | v == [3, 12] = Just CabalSpecV3_12
@@ -101,6 +105,7 @@
 
 -- | @since 3.4.0.0
 cabalSpecToVersionDigits :: CabalSpecVersion -> [Int]
+cabalSpecToVersionDigits CabalSpecV3_18 = [3, 18]
 cabalSpecToVersionDigits CabalSpecV3_16 = [3, 16]
 cabalSpecToVersionDigits CabalSpecV3_14 = [3, 14]
 cabalSpecToVersionDigits CabalSpecV3_12 = [3, 12]
diff --git a/src/Distribution/Compat/Binary.hs b/src/Distribution/Compat/Binary.hs
--- a/src/Distribution/Compat/Binary.hs
+++ b/src/Distribution/Compat/Binary.hs
@@ -6,6 +6,7 @@
 
 import Control.Exception (ErrorCall (..), catch, evaluate)
 import Data.ByteString.Lazy (ByteString)
+import Data.Functor ((<&>))
 
 import Data.Binary
 
@@ -15,6 +16,6 @@
 
 decodeOrFailIO :: Binary a => ByteString -> IO (Either String a)
 decodeOrFailIO bs =
-  catch (evaluate (decode bs) >>= return . Right) handler
+  catch (evaluate (decode bs) <&> Right) handler
   where
     handler (ErrorCall str) = return $ Left str
diff --git a/src/Distribution/Compat/CharParsing.hs b/src/Distribution/Compat/CharParsing.hs
--- a/src/Distribution/Compat/CharParsing.hs
+++ b/src/Distribution/Compat/CharParsing.hs
@@ -73,7 +73,7 @@
 --
 -- >   vowel  = oneOf "aeiou"
 oneOf :: CharParsing m => [Char] -> m Char
-oneOf xs = satisfy (\c -> c `elem` xs)
+oneOf xs = satisfy (`elem` xs)
 {-# INLINE oneOf #-}
 
 -- | As the dual of 'oneOf', @noneOf cs@ succeeds if the current
@@ -82,7 +82,7 @@
 --
 -- >  consonant = noneOf "aeiou"
 noneOf :: CharParsing m => [Char] -> m Char
-noneOf xs = satisfy (\c -> c `notElem` xs)
+noneOf xs = satisfy (`notElem` xs)
 {-# INLINE noneOf #-}
 
 -- | Skips /zero/ or more white space characters. See also 'skipMany'.
diff --git a/src/Distribution/Compat/Graph.hs b/src/Distribution/Compat/Graph.hs
--- a/src/Distribution/Compat/Graph.hs
+++ b/src/Distribution/Compat/Graph.hs
@@ -128,7 +128,7 @@
   show = show . toList
 
 instance (IsNode a, Read a, Show (Key a)) => Read (Graph a) where
-  readsPrec d s = map (\(a, r) -> (fromDistinctList a, r)) (readsPrec d s)
+  readsPrec d s = map (first fromDistinctList) (readsPrec d s)
 
 instance (IsNode a, Binary a, Show (Key a)) => Binary (Graph a) where
   put x = put (toList x)
diff --git a/src/Distribution/Compat/Lens.hs b/src/Distribution/Compat/Lens.hs
--- a/src/Distribution/Compat/Lens.hs
+++ b/src/Distribution/Compat/Lens.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | This module provides very basic lens functionality, without extra dependencies.
 --
@@ -154,7 +155,7 @@
 -------------------------------------------------------------------------------
 
 _1 :: Lens (a, c) (b, c) a b
-_1 f (a, c) = flip (,) c <$> f a
+_1 f (a, c) = (,c) <$> f a
 
 _2 :: Lens (c, a) (c, b) a b
 _2 f (c, a) = (,) c <$> f a
diff --git a/src/Distribution/Compat/MonadFail.hs b/src/Distribution/Compat/MonadFail.hs
deleted file mode 100644
--- a/src/Distribution/Compat/MonadFail.hs
+++ /dev/null
@@ -1,4 +0,0 @@
--- | Compatibility layer for "Control.Monad.Fail"
-module Distribution.Compat.MonadFail (Control.Monad.Fail.MonadFail (fail)) where
-
-import Control.Monad.Fail
diff --git a/src/Distribution/Compat/NonEmptySet.hs b/src/Distribution/Compat/NonEmptySet.hs
--- a/src/Distribution/Compat/NonEmptySet.hs
+++ b/src/Distribution/Compat/NonEmptySet.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE CPP #-}
 {-# LANGUAGE DeriveDataTypeable #-}
 
 module Distribution.Compat.NonEmptySet
@@ -29,6 +28,7 @@
 
 import Prelude (Bool (..), Eq, Maybe (..), Ord (..), Read, Show (..), String, error, otherwise, return, showParen, showString, ($), (++), (.))
 
+import Control.Applicative (empty)
 import Control.DeepSeq (NFData (..))
 import Data.Data (Data)
 import Data.List.NonEmpty (NonEmpty (..))
@@ -40,12 +40,6 @@
 import Distribution.Compat.Binary (Binary (..))
 import Distribution.Utils.Structured
 
-#if MIN_VERSION_binary(0,6,0)
-import Control.Applicative (empty)
-#else
-import Control.Monad (fail)
-#endif
-
 -- | @since 3.4.0.0
 newtype NonEmptySet a = NES (Set.Set a)
   deriving (Eq, Ord, Data, Read)
@@ -60,19 +54,13 @@
       showString "fromNonEmpty "
         . showsPrec 11 (toNonEmpty s)
 
-{- FOURMOLU_DISABLE -}
 instance Binary a => Binary (NonEmptySet a) where
   put (NES s) = put s
   get = do
-      xs <- get
-      if Set.null xs
-#if MIN_VERSION_binary(0,6,0)
+    xs <- get
+    if Set.null xs
       then empty
-#else
-      then fail "NonEmptySet: empty"
-#endif
       else return (NES xs)
-{- FOURMOLU_ENABLE -}
 
 instance Structured a => Structured (NonEmptySet a) where
   structure = containerStructure
@@ -148,16 +136,12 @@
 -- Map
 -------------------------------------------------------------------------------
 
-{- FOURMOLU_DISABLE -}
 map
-    :: ( Ord b
-#if !MIN_VERSION_containers(0,5,2)
-       , Ord a
-#endif
-       )
-    => (a -> b) -> NonEmptySet a -> NonEmptySet b
+  :: Ord b
+  => (a -> b)
+  -> NonEmptySet a
+  -> NonEmptySet b
 map f (NES x) = NES (Set.map f x)
-{- FOURMOLU_ENABLE -}
 
 -------------------------------------------------------------------------------
 -- Internal
diff --git a/src/Distribution/Compat/Parsing.hs b/src/Distribution/Compat/Parsing.hs
--- a/src/Distribution/Compat/Parsing.hs
+++ b/src/Distribution/Compat/Parsing.hs
@@ -58,6 +58,7 @@
 import Control.Monad.Trans.Writer.Strict as Strict
 import Data.Foldable (asum)
 
+import Control.Monad (replicateM)
 import qualified Data.List.NonEmpty as NE
 import qualified Text.Parsec as Parsec
 
@@ -81,7 +82,7 @@
 -- It only fails if @p@ fails after consuming input. It discards the result
 -- of @p@. (Plays the role of parsec's optional, which conflicts with Applicative's optional)
 skipOptional :: Alternative m => m a -> m ()
-skipOptional p = (() <$ p) <|> pure ()
+skipOptional p = void p <|> pure ()
 {-# INLINE skipOptional #-}
 
 -- | @between open close p@ parses @open@, followed by @p@ and @close@.
@@ -141,7 +142,7 @@
 count :: Applicative m => Int -> m a -> m [a]
 count n p
   | n <= 0 = pure []
-  | otherwise = sequenceA (replicate n p)
+  | otherwise = replicateM n p
 {-# INLINE count #-}
 
 -- | @chainr p op x@ parses /zero/ or more occurrences of @p@,
@@ -223,7 +224,7 @@
   -- | A version of many that discards its input. Specialized because it
   -- can often be implemented more cheaply.
   skipMany :: m a -> m ()
-  skipMany p = () <$ many p
+  skipMany p = void $ many p
   {-# INLINE skipMany #-}
 
   -- | @skipSome p@ applies the parser @p@ /one/ or more times, skipping
diff --git a/src/Distribution/Compat/Prelude.hs b/src/Distribution/Compat/Prelude.hs
--- a/src/Distribution/Compat/Prelude.hs
+++ b/src/Distribution/Compat/Prelude.hs
@@ -1,7 +1,6 @@
 {-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE RankNTypes #-}
 {-# LANGUAGE Trustworthy #-}
-{-# LANGUAGE TypeOperators #-}
 
 -- | This module does two things:
 --
@@ -25,7 +24,6 @@
   , Data
   , Generic
   , NFData (..)
-  , genericRnf
   , Binary (..)
   , Structured
   , Alternative (..)
@@ -186,9 +184,6 @@
     -- partial functions
     , read
     , foldr1, foldl1
-    -- As of base 4.11.0.0 Prelude exports part of Semigroup(..).
-    -- Hide this so we instead rely on Distribution.Compat.Semigroup.
-    , Semigroup(..)
     , Word
     -- We hide them, as we import only some members
     , Traversable, traverse, sequenceA
@@ -237,8 +232,8 @@
 import Data.Void (Void, absurd, vacuous)
 import Data.Word (Word, Word16, Word32, Word64, Word8)
 import Distribution.Compat.Binary (Binary (..))
-import Distribution.Compat.Semigroup (Semigroup (..), gmappend, gmempty)
-import GHC.Generics (Generic (..), K1 (unK1), M1 (unM1), U1 (U1), V1, (:*:) ((:*:)), (:+:) (L1, R1))
+import Distribution.Compat.Semigroup (gmappend, gmempty)
+import GHC.Generics (Generic)
 import System.Exit (ExitCode (..), exitFailure, exitSuccess, exitWith)
 import Text.Read (readMaybe)
 
@@ -253,47 +248,6 @@
 -- | New name for 'Text.PrettyPrint.<>'
 (<<>>) :: Disp.Doc -> Disp.Doc -> Disp.Doc
 (<<>>) = (Disp.<>)
-
--- | "GHC.Generics"-based 'rnf' implementation
---
--- This is needed in order to support @deepseq < 1.4@ which didn't
--- have a 'Generic'-based default 'rnf' implementation yet.
---
--- In order to define instances, use e.g.
---
--- > instance NFData MyType where rnf = genericRnf
---
--- The implementation has been taken from @deepseq-1.4.2@'s default
--- 'rnf' implementation.
-genericRnf :: (Generic a, GNFData (Rep a)) => a -> ()
-genericRnf = grnf . from
-
--- | Hidden internal type-class
-class GNFData f where
-  grnf :: f a -> ()
-
-instance GNFData V1 where
-  grnf = error "Control.DeepSeq.rnf: uninhabited type"
-
-instance GNFData U1 where
-  grnf U1 = ()
-
-instance NFData a => GNFData (K1 i a) where
-  grnf = rnf . unK1
-  {-# INLINEABLE grnf #-}
-
-instance GNFData a => GNFData (M1 i c a) where
-  grnf = grnf . unM1
-  {-# INLINEABLE grnf #-}
-
-instance (GNFData a, GNFData b) => GNFData (a :*: b) where
-  grnf (x :*: y) = grnf x `seq` grnf y
-  {-# INLINEABLE grnf #-}
-
-instance (GNFData a, GNFData b) => GNFData (a :+: b) where
-  grnf (L1 x) = grnf x
-  grnf (R1 x) = grnf x
-  {-# INLINEABLE grnf #-}
 
 -- TODO: if we want foldr1/foldl1 to work on more than NonEmpty, we
 -- can define a local typeclass 'Foldable1', e.g.
diff --git a/src/Distribution/Compat/Semigroup.hs b/src/Distribution/Compat/Semigroup.hs
--- a/src/Distribution/Compat/Semigroup.hs
+++ b/src/Distribution/Compat/Semigroup.hs
@@ -1,69 +1,13 @@
-{-# LANGUAGE DeriveGeneric #-}
 {-# LANGUAGE FlexibleContexts #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE TypeOperators #-}
 
--- | Compatibility layer for "Data.Semigroup"
 module Distribution.Compat.Semigroup
-  ( Semigroup ((<>))
-  , Mon.Monoid (..)
-  , All (..)
-  , Any (..)
-  , First' (..)
-  , Last' (..)
-  , Option' (..)
-  , gmappend
+  ( gmappend
   , gmempty
   ) where
 
-import Distribution.Compat.Binary (Binary)
-import Distribution.Utils.Structured (Structured)
-
 import GHC.Generics
 
--- Data.Semigroup is available since GHC 8.0/base-4.9 in `base`
--- for older GHC/base, it's provided by `semigroups`
-
-import qualified Data.Monoid as Mon
-import Data.Semigroup
-
--- | A copy of 'Data.Semigroup.First'.
-newtype First' a = First' {getFirst' :: a}
-  deriving (Eq, Ord, Show)
-
-instance Semigroup (First' a) where
-  a <> _ = a
-
--- | A copy of 'Data.Semigroup.Last'.
-newtype Last' a = Last' {getLast' :: a}
-  deriving (Eq, Ord, Read, Show, Generic, Binary)
-
-instance Structured a => Structured (Last' a)
-
-instance Semigroup (Last' a) where
-  _ <> b = b
-
-instance Functor Last' where
-  fmap f (Last' x) = Last' (f x)
-
--- | A wrapper around 'Maybe', providing the 'Semigroup' and 'Monoid' instances
--- implemented for 'Maybe' since @base-4.11@.
-newtype Option' a = Option' {getOption' :: Maybe a}
-  deriving (Eq, Ord, Read, Show, Binary, Generic, Functor)
-
-instance Structured a => Structured (Option' a)
-
-instance Semigroup a => Semigroup (Option' a) where
-  Option' (Just a) <> Option' (Just b) = Option' (Just (a <> b))
-  Option' Nothing <> b = b
-  a <> Option' Nothing = a
-
-instance Semigroup a => Monoid (Option' a) where
-  mempty = Option' Nothing
-  mappend = (<>)
-
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
 -- Stolen from Edward Kmett's BSD3-licensed `semigroups` package
 
 -- | Generically generate a 'Semigroup' ('<>') operation for any type
@@ -103,7 +47,7 @@
 class GSemigroup f => GMonoid f where
   gmempty' :: f p
 
-instance (Semigroup a, Monoid a) => GMonoid (K1 i a) where
+instance Monoid a => GMonoid (K1 i a) where
   gmempty' = K1 mempty
 
 instance GMonoid f => GMonoid (M1 i c f) where
diff --git a/src/Distribution/Compiler.hs b/src/Distribution/Compiler.hs
--- a/src/Distribution/Compiler.hs
+++ b/src/Distribution/Compiler.hs
@@ -56,8 +56,10 @@
 import Distribution.Version (Version, mkVersion', nullVersion)
 
 import qualified Distribution.Compat.CharParsing as P
+import Distribution.Package (PackageName)
 import Distribution.Parsec (Parsec (..))
 import Distribution.Pretty (Pretty (..), prettyShow)
+import Distribution.Types.UnitId (UnitId)
 import qualified System.Info (compilerName, compilerVersion)
 import qualified Text.PrettyPrint as Disp
 
@@ -81,7 +83,7 @@
 
 instance Binary CompilerFlavor
 instance Structured CompilerFlavor
-instance NFData CompilerFlavor where rnf = genericRnf
+instance NFData CompilerFlavor
 
 knownCompilerFlavors :: [CompilerFlavor]
 knownCompilerFlavors =
@@ -160,7 +162,7 @@
       (a <> a')
       (b <> b')
 
-instance (Semigroup a, Monoid a) => Monoid (PerCompilerFlavor a) where
+instance Monoid a => Monoid (PerCompilerFlavor a) where
   mempty = PerCompilerFlavor mempty mempty
   mappend = (<>)
 
@@ -175,7 +177,7 @@
 
 instance Binary CompilerId
 instance Structured CompilerId
-instance NFData CompilerId where rnf = genericRnf
+instance NFData CompilerId
 
 instance Pretty CompilerId where
   pretty (CompilerId f v)
@@ -213,6 +215,12 @@
   -- ^ Supported language standards, if known.
   , compilerInfoExtensions :: Maybe [Extension]
   -- ^ Supported extensions, if known.
+  , compilerInfoWiredInUnitIds :: Maybe [(PackageName, UnitId)]
+  -- ^ 'UnitId's that the compiler doesn't support reinstalling.
+  -- 'Nothing' indicates that the compiler hasn't supplied this
+  -- information and that we should act pessimistically.
+  -- For instance, when using GHC plugins, one wants to use the exact same
+  -- version of the `ghc` package as the one the compiler was linked against.
   }
   deriving (Generic, Show, Read)
 
@@ -224,6 +232,7 @@
   deriving (Eq, Generic, Show, Read)
 
 instance Binary AbiTag
+instance NFData AbiTag
 instance Structured AbiTag
 
 instance Pretty AbiTag where
@@ -244,4 +253,4 @@
 --   compiler id's.
 unknownCompilerInfo :: CompilerId -> AbiTag -> CompilerInfo
 unknownCompilerInfo compilerId abiTag =
-  CompilerInfo compilerId abiTag (Just []) Nothing Nothing
+  CompilerInfo compilerId abiTag (Just []) Nothing Nothing Nothing
diff --git a/src/Distribution/FieldGrammar.hs b/src/Distribution/FieldGrammar.hs
--- a/src/Distribution/FieldGrammar.hs
+++ b/src/Distribution/FieldGrammar.hs
@@ -15,6 +15,7 @@
   , ParsecFieldGrammar
   , ParsecFieldGrammar'
   , parseFieldGrammar
+  , parseFieldGrammarCheckingStanzas
   , fieldGrammarKnownFieldList
   , PrettyFieldGrammar
   , PrettyFieldGrammar'
@@ -65,6 +66,20 @@
 data PS ann = PS (Fields ann) [Section ann] [[Section ann]]
 
 -- | Partition field list into field map and groups of sections.
+-- Groups sections between fields. This means that the following snippet contains
+-- two section groups:
+--
+-- @
+-- -- first group
+-- some-section
+--     field: value
+-- another-section
+--     field: value
+-- foo: bar
+-- -- second group
+-- yet-another-section
+--     field: value
+-- @
 partitionFields :: [Field ann] -> (Fields ann, [[Section ann]])
 partitionFields = finalize . foldl' f (PS mempty mempty mempty)
   where
diff --git a/src/Distribution/FieldGrammar/Class.hs b/src/Distribution/FieldGrammar/Class.hs
--- a/src/Distribution/FieldGrammar/Class.hs
+++ b/src/Distribution/FieldGrammar/Class.hs
@@ -1,5 +1,7 @@
 {-# LANGUAGE ConstraintKinds #-}
 {-# LANGUAGE FunctionalDependencies #-}
+{-# LANGUAGE KindSignatures #-}
+{-# LANGUAGE QuantifiedConstraints #-}
 {-# LANGUAGE RankNTypes #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE UndecidableSuperClasses #-}
@@ -13,6 +15,7 @@
   , defaultFreeTextFieldDefST
   ) where
 
+import Data.Kind (Constraint, Type)
 import Distribution.Compat.Lens
 import Distribution.Compat.Prelude
 import Prelude ()
@@ -23,14 +26,12 @@
 import Distribution.Fields.Field
 import Distribution.Utils.ShortText
 
--- | 'FieldGrammar' is parametrised by
+-- | @g@ is parametrised by
 --
 -- * @s@ which is a structure we are parsing. We need this to provide prettyprinter
 -- functionality
 --
 -- * @a@ type of the field.
---
--- /Note:/ We'd like to have @forall s. Applicative (f s)@ context.
 class
   ( c SpecVersion
   , c TestedWith
@@ -38,8 +39,9 @@
   , c Token
   , c Token'
   , c FilePathNT
+  , forall s. Applicative (g s)
   ) =>
-  FieldGrammar c g
+  FieldGrammar (c :: Type -> Constraint) (g :: Type -> Type -> Type)
     | g -> c
   where
   -- | Unfocus, zoom out, /blur/ 'FieldGrammar'.
@@ -209,7 +211,7 @@
 
 -- | Optional field with default value.
 optionalFieldDef
-  :: (FieldGrammar c g, Functor (g s), c (Identity a), Eq a)
+  :: (FieldGrammar c g, c (Identity a), Eq a)
   => FieldName
   -- ^ field name
   -> ALens' s a
@@ -231,7 +233,7 @@
 
 -- | Default implementation for 'freeTextFieldDefST'.
 defaultFreeTextFieldDefST
-  :: (Functor (g s), FieldGrammar c g)
+  :: FieldGrammar c g
   => FieldName
   -> ALens' s ShortText
   -- ^ lens into the field
diff --git a/src/Distribution/FieldGrammar/Parsec.hs b/src/Distribution/FieldGrammar/Parsec.hs
--- a/src/Distribution/FieldGrammar/Parsec.hs
+++ b/src/Distribution/FieldGrammar/Parsec.hs
@@ -1,6 +1,7 @@
 {-# LANGUAGE DeriveFunctor #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RankNTypes #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 
 -- | This module provides a 'FieldGrammarParser', one way to parse
@@ -54,6 +55,7 @@
 module Distribution.FieldGrammar.Parsec
   ( ParsecFieldGrammar
   , parseFieldGrammar
+  , parseFieldGrammarCheckingStanzas
   , fieldGrammarKnownFieldList
 
     -- * Auxiliary
@@ -64,6 +66,7 @@
   , runFieldParser
   , runFieldParser'
   , fieldLinesToStream
+  , freeTextIgnoreDotlineVers
   ) where
 
 import Distribution.Compat.Newtype
@@ -112,25 +115,36 @@
 data ParsecFieldGrammar s a = ParsecFG
   { fieldGrammarKnownFields :: !(Set FieldName)
   , fieldGrammarKnownPrefixes :: !(Set FieldName)
-  , fieldGrammarParser :: !(CabalSpecVersion -> Fields Position -> ParseResult a)
+  , fieldGrammarParser :: forall src. (CabalSpecVersion -> Fields Position -> ParseResult src a)
   }
   deriving (Functor)
 
-parseFieldGrammar :: CabalSpecVersion -> Fields Position -> ParsecFieldGrammar s a -> ParseResult a
+parseFieldGrammar :: CabalSpecVersion -> Fields Position -> ParsecFieldGrammar s a -> ParseResult src a
 parseFieldGrammar v fields grammar = do
-  for_ (Map.toList (Map.filterWithKey isUnknownField fields)) $ \(name, nfields) ->
+  for_ (Map.toList (Map.filterWithKey (isUnknownField grammar) fields)) $ \(name, nfields) ->
     for_ nfields $ \(MkNamelessField pos _) ->
       parseWarning pos PWTUnknownField $ "Unknown field: " ++ show name
   -- TODO: fields allowed in this section
 
   -- parse
   fieldGrammarParser grammar v fields
-  where
-    isUnknownField k _ =
-      not $
-        k `Set.member` fieldGrammarKnownFields grammar
-          || any (`BS.isPrefixOf` k) (fieldGrammarKnownPrefixes grammar)
 
+isUnknownField :: ParsecFieldGrammar s a -> FieldName -> [NamelessField Position] -> Bool
+isUnknownField grammar k _ =
+  not $
+    k `Set.member` fieldGrammarKnownFields grammar
+      || any (`BS.isPrefixOf` k) (fieldGrammarKnownPrefixes grammar)
+
+-- | Parse a ParsecFieldGrammar and check for fields that should be stanzas.
+parseFieldGrammarCheckingStanzas :: CabalSpecVersion -> Fields Position -> ParsecFieldGrammar s a -> Set BS.ByteString -> ParseResult src a
+parseFieldGrammarCheckingStanzas v fields grammar sections = do
+  for_ (Map.toList (Map.filterWithKey (isUnknownField grammar) fields)) $ \(name, nfields) ->
+    for_ nfields $ \(MkNamelessField pos _) ->
+      if name `Set.member` sections
+        then parseFailure pos $ "'" ++ fromUTF8BS name ++ "' is a stanza, not a field. Remove the trailing ':' to parse a stanza."
+        else parseWarning pos PWTUnknownField $ "Unknown field: " ++ show name
+  fieldGrammarParser grammar v fields
+
 fieldGrammarKnownFieldList :: ParsecFieldGrammar s a -> [FieldName]
 fieldGrammarKnownFieldList = Set.toList . fieldGrammarKnownFields
 
@@ -145,7 +159,7 @@
       (\v fields -> f'' v fields <*> x'' v fields)
   {-# INLINE (<*>) #-}
 
-warnMultipleSingularFields :: FieldName -> [NamelessField Position] -> ParseResult ()
+warnMultipleSingularFields :: FieldName -> [NamelessField Position] -> ParseResult src ()
 warnMultipleSingularFields _ [] = pure ()
 warnMultipleSingularFields fn (x : xs) = do
   let pos = namelessFieldAnn x
@@ -221,7 +235,7 @@
 
       parseOne v (MkNamelessField pos fls)
         | null fls = pure Nothing
-        | v >= CabalSpecV3_0 = pure (Just (fieldlinesToFreeText3 pos fls))
+        | v >= freeTextIgnoreDotlineVers = pure (Just (fieldlinesToFreeText3 pos fls))
         | otherwise = pure (Just (fieldlinesToFreeText fls))
 
   freeTextFieldDef fn _ = ParsecFG (Set.singleton fn) Set.empty parser
@@ -236,7 +250,7 @@
 
       parseOne v (MkNamelessField pos fls)
         | null fls = pure ""
-        | v >= CabalSpecV3_0 = pure (fieldlinesToFreeText3 pos fls)
+        | v >= freeTextIgnoreDotlineVers = pure (fieldlinesToFreeText3 pos fls)
         | otherwise = pure (fieldlinesToFreeText fls)
 
   -- freeTextFieldDefST = defaultFreeTextFieldDefST
@@ -254,7 +268,7 @@
         [] -> pure mempty
         [FieldLine _ bs] -> pure (ShortText.unsafeFromUTF8BS bs)
         _
-          | v >= CabalSpecV3_0 -> pure (ShortText.toShortText $ fieldlinesToFreeText3 pos fls)
+          | v >= freeTextIgnoreDotlineVers -> pure (ShortText.toShortText $ fieldlinesToFreeText3 pos fls)
           | otherwise -> pure (ShortText.toShortText $ fieldlinesToFreeText fls)
 
   monoidalFieldAla fn _pack _extract = ParsecFG (Set.singleton fn) Set.empty parser
@@ -349,7 +363,7 @@
 -- Parsec
 -------------------------------------------------------------------------------
 
-runFieldParser' :: [Position] -> ParsecParser a -> CabalSpecVersion -> FieldLineStream -> ParseResult a
+runFieldParser' :: [Position] -> ParsecParser a -> CabalSpecVersion -> FieldLineStream -> ParseResult src a
 runFieldParser' inputPoss p v str = case P.runParser p' [] "<field>" str of
   Right (pok, ws) -> do
     traverse_ (\(PWarning t pos w) -> parseWarning (mapPosition pos) t w) ws
@@ -378,7 +392,7 @@
         go n (Position row col : _) | n <= 0 = Position row (col + pcol - 1)
         go n (_ : ps) = go (n - 1) ps
 
-runFieldParser :: Position -> ParsecParser a -> CabalSpecVersion -> [FieldLine Position] -> ParseResult a
+runFieldParser :: Position -> ParsecParser a -> CabalSpecVersion -> [FieldLine Position] -> ParseResult src a
 runFieldParser pp p v ls = runFieldParser' poss p v (fieldLinesToStream ls)
   where
     poss = map (\(FieldLine pos _) -> pos) ls ++ [pp] -- add "default" position
@@ -397,6 +411,11 @@
       | otherwise = s
       where
         s = trim (fromUTF8BS bs)
+
+-- | Cabal version where we switch from the old free text parser that had
+-- special logic for "dotlines" to a new parser that has no such logic.
+freeTextIgnoreDotlineVers :: CabalSpecVersion
+freeTextIgnoreDotlineVers = CabalSpecV3_0
 
 fieldlinesToFreeText3 :: Position -> [FieldLine Position] -> String
 fieldlinesToFreeText3 _ [] = ""
diff --git a/src/Distribution/Fields.hs b/src/Distribution/Fields.hs
--- a/src/Distribution/Fields.hs
+++ b/src/Distribution/Fields.hs
@@ -25,11 +25,16 @@
     -- ** Warnings
   , PWarnType (..)
   , PWarning (..)
+  , PWarningWithSource (..)
+  , PSource (..)
   , showPWarning
+  , showPWarningWithSource
 
     -- ** Errors
   , PError (..)
+  , PErrorWithSource (..)
   , showPError
+  , showPErrorWithSource
 
     -- * Pretty printing
   , CommentPosition (..)
diff --git a/src/Distribution/Fields/ConfVar.hs b/src/Distribution/Fields/ConfVar.hs
--- a/src/Distribution/Fields/ConfVar.hs
+++ b/src/Distribution/Fields/ConfVar.hs
@@ -1,14 +1,17 @@
+{-# LANGUAGE LambdaCase #-}
 {-# LANGUAGE OverloadedStrings #-}
 
 module Distribution.Fields.ConfVar (parseConditionConfVar, parseConditionConfVarFromClause) where
 
+import Data.Functor ((<&>))
 import Distribution.Compat.CharParsing (char, integral)
 import Distribution.Compat.Prelude
-import Distribution.Fields.Field (Field (..), SectionArg (..))
+import Distribution.Fields.Field (Field (..), SectionArg (..), sectionArgAnn)
 import Distribution.Fields.ParseResult
 import Distribution.Fields.Parser (readFields)
-import Distribution.Parsec (Parsec (..), Position (..), runParsecParser)
+import Distribution.Parsec (Parsec (..), runParsecParser)
 import Distribution.Parsec.FieldLineStream (fieldLineStreamFromBS)
+import Distribution.Parsec.Position
 import Distribution.Types.Condition
 import Distribution.Types.ConfVar (ConfVar (..))
 import Distribution.Version
@@ -34,16 +37,16 @@
 
 parseConditionConfVarFromClause :: B8.ByteString -> Either P.ParseError (Condition ConfVar)
 parseConditionConfVarFromClause x =
-  readFields x >>= \r -> case r of
+  readFields x >>= \case
     (Section _ xs _ : _) -> P.runParser (parser <* P.eof) () "<condition>" xs
     _ -> Left $ P.newErrorMessage (P.Message "No fields in clause") (P.initialPos "<condition>")
 
 -- | Parse @'Condition' 'ConfVar'@ from section arguments provided by parsec
 -- based outline parser.
-parseConditionConfVar :: [SectionArg Position] -> ParseResult (Condition ConfVar)
-parseConditionConfVar args =
+parseConditionConfVar :: Position -> [SectionArg Position] -> ParseResult src (Condition ConfVar)
+parseConditionConfVar start_pos args =
   -- The name of the input file is irrelevant, as we reformat the error message.
-  case P.runParser (parser <* P.eof) () "<condition>" args of
+  case P.runParser (P.setPosition startPos >> parser <* P.eof) () "<condition>" args of
     Right x -> pure x
     Left err -> do
       -- Mangle the position to the actual one
@@ -59,7 +62,10 @@
               (P.errorMessages err)
       parseFailure epos msg
       pure $ Lit True
+  where
+    startPos = P.newPos "<condition>" (positionRow start_pos) (positionCol start_pos)
 
+-- | Parser for 'Condition' 'ConfVar'
 type Parser = P.Parsec [SectionArg Position] ()
 
 sepByNonEmpty :: Parser a -> Parser sep -> Parser (NonEmpty a)
@@ -68,8 +74,8 @@
 parser :: Parser (Condition ConfVar)
 parser = condOr
   where
-    condOr = sepByNonEmpty condAnd (oper "||") >>= return . foldl1 COr
-    condAnd = sepByNonEmpty cond (oper "&&") >>= return . foldl1 CAnd
+    condOr = sepByNonEmpty condAnd (oper "||") <&> foldl1 COr
+    condAnd = sepByNonEmpty cond (oper "&&") <&> foldl1 CAnd
     cond =
       P.choice
         [boolLiteral, parens condOr, notCond, osCond, archCond, flagCond, implCond]
@@ -120,11 +126,11 @@
           ]
 
     -- Number token can have many dots in it: SecArgNum (Position 65 15) "7.6.1"
-    identBS = tokenPrim $ \t -> case t of
+    identBS = tokenPrim $ \case
       SecArgName _ s -> Just s
       _ -> Nothing
 
-    boolLiteral' = tokenPrim $ \t -> case t of
+    boolLiteral' = tokenPrim $ \case
       SecArgName _ s
         | s == "True" -> Just True
         | s == "true" -> Just True
@@ -132,19 +138,23 @@
         | s == "false" -> Just False
       _ -> Nothing
 
-    string s = tokenPrim $ \t -> case t of
+    string :: B8.ByteString -> Parser ()
+    string s = tokenPrim $ \case
       SecArgName _ s' | s == s' -> Just ()
       _ -> Nothing
 
-    oper o = tokenPrim $ \t -> case t of
+    oper o = tokenPrim $ \case
       SecArgOther _ o' | o == o' -> Just ()
       _ -> Nothing
 
     parens = P.between (oper "(") (oper ")")
 
+    tokenPrim :: (SectionArg Position -> Maybe a) -> Parser a
     tokenPrim = P.tokenPrim prettySectionArg updatePosition
-    -- TODO: check where the errors are reported
-    updatePosition x _ _ = x
+    updatePosition :: P.SourcePos -> SectionArg Position -> [SectionArg Position] -> P.SourcePos
+    updatePosition x s _ =
+      let Position line col = sectionArgAnn s
+       in P.setSourceLine (P.setSourceColumn x col) line
     prettySectionArg = show
 
     fromParsec :: Parsec a => Parser a
diff --git a/src/Distribution/Fields/LexerMonad.hs b/src/Distribution/Fields/LexerMonad.hs
--- a/src/Distribution/Fields/LexerMonad.hs
+++ b/src/Distribution/Fields/LexerMonad.hs
@@ -149,7 +149,7 @@
 
 {-# INLINE thenLex #-}
 thenLex :: Lex a -> (a -> Lex b) -> Lex b
-(Lex m) `thenLex` k = Lex $ \s -> case m s of LexResult s' a -> (unLex (k a)) s'
+(Lex m) `thenLex` k = Lex $ \s -> case m s of LexResult s' a -> unLex (k a) s'
 
 setPos :: Position -> Lex ()
 setPos pos = Lex $ \s -> LexResult s{curPos = pos} ()
diff --git a/src/Distribution/Fields/ParseResult.hs b/src/Distribution/Fields/ParseResult.hs
--- a/src/Distribution/Fields/ParseResult.hs
+++ b/src/Distribution/Fields/ParseResult.hs
@@ -6,6 +6,8 @@
 module Distribution.Fields.ParseResult
   ( ParseResult
   , runParseResult
+  , PSource (..)
+  , CabalFileSource (..)
   , recoverWith
   , parseWarning
   , parseWarnings
@@ -15,131 +17,168 @@
   , getCabalSpecVersion
   , setCabalSpecVersion
   , withoutWarnings
+  , liftParseResult
+  , withSource
   ) where
 
 import Distribution.Compat.Prelude
-import Distribution.Parsec.Error (PError (..))
+import Distribution.Parsec.Error (PError (..), PErrorWithSource (..))
 import Distribution.Parsec.Position (Position (..), zeroPos)
-import Distribution.Parsec.Warning (PWarnType (..), PWarning (..))
+import Distribution.Parsec.Source
+import Distribution.Parsec.Warning
 import Distribution.Version (Version)
 
 -- | A monad with failure and accumulating errors and warnings.
-newtype ParseResult a = PR
+newtype ParseResult src a = PR
   { unPR
       :: forall r
-       . PRState
-      -> (PRState -> r) -- failure, but we were able to recover a new-style spec-version declaration
-      -> (PRState -> a -> r) -- success
+       . PRState src
+      -> PRContext src
+      -> (PRState src -> r) -- failure, but we were able to recover a new-style spec-version declaration
+      -> (PRState src -> a -> r) -- success
       -> r
   }
 
+data PRContext src = PRContext
+  { prContextSource :: PSource src
+  -- ^ The file we are parsing, if known. This field is parametric because we
+  -- use the same parser for cabal files and project files.
+  }
+
 -- Note: we have version here, as we could get any version.
-data PRState = PRState ![PWarning] ![PError] !(Maybe Version)
+data PRState src = PRState ![PWarningWithSource src] ![PErrorWithSource src] !(Maybe Version)
 
-emptyPRState :: PRState
+emptyPRState :: PRState src
 emptyPRState = PRState [] [] Nothing
 
 -- | Forget 'ParseResult's warnings.
 --
 -- @since 3.4.0.0
-withoutWarnings :: ParseResult a -> ParseResult a
-withoutWarnings m = PR $ \s failure success ->
-  unPR m s failure $ \ !s1 -> success (s1 `withWarningsOf` s)
+withoutWarnings :: ParseResult src a -> ParseResult src a
+withoutWarnings m = PR $ \s ctx failure success ->
+  unPR m s ctx failure $ \ !s1 -> success (s1 `withWarningsOf` s)
   where
     withWarningsOf (PRState _ e v) (PRState w _ _) = PRState w e v
 
 -- | Destruct a 'ParseResult' into the emitted warnings and either
 -- a successful value or
 -- list of errors and possibly recovered a spec-version declaration.
-runParseResult :: ParseResult a -> ([PWarning], Either (Maybe Version, NonEmpty PError) a)
-runParseResult pr = unPR pr emptyPRState failure success
+runParseResult :: ParseResult src a -> ([PWarningWithSource src], Either (Maybe Version, NonEmpty (PErrorWithSource src)) a)
+runParseResult pr = unPR pr emptyPRState initialCtx failure success
   where
-    failure (PRState warns [] v) = (warns, Left (v, PError zeroPos "panic" :| []))
-    failure (PRState warns (err : errs) v) = (warns, Left (v, err :| errs))
+    initialCtx = PRContext PUnknownSource
 
-    success (PRState warns [] _) x = (warns, Right x)
-    -- If there are any errors, don't return the result
-    success (PRState warns (err : errs) v) _ = (warns, Left (v, err :| errs))
+    failure (PRState warns errors v) = (sortWarns warns, Left (v, errors'))
+      where
+        errors' = case errors of
+          [] -> PErrorWithSource PUnknownSource (PError zeroPos "panic") :| []
+          err : errs -> err :| errs
 
-instance Functor ParseResult where
-  fmap f (PR pr) = PR $ \ !s failure success ->
-    pr s failure $ \ !s' a ->
+    success (PRState warns errors v) x = (sortWarns warns, result)
+      where
+        result = case errors of
+          [] -> Right x
+          -- If there are any errors, don't return the result
+          err : errs -> Left (v, err :| errs)
+
+    sortWarns = sortBy (comparing (pwarningPosition . pwarning))
+
+-- | Chain parsing operations that involve 'IO' actions.
+liftParseResult :: (a -> IO (ParseResult src b)) -> ParseResult src a -> IO (ParseResult src b)
+liftParseResult f pr = unPR pr emptyPRState initialCtx failure success
+  where
+    initialCtx = PRContext PUnknownSource
+
+    failure s = return $ PR $ \s' _ctx failure' _ -> failure' (concatPRState s s')
+    success s a = do
+      pr' <- f a
+      return $ PR $ \s' ctx failure' success' -> unPR pr' (concatPRState s s') ctx failure' success'
+    concatPRState (PRState warnings errors version) (PRState warnings' errors' version') =
+      PRState (warnings ++ warnings') (toList errors ++ errors') (version <|> version')
+
+withSource :: src -> ParseResult src a -> ParseResult src a
+withSource source (PR pr) = PR $ \s ctx failure success ->
+  pr s (ctx{prContextSource = PKnownSource source}) failure success
+
+instance Functor (ParseResult src) where
+  fmap f (PR pr) = PR $ \ !s fp failure success ->
+    pr s fp failure $ \ !s' a ->
       success s' (f a)
   {-# INLINE fmap #-}
 
-instance Applicative ParseResult where
-  pure x = PR $ \ !s _ success -> success s x
+instance Applicative (ParseResult src) where
+  pure x = PR $ \ !s _ _ success -> success s x
   {-# INLINE pure #-}
 
-  f <*> x = PR $ \ !s0 failure success ->
-    unPR f s0 failure $ \ !s1 f' ->
-      unPR x s1 failure $ \ !s2 x' ->
+  f <*> x = PR $ \ !s0 fp failure success ->
+    unPR f s0 fp failure $ \ !s1 f' ->
+      unPR x s1 fp failure $ \ !s2 x' ->
         success s2 (f' x')
   {-# INLINE (<*>) #-}
 
-  x *> y = PR $ \ !s0 failure success ->
-    unPR x s0 failure $ \ !s1 _ ->
-      unPR y s1 failure success
+  x *> y = PR $ \ !s0 fp failure success ->
+    unPR x s0 fp failure $ \ !s1 _ ->
+      unPR y s1 fp failure success
   {-# INLINE (*>) #-}
 
-  x <* y = PR $ \ !s0 failure success ->
-    unPR x s0 failure $ \ !s1 x' ->
-      unPR y s1 failure $ \ !s2 _ ->
+  x <* y = PR $ \ !s0 fp failure success ->
+    unPR x s0 fp failure $ \ !s1 x' ->
+      unPR y s1 fp failure $ \ !s2 _ ->
         success s2 x'
   {-# INLINE (<*) #-}
 
-instance Monad ParseResult where
+instance Monad (ParseResult src) where
   return = pure
   (>>) = (*>)
 
-  m >>= k = PR $ \ !s failure success ->
-    unPR m s failure $ \ !s' a ->
-      unPR (k a) s' failure success
+  m >>= k = PR $ \ !s fp failure success ->
+    unPR m s fp failure $ \ !s' a ->
+      unPR (k a) s' fp failure success
   {-# INLINE (>>=) #-}
 
 -- | "Recover" the parse result, so we can proceed parsing.
 -- 'runParseResult' will still result in 'Nothing', if there are recorded errors.
-recoverWith :: ParseResult a -> a -> ParseResult a
-recoverWith (PR pr) x = PR $ \ !s _failure success ->
-  pr s (\ !s' -> success s' x) success
+recoverWith :: ParseResult src a -> a -> ParseResult src a
+recoverWith (PR pr) x = PR $ \ !s fp _failure success ->
+  pr s fp (\ !s' -> success s' x) success
 
 -- | Set cabal spec version.
-setCabalSpecVersion :: Maybe Version -> ParseResult ()
-setCabalSpecVersion v = PR $ \(PRState warns errs _) _failure success ->
+setCabalSpecVersion :: Maybe Version -> ParseResult src ()
+setCabalSpecVersion v = PR $ \(PRState warns errs _) _fp _failure success ->
   success (PRState warns errs v) ()
 
 -- | Get cabal spec version.
-getCabalSpecVersion :: ParseResult (Maybe Version)
-getCabalSpecVersion = PR $ \s@(PRState _ _ v) _failure success ->
+getCabalSpecVersion :: ParseResult src (Maybe Version)
+getCabalSpecVersion = PR $ \s@(PRState _ _ v) _fp _failure success ->
   success s v
 
 -- | Add a warning. This doesn't fail the parsing process.
-parseWarning :: Position -> PWarnType -> String -> ParseResult ()
-parseWarning pos t msg = PR $ \(PRState warns errs v) _failure success ->
-  success (PRState (PWarning t pos msg : warns) errs v) ()
+parseWarning :: Position -> PWarnType -> String -> ParseResult src ()
+parseWarning pos t msg = PR $ \(PRState warns errs v) ctx _failure success ->
+  success (PRState (PWarningWithSource (prContextSource ctx) (PWarning t pos msg) : warns) errs v) ()
 
 -- | Add multiple warnings at once.
-parseWarnings :: [PWarning] -> ParseResult ()
-parseWarnings newWarns = PR $ \(PRState warns errs v) _failure success ->
-  success (PRState (newWarns ++ warns) errs v) ()
+parseWarnings :: [PWarning] -> ParseResult src ()
+parseWarnings newWarns = PR $ \(PRState warns errs v) ctx _failure success ->
+  success (PRState (map (PWarningWithSource (prContextSource ctx)) newWarns ++ warns) errs v) ()
 
 -- | Add an error, but not fail the parser yet.
 --
 -- For fatal failure use 'parseFatalFailure'
-parseFailure :: Position -> String -> ParseResult ()
-parseFailure pos msg = PR $ \(PRState warns errs v) _failure success ->
-  success (PRState warns (PError pos msg : errs) v) ()
+parseFailure :: Position -> String -> ParseResult src ()
+parseFailure pos msg = PR $ \(PRState warns errs v) ctx _failure success ->
+  success (PRState warns (PErrorWithSource (prContextSource ctx) (PError pos msg) : errs) v) ()
 
 -- | Add an fatal error.
-parseFatalFailure :: Position -> String -> ParseResult a
-parseFatalFailure pos msg = PR $ \(PRState warns errs v) failure _success ->
-  failure (PRState warns (PError pos msg : errs) v)
+parseFatalFailure :: Position -> String -> ParseResult src a
+parseFatalFailure pos msg = PR $ \(PRState warns errs v) ctx failure _success ->
+  failure (PRState warns (PErrorWithSource (prContextSource ctx) (PError pos msg) : errs) v)
 
 -- | A 'mzero'.
-parseFatalFailure' :: ParseResult a
+parseFatalFailure' :: ParseResult src a
 parseFatalFailure' = PR pr
   where
-    pr (PRState warns [] v) failure _success = failure (PRState warns [err] v)
-    pr s failure _success = failure s
+    pr (PRState warns [] v) _ctx failure _success = failure (PRState warns [err] v)
+    pr s _ctx failure _success = failure s
 
-    err = PError zeroPos "Unknown fatal error"
+    err = PErrorWithSource PUnknownSource (PError zeroPos "Unknown fatal error")
diff --git a/src/Distribution/Fields/Parser.hs b/src/Distribution/Fields/Parser.hs
--- a/src/Distribution/Fields/Parser.hs
+++ b/src/Distribution/Fields/Parser.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE CPP #-}
+{-# LANGUAGE LambdaCase #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE OverloadedStrings #-}
 
@@ -124,15 +125,15 @@
 tokColon, tokCloseBrace :: Parser ()
 tokOpenBrace :: Parser Position
 tokFieldLine :: Parser (FieldLine Position)
-tokSym = getTokenWithPos $ \t -> case t of L pos (TokSym x) -> Just (mkName pos x); _ -> Nothing
-tokSym' = getTokenWithPos $ \t -> case t of L pos (TokSym x) -> Just (SecArgName pos x); _ -> Nothing
-tokStr = getTokenWithPos $ \t -> case t of L pos (TokStr x) -> Just (SecArgStr pos x); _ -> Nothing
-tokOther = getTokenWithPos $ \t -> case t of L pos (TokOther x) -> Just (SecArgOther pos x); _ -> Nothing
-tokIndent = getToken $ \t -> case t of Indent x -> Just x; _ -> Nothing
-tokColon = getToken $ \t -> case t of Colon -> Just (); _ -> Nothing
-tokOpenBrace = getTokenWithPos $ \t -> case t of L pos OpenBrace -> Just pos; _ -> Nothing
-tokCloseBrace = getToken $ \t -> case t of CloseBrace -> Just (); _ -> Nothing
-tokFieldLine = getTokenWithPos $ \t -> case t of L pos (TokFieldLine s) -> Just (FieldLine pos s); _ -> Nothing
+tokSym = getTokenWithPos $ \case L pos (TokSym x) -> Just (mkName pos x); _ -> Nothing
+tokSym' = getTokenWithPos $ \case L pos (TokSym x) -> Just (SecArgName pos x); _ -> Nothing
+tokStr = getTokenWithPos $ \case L pos (TokStr x) -> Just (SecArgStr pos x); _ -> Nothing
+tokOther = getTokenWithPos $ \case L pos (TokOther x) -> Just (SecArgOther pos x); _ -> Nothing
+tokIndent = getToken $ \case Indent x -> Just x; _ -> Nothing
+tokColon = getToken $ \case Colon -> Just (); _ -> Nothing
+tokOpenBrace = getTokenWithPos $ \case L pos OpenBrace -> Just pos; _ -> Nothing
+tokCloseBrace = getToken $ \case CloseBrace -> Just (); _ -> Nothing
+tokFieldLine = getTokenWithPos $ \case L pos (TokFieldLine s) -> Just (FieldLine pos s); _ -> Nothing
 
 colon, openBrace, closeBrace :: Parser ()
 sectionArg :: Parser (SectionArg Position)
@@ -321,7 +322,7 @@
       closeBrace
       return elems
   )
-    <|> (elements ilevel)
+    <|> elements ilevel
 
 -- The body of a field, using either inline style or braces.
 --
diff --git a/src/Distribution/InstalledPackageInfo.hs b/src/Distribution/InstalledPackageInfo.hs
--- a/src/Distribution/InstalledPackageInfo.hs
+++ b/src/Distribution/InstalledPackageInfo.hs
@@ -47,9 +47,11 @@
 import Distribution.CabalSpecVersion (cabalSpecLatest)
 import Distribution.FieldGrammar
 import Distribution.FieldGrammar.FieldDescrs
+import Distribution.Fields.ParseResult
 import Distribution.Fields.Pretty
 import Distribution.ModuleName
 import Distribution.Package hiding (installedUnitId)
+import Distribution.Parsec.Source
 import Distribution.Types.ComponentName
 import Distribution.Utils.Generic (toUTF8BS)
 
@@ -98,18 +100,18 @@
 parseInstalledPackageInfo s = case P.readFields s of
   Left err -> Left (show err :| [])
   Right fs -> case partitionFields fs of
-    (fs', _) -> case P.runParseResult $ parseFieldGrammar cabalSpecLatest fs' ipiFieldGrammar of
+    (fs', _) -> case P.runParseResult $ withSource PInstalledPackageInfo $ parseFieldGrammar cabalSpecLatest fs' ipiFieldGrammar of
       (ws, Right x) -> x `deepseq` Right (ws', x)
         where
           ws' =
-            [ P.showPWarning "" w
-            | w@(P.PWarning wt _ _) <- ws
+            [ P.showPWarningWithSource (fmap renderInstalledPackageInfoSource w)
+            | w@(P.PWarningWithSource _ (P.PWarning wt _ _)) <- ws
             , -- filter out warnings about experimental features
             wt /= P.PWTExperimental
             ]
       (_, Left (_, errs)) -> Left errs'
         where
-          errs' = fmap (P.showPError "") errs
+          errs' = fmap (P.showPErrorWithSource . fmap renderInstalledPackageInfoSource) errs
 
 -- -----------------------------------------------------------------------------
 -- Pretty-printing
diff --git a/src/Distribution/License.hs b/src/Distribution/License.hs
--- a/src/Distribution/License.hs
+++ b/src/Distribution/License.hs
@@ -115,7 +115,7 @@
 
 instance Binary License
 instance Structured License
-instance NFData License where rnf = genericRnf
+instance NFData License
 
 -- | The list of all currently recognised licenses.
 knownLicenses :: [License]
diff --git a/src/Distribution/ModuleName.hs b/src/Distribution/ModuleName.hs
--- a/src/Distribution/ModuleName.hs
+++ b/src/Distribution/ModuleName.hs
@@ -116,7 +116,7 @@
 components mn = split (unModuleName mn)
   where
     split cs = case break (== '.') cs of
-      (chunk, []) -> chunk : []
+      (chunk, []) -> [chunk]
       (chunk, _ : rest) -> chunk : split rest
 
 -- | Convert a module name to a file path, but without any file extension.
diff --git a/src/Distribution/PackageDescription/Configuration.hs b/src/Distribution/PackageDescription/Configuration.hs
--- a/src/Distribution/PackageDescription/Configuration.hs
+++ b/src/Distribution/PackageDescription/Configuration.hs
@@ -28,17 +28,18 @@
   , mapCondTree
   , mapTreeData
   , mapTreeConds
-  , mapTreeConstrs
   , transformAllBuildInfos
   , transformAllBuildDepends
   , transformAllBuildDependsN
   , simplifyWithSysParams
   ) where
 
+import Data.Functor ((<&>))
 import Distribution.Compat.Prelude
 import Prelude ()
 
 -- lens
+import qualified Distribution.Compat.Lens as L
 import qualified Distribution.Types.BuildInfo.Lens as L
 import qualified Distribution.Types.GenericPackageDescription.Lens as L
 import qualified Distribution.Types.PackageDescription.Lens as L
@@ -64,6 +65,7 @@
 import Distribution.Version
 
 import Data.Tree (Tree (Node))
+import Data.Tuple
 
 ------------------------------------------------------------------------------
 
@@ -112,8 +114,8 @@
 parseCondition :: CabalParsing m => m (Condition ConfVar)
 parseCondition = condOr
   where
-    condOr = sepByNonEmpty condAnd (oper "||") >>= return . foldl1 COr
-    condAnd = sepByNonEmpty cond (oper "&&") >>= return . foldl1 CAnd
+    condOr = sepByNonEmpty condAnd (oper "||") <&> foldl1 COr
+    condAnd = sepByNonEmpty cond (oper "&&") <&> foldl1 CAnd
     -- TODO: try?
     cond =
       sp
@@ -126,11 +128,11 @@
               <|> implCond
            )
     inparens = between (P.char '(' >> sp) (sp >> P.char ')' >> sp)
-    notCond = P.char '!' >> sp >> cond >>= return . CNot
-    osCond = string "os" >> sp >> inparens osIdent >>= return . Var
-    archCond = string "arch" >> sp >> inparens archIdent >>= return . Var
-    flagCond = string "flag" >> sp >> inparens flagIdent >>= return . Var
-    implCond = string "impl" >> sp >> inparens implIdent >>= return . Var
+    notCond = (P.char '!' >> sp >> cond) <&> CNot
+    osCond = (string "os" >> sp >> inparens osIdent) <&> Var
+    archCond = (string "arch" >> sp >> inparens archIdent) <&> Var
+    flagCond = (string "flag" >> sp >> inparens flagIdent) <&> Var
+    implCond = (string "impl" >> sp >> inparens implIdent) <&> Var
     boolLiteral = fmap Lit parsec
     archIdent = fmap Arch parsec
     osIdent = fmap OS parsec
@@ -192,7 +194,7 @@
   -- ^ Compiler information
   -> [PackageVersionConstraint]
   -- ^ Additional constraints
-  -> [CondTree ConfVar [Dependency] PDTagged]
+  -> [CondTree ConfVar PDTagged]
   -> ([Dependency] -> DepTestRslt)
   -- ^ Dependency test function.
   -> Either [MissingDependency] (TargetSet PDTagged, FlagAssignment)
@@ -203,10 +205,10 @@
   where
     -- simplify trees by (partially) evaluating all conditions and converting
     -- dependencies to dependency maps.
-    simplifiedTrees :: [CondTree FlagName DependencyMap PDTagged]
+    simplifiedTrees :: [CondTree FlagName (PDTagged, DependencyMap)]
     simplifiedTrees =
       map
-        ( mapTreeConstrs toDepMap -- convert to maps
+        ( mapTreeData (\x -> (x, toDepMap $ L.view L.targetBuildDepends x))
             . addBuildableConditionPDTagged
             . mapTreeConds (fst . simplifyWithSysParams os arch impl)
         )
@@ -226,6 +228,7 @@
               flip map simplifiedTrees $
                 -- apply additional constraints to all dependencies
                 first (`constrainBy` constrs)
+                  . swap
                   . simplifyCondTree (env flags)
           deps = overallDependencies enabled targetSet
        in case checkDeps (fromDepMap deps) of
@@ -262,15 +265,15 @@
 -- can determine that Buildable is always True, it returns the input unchanged.
 -- If Buildable is always False, it returns the empty 'CondTree'.
 addBuildableCondition
-  :: (Eq v, Monoid a, Monoid c)
+  :: (Eq v, Monoid a)
   => (a -> BuildInfo)
-  -> CondTree v c a
-  -> CondTree v c a
+  -> CondTree v a
+  -> CondTree v a
 addBuildableCondition getInfo t =
   case extractCondition (buildable . getInfo) t of
     Lit True -> t
-    Lit False -> CondNode mempty mempty []
-    c -> CondNode mempty mempty [condIfThen c t]
+    Lit False -> CondNode mempty []
+    c -> CondNode mempty [condIfThen c t]
 
 -- | This is a special version of 'addBuildableCondition' for the 'PDTagged'
 -- type.
@@ -282,16 +285,18 @@
 --
 -- See <https://github.com/haskell/cabal/pull/4094> for more details.
 addBuildableConditionPDTagged
-  :: (Eq v, Monoid c)
-  => CondTree v c PDTagged
-  -> CondTree v c PDTagged
+  :: Eq v
+  => CondTree v PDTagged
+  -> CondTree v PDTagged
 addBuildableConditionPDTagged t =
   case extractCondition (buildable . getInfo) t of
     Lit True -> t
-    Lit False -> deleteConstraints t
-    c -> CondNode mempty mempty [condIfThenElse c t (deleteConstraints t)]
+    Lit False -> mapTreeData deleteConstraints t
+    c -> CondNode mempty [condIfThenElse c t (mapTreeData deleteConstraints t)]
   where
-    deleteConstraints = mapTreeConstrs (const mempty)
+    deleteConstraints (Lib lib) = Lib (L.set L.targetBuildDepends mempty lib)
+    deleteConstraints (SubComp unqualName comp) = SubComp unqualName (L.set L.targetBuildDepends mempty comp)
+    deleteConstraints PDNull = PDNull
 
     getInfo :: PDTagged -> BuildInfo
     getInfo (Lib l) = libBuildInfo l
@@ -326,10 +331,10 @@
     , extractCondition (f . benchmarkBuildInfo) . snd <$> condBenchmarks gpkg
     ]
 
-freeVars :: CondTree ConfVar c a -> [FlagName]
+freeVars :: CondTree ConfVar a -> [FlagName]
 freeVars t = [f | PackageFlag f <- freeVars' t]
   where
-    freeVars' (CondNode _ _ ifs) = concatMap compfv ifs
+    freeVars' (CondNode _ ifs) = concatMap compfv ifs
     compfv (CondBranch c ct mct) = condfv c ++ freeVars' ct ++ maybe [] freeVars' mct
     condfv c = case c of
       Var v -> [v]
@@ -406,6 +411,12 @@
   SubComp n x <> SubComp n' x' | n == n' = SubComp n (x <> x')
   _ <> _ = cabalBug "Cannot combine incompatible tags"
 
+instance L.HasBuildInfo PDTagged where
+  buildInfo f x = case x of
+    Lib lib -> Lib <$> L.buildInfo f lib
+    SubComp name comp -> SubComp name <$> L.buildInfo f comp
+    PDNull -> PDNull <$ f mempty
+
 -- | Create a package description with all configurations resolved.
 --
 -- This function takes a `GenericPackageDescription` and several environment
@@ -554,36 +565,47 @@
     where
       mlib = f <$> mlib0
         where
-          f lib = (libFillInDefaults . fst . ignoreConditions $ lib){libName = LMainLibName}
+          f :: CondTree ConfVar Library -> Library
+          f lib = (libFillInDefaults . ignoreConditions $ lib){libName = LMainLibName}
       sub_libs = flattenLib <$> sub_libs0
       flibs = flattenFLib <$> flibs0
       exes = flattenExe <$> exes0
       tests = flattenTst <$> tests0
       bms = flattenBm <$> bms0
+
+      flattenLib :: (UnqualComponentName, CondTree ConfVar Library) -> Library
       flattenLib (n, t) =
         libFillInDefaults $
-          (fst $ ignoreConditions t)
+          (ignoreConditions t)
             { libName = LSubLibName n
             , libExposed = False
             }
+
+      flattenFLib :: (UnqualComponentName, CondTree ConfVar ForeignLib) -> ForeignLib
       flattenFLib (n, t) =
         flibFillInDefaults $
-          (fst $ ignoreConditions t)
+          (ignoreConditions t)
             { foreignLibName = n
             }
+
+      flattenExe :: (UnqualComponentName, CondTree ConfVar Executable) -> Executable
       flattenExe (n, t) =
         exeFillInDefaults $
-          (fst $ ignoreConditions t)
+          (ignoreConditions t)
             { exeName = n
             }
+
+      flattenTst :: (UnqualComponentName, CondTree ConfVar TestSuite) -> TestSuite
       flattenTst (n, t) =
         testFillInDefaults $
-          (fst $ ignoreConditions t)
+          (ignoreConditions t)
             { testName = n
             }
+
+      flattenBm :: (UnqualComponentName, CondTree ConfVar Benchmark) -> Benchmark
       flattenBm (n, t) =
         benchFillInDefaults $
-          (fst $ ignoreConditions t)
+          (ignoreConditions t)
             { benchmarkName = n
             }
 
@@ -640,8 +662,6 @@
 transformAllBuildDepends f =
   over (L.traverseBuildInfos . L.targetBuildDepends . traverse) f
     . over (L.packageDescription . L.setupBuildInfo . traverse . L.setupDepends . traverse) f
-    -- cannot be point-free as normal because of higher rank
-    . over (\f' -> L.allCondTrees $ traverseCondTreeC f') (map f)
 
 -- | Walk a 'GenericPackageDescription' and apply @f@ to all nested
 -- @build-depends@ fields.
@@ -652,5 +672,3 @@
 transformAllBuildDependsN f =
   over (L.traverseBuildInfos . L.targetBuildDepends) f
     . over (L.packageDescription . L.setupBuildInfo . traverse . L.setupDepends) f
-    -- cannot be point-free as normal because of higher rank
-    . over (\f' -> L.allCondTrees $ traverseCondTreeC f') f
diff --git a/src/Distribution/PackageDescription/FieldGrammar.hs b/src/Distribution/PackageDescription/FieldGrammar.hs
--- a/src/Distribution/PackageDescription/FieldGrammar.hs
+++ b/src/Distribution/PackageDescription/FieldGrammar.hs
@@ -3,7 +3,6 @@
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE QuantifiedConstraints #-}
 
 -- | 'GenericPackageDescription' Field descriptions
 module Distribution.PackageDescription.FieldGrammar
@@ -89,6 +88,7 @@
 import qualified Distribution.Compat.CharParsing as P
 import qualified Distribution.SPDX as SPDX
 import qualified Distribution.Types.Lens as L
+import Distribution.Utils.Generic (ordNub)
 
 -------------------------------------------------------------------------------
 -- PackageDescription
@@ -96,13 +96,12 @@
 
 packageDescriptionFieldGrammar
   :: ( FieldGrammar c g
-     , Applicative (g PackageDescription)
-     , Applicative (g PackageIdentifier)
      , c (Identity BuildType)
      , c (Identity PackageName)
      , c (Identity Version)
-     , forall from to. c (List FSep (RelativePathNT from to) (RelativePath from to))
-     , forall from to. c (List VCat (RelativePathNT from to) (RelativePath from to))
+     , c (List FSep (RelativePathNT Pkg File) (SymbolicPathX OnlyRelative Pkg File))
+     , c (List VCat (RelativePathNT DataDir File) (RelativePath DataDir File))
+     , c (List VCat (RelativePathNT Pkg File) (RelativePath Pkg File))
      , c (List FSep TestedWith (CompilerFlavor, VersionRange))
      , c CompatLicenseFile
      , c CompatDataDir
@@ -166,8 +165,6 @@
 
 libraryFieldGrammar
   :: ( FieldGrammar c g
-     , Applicative (g Library)
-     , Applicative (g BuildInfo)
      , c (Identity LibraryVisibility)
      , c (List CommaFSep (Identity ExeDependency) ExeDependency)
      , c (List CommaFSep (Identity LegacyExeDependency) LegacyExeDependency)
@@ -177,12 +174,16 @@
      , c (List CommaVCat (Identity ModuleReexport) ModuleReexport)
      , c (List FSep (MQuoted Extension) Extension)
      , c (List FSep (MQuoted Language) Language)
-     , c (List FSep Token String)
      , c (List NoCommaFSep Token' String)
      , c (List VCat (MQuoted ModuleName) ModuleName)
-     , forall from to. c (List FSep (SymbolicPathNT from to) (SymbolicPath from to))
-     , forall from to. c (List FSep (RelativePathNT from to) (RelativePath from to))
-     , forall from to. c (List VCat (SymbolicPathNT from to) (SymbolicPath from to))
+     , c (List FSep (SymbolicPathNT Pkg (Dir Framework)) (SymbolicPath Pkg (Dir Framework)))
+     , c (List FSep (SymbolicPathNT Pkg (Dir Lib)) (SymbolicPath Pkg (Dir Lib)))
+     , c (List FSep (SymbolicPathNT Pkg (Dir Source)) (SymbolicPath Pkg (Dir Source)))
+     , c (List FSep (SymbolicPathNT Pkg (Dir Include)) (SymbolicPath Pkg (Dir Include)))
+     , c (List FSep (SymbolicPathNT Include File) (SymbolicPath Include File))
+     , c (List FSep (RelativePathNT Framework File) (RelativePath Framework File))
+     , c (List FSep (RelativePathNT Include File) (RelativePath Include File))
+     , c (List VCat (SymbolicPathNT Pkg File) (SymbolicPath Pkg File))
      , c (List VCat Token String)
      , c (MQuoted Language)
      )
@@ -214,8 +215,6 @@
 
 foreignLibFieldGrammar
   :: ( FieldGrammar c g
-     , Applicative (g ForeignLib)
-     , Applicative (g BuildInfo)
      , c (Identity ForeignLibType)
      , c (Identity LibVersionInfo)
      , c (Identity Version)
@@ -227,10 +226,15 @@
      , c (List FSep (Identity ForeignLibOption) ForeignLibOption)
      , c (List FSep (MQuoted Extension) Extension)
      , c (List FSep (MQuoted Language) Language)
-     , c (List FSep Token String)
-     , forall from to. c (List FSep (SymbolicPathNT from to) (SymbolicPath from to))
-     , forall from to. c (List FSep (RelativePathNT from to) (RelativePath from to))
-     , forall from to. c (List VCat (SymbolicPathNT from to) (SymbolicPath from to))
+     , c (List FSep (SymbolicPathNT Pkg (Dir Framework)) (SymbolicPath Pkg (Dir Framework)))
+     , c (List FSep (SymbolicPathNT Pkg (Dir Lib)) (SymbolicPath Pkg (Dir Lib)))
+     , c (List FSep (SymbolicPathNT Pkg (Dir Source)) (SymbolicPath Pkg (Dir Source)))
+     , c (List FSep (SymbolicPathNT Pkg (Dir Include)) (SymbolicPath Pkg (Dir Include)))
+     , c (List FSep (SymbolicPathNT Include File) (SymbolicPath Include File))
+     , c (List FSep (RelativePathNT Framework File) (RelativePath Framework File))
+     , c (List FSep (RelativePathNT Include File) (RelativePath Include File))
+     , c (List FSep (RelativePathNT Source File) (RelativePath Source File))
+     , c (List VCat (SymbolicPathNT Pkg File) (SymbolicPath Pkg File))
      , c (List NoCommaFSep Token' String)
      , c (List VCat (MQuoted ModuleName) ModuleName)
      , c (List VCat Token String)
@@ -255,8 +259,6 @@
 
 executableFieldGrammar
   :: ( FieldGrammar c g
-     , Applicative (g Executable)
-     , Applicative (g BuildInfo)
      , c (Identity ExecutableScope)
      , c (List CommaFSep (Identity ExeDependency) ExeDependency)
      , c (List CommaFSep (Identity LegacyExeDependency) LegacyExeDependency)
@@ -265,14 +267,15 @@
      , c (List CommaVCat (Identity Mixin) Mixin)
      , c (List FSep (MQuoted Extension) Extension)
      , c (List FSep (MQuoted Language) Language)
-     , c (List FSep Token String)
-     , forall from to. c (List FSep (SymbolicPathNT from to) (SymbolicPath from to))
-     , forall from to. c (List FSep (RelativePathNT from to) (RelativePath from to))
-     , forall from to. c (List FSep (SymbolicPathNT from to) (SymbolicPath from to))
-     , forall from to. c (List FSep (RelativePathNT from to) (RelativePath from to))
-     , forall from to. c (List VCat (SymbolicPathNT from to) (SymbolicPath from to))
-     , forall from to. c (SymbolicPathNT from to)
-     , forall from to. c (RelativePathNT from to)
+     , c (List FSep (SymbolicPathNT Pkg (Dir Framework)) (SymbolicPath Pkg (Dir Framework)))
+     , c (List FSep (SymbolicPathNT Pkg (Dir Lib)) (SymbolicPath Pkg (Dir Lib)))
+     , c (List FSep (SymbolicPathNT Pkg (Dir Source)) (SymbolicPath Pkg (Dir Source)))
+     , c (List FSep (SymbolicPathNT Pkg (Dir Include)) (SymbolicPath Pkg (Dir Include)))
+     , c (List FSep (SymbolicPathNT Include File) (SymbolicPath Include File))
+     , c (List FSep (RelativePathNT Framework File) (RelativePath Framework File))
+     , c (List FSep (RelativePathNT Include File) (RelativePath Include File))
+     , c (List VCat (SymbolicPathNT Pkg File) (SymbolicPath Pkg File))
+     , c (RelativePathNT Source File)
      , c (List NoCommaFSep Token' String)
      , c (List VCat (MQuoted ModuleName) ModuleName)
      , c (List VCat Token String)
@@ -329,8 +332,6 @@
 
 testSuiteFieldGrammar
   :: ( FieldGrammar c g
-     , Applicative (g TestSuiteStanza)
-     , Applicative (g BuildInfo)
      , c (Identity ModuleName)
      , c (Identity TestType)
      , c (List CommaFSep (Identity ExeDependency) ExeDependency)
@@ -341,13 +342,17 @@
      , c (List CommaVCat (Identity Mixin) Mixin)
      , c (List FSep (MQuoted Extension) Extension)
      , c (List FSep (MQuoted Language) Language)
-     , c (List FSep Token String)
      , c (List NoCommaFSep Token' String)
      , c (List VCat (MQuoted ModuleName) ModuleName)
-     , forall from to. c (List FSep (SymbolicPathNT from to) (SymbolicPath from to))
-     , forall from to. c (List FSep (RelativePathNT from to) (RelativePath from to))
-     , forall from to. c (List VCat (SymbolicPathNT from to) (SymbolicPath from to))
-     , forall from to. c (RelativePathNT from to)
+     , c (List FSep (SymbolicPathNT Pkg (Dir Framework)) (SymbolicPath Pkg (Dir Framework)))
+     , c (List FSep (SymbolicPathNT Pkg (Dir Lib)) (SymbolicPath Pkg (Dir Lib)))
+     , c (List FSep (SymbolicPathNT Pkg (Dir Source)) (SymbolicPath Pkg (Dir Source)))
+     , c (List FSep (SymbolicPathNT Pkg (Dir Include)) (SymbolicPath Pkg (Dir Include)))
+     , c (List FSep (SymbolicPathNT Include File) (SymbolicPath Include File))
+     , c (List FSep (RelativePathNT Framework File) (RelativePath Framework File))
+     , c (List FSep (RelativePathNT Include File) (RelativePath Include File))
+     , c (List VCat (SymbolicPathNT Pkg File) (SymbolicPath Pkg File))
+     , c (RelativePathNT Source File)
      , c (List VCat Token String)
      , c (MQuoted Language)
      )
@@ -361,7 +366,7 @@
     <*> monoidalFieldAla "code-generators" (alaList' CommaFSep Token) testStanzaCodeGenerators
       ^^^ availableSince CabalSpecV3_8 []
 
-validateTestSuite :: CabalSpecVersion -> Position -> TestSuiteStanza -> ParseResult TestSuite
+validateTestSuite :: CabalSpecVersion -> Position -> TestSuiteStanza -> ParseResult src TestSuite
 validateTestSuite cabalSpecVersion pos stanza = case testSuiteType of
   Nothing -> pure basicTestSuite
   Just tt@(TestTypeUnknown _ _) ->
@@ -474,8 +479,6 @@
 
 benchmarkFieldGrammar
   :: ( FieldGrammar c g
-     , Applicative (g BenchmarkStanza)
-     , Applicative (g BuildInfo)
      , c (Identity BenchmarkType)
      , c (Identity ModuleName)
      , c (List CommaFSep (Identity ExeDependency) ExeDependency)
@@ -485,13 +488,17 @@
      , c (List CommaVCat (Identity Mixin) Mixin)
      , c (List FSep (MQuoted Extension) Extension)
      , c (List FSep (MQuoted Language) Language)
-     , c (List FSep Token String)
      , c (List NoCommaFSep Token' String)
      , c (List VCat (MQuoted ModuleName) ModuleName)
-     , forall from to. c (List FSep (SymbolicPathNT from to) (SymbolicPath from to))
-     , forall from to. c (List FSep (RelativePathNT from to) (RelativePath from to))
-     , forall from to. c (List VCat (SymbolicPathNT from to) (SymbolicPath from to))
-     , forall from to. c (RelativePathNT from to)
+     , c (List FSep (SymbolicPathNT Pkg (Dir Framework)) (SymbolicPath Pkg (Dir Framework)))
+     , c (List FSep (SymbolicPathNT Pkg (Dir Lib)) (SymbolicPath Pkg (Dir Lib)))
+     , c (List FSep (SymbolicPathNT Pkg (Dir Source)) (SymbolicPath Pkg (Dir Source)))
+     , c (List FSep (SymbolicPathNT Pkg (Dir Include)) (SymbolicPath Pkg (Dir Include)))
+     , c (List FSep (SymbolicPathNT Include File) (SymbolicPath Include File))
+     , c (List FSep (RelativePathNT Framework File) (RelativePath Framework File))
+     , c (List FSep (RelativePathNT Include File) (RelativePath Include File))
+     , c (List VCat (SymbolicPathNT Pkg File) (SymbolicPath Pkg File))
+     , c (RelativePathNT Source File)
      , c (List VCat Token String)
      , c (MQuoted Language)
      )
@@ -503,7 +510,7 @@
     <*> optionalField "benchmark-module" benchmarkStanzaBenchmarkModule
     <*> blurFieldGrammar benchmarkStanzaBuildInfo buildInfoFieldGrammar
 
-validateBenchmark :: CabalSpecVersion -> Position -> BenchmarkStanza -> ParseResult Benchmark
+validateBenchmark :: CabalSpecVersion -> Position -> BenchmarkStanza -> ParseResult src Benchmark
 validateBenchmark cabalSpecVersion pos stanza = case benchmarkStanzaType of
   Nothing ->
     pure
@@ -579,7 +586,6 @@
 
 buildInfoFieldGrammar
   :: ( FieldGrammar c g
-     , Applicative (g BuildInfo)
      , c (List CommaFSep (Identity ExeDependency) ExeDependency)
      , c (List CommaFSep (Identity LegacyExeDependency) LegacyExeDependency)
      , c (List CommaFSep (Identity PkgconfigDependency) PkgconfigDependency)
@@ -587,12 +593,16 @@
      , c (List CommaVCat (Identity Mixin) Mixin)
      , c (List FSep (MQuoted Extension) Extension)
      , c (List FSep (MQuoted Language) Language)
-     , c (List FSep Token String)
      , c (List NoCommaFSep Token' String)
      , c (List VCat (MQuoted ModuleName) ModuleName)
-     , forall from to. c (List FSep (SymbolicPathNT from to) (SymbolicPath from to))
-     , forall from to. c (List FSep (RelativePathNT from to) (RelativePath from to))
-     , forall from to. c (List VCat (SymbolicPathNT from to) (SymbolicPath from to))
+     , c (List FSep (SymbolicPathNT Pkg (Dir Framework)) (SymbolicPath Pkg (Dir Framework)))
+     , c (List FSep (SymbolicPathNT Pkg (Dir Lib)) (SymbolicPath Pkg (Dir Lib)))
+     , c (List FSep (SymbolicPathNT Pkg (Dir Source)) (SymbolicPath Pkg (Dir Source)))
+     , c (List FSep (SymbolicPathNT Pkg (Dir Include)) (SymbolicPath Pkg (Dir Include)))
+     , c (List FSep (SymbolicPathNT Include File) (SymbolicPath Include File))
+     , c (List FSep (RelativePathNT Framework File) (RelativePath Framework File))
+     , c (List FSep (RelativePathNT Include File) (RelativePath Include File))
+     , c (List VCat (SymbolicPathNT Pkg File) (SymbolicPath Pkg File))
      , c (List VCat Token String)
      , c (MQuoted Language)
      )
@@ -688,8 +698,7 @@
 
 hsSourceDirsGrammar
   :: ( FieldGrammar c g
-     , Applicative (g BuildInfo)
-     , forall from to. c (List FSep (SymbolicPathNT from to) (SymbolicPath from to))
+     , c (List FSep (SymbolicPathNT Pkg (Dir Source)) (SymbolicPath Pkg (Dir Source)))
      )
   => g BuildInfo [SymbolicPath Pkg (Dir Source)]
 hsSourceDirsGrammar =
@@ -705,7 +714,7 @@
     wrongLens f bi = (\fps -> set L.hsSourceDirs fps bi) <$> f []
 
 optionsFieldGrammar
-  :: (FieldGrammar c g, Applicative (g BuildInfo), c (List NoCommaFSep Token' String))
+  :: (FieldGrammar c g, c (List NoCommaFSep Token' String))
   => g BuildInfo (PerCompilerFlavor [String])
 optionsFieldGrammar =
   PerCompilerFlavor
@@ -717,12 +726,14 @@
     <* knownField "jhc-options"
     <* knownField "hugs-options"
     <* knownField "nhc98-options"
+    -- NOTE: These are used by MicroCabal for MicroHs
+    <* knownField "mhs-options"
   where
     extract :: CompilerFlavor -> ALens' BuildInfo [String]
     extract flavor = L.options . lookupLens flavor
 
 profOptionsFieldGrammar
-  :: (FieldGrammar c g, Applicative (g BuildInfo), c (List NoCommaFSep Token' String))
+  :: (FieldGrammar c g, c (List NoCommaFSep Token' String))
   => g BuildInfo (PerCompilerFlavor [String])
 profOptionsFieldGrammar =
   PerCompilerFlavor
@@ -733,7 +744,7 @@
     extract flavor = L.profOptions . lookupLens flavor
 
 sharedOptionsFieldGrammar
-  :: (FieldGrammar c g, Applicative (g BuildInfo), c (List NoCommaFSep Token' String))
+  :: (FieldGrammar c g, c (List NoCommaFSep Token' String))
   => g BuildInfo (PerCompilerFlavor [String])
 sharedOptionsFieldGrammar =
   PerCompilerFlavor
@@ -744,7 +755,7 @@
     extract flavor = L.sharedOptions . lookupLens flavor
 
 profSharedOptionsFieldGrammar
-  :: (FieldGrammar c g, Applicative (g BuildInfo), c (List NoCommaFSep Token' String))
+  :: (FieldGrammar c g, c (List NoCommaFSep Token' String))
   => g BuildInfo (PerCompilerFlavor [String])
 profSharedOptionsFieldGrammar =
   PerCompilerFlavor
@@ -758,8 +769,8 @@
 
 lookupLens :: (Functor f, Monoid v) => CompilerFlavor -> LensLike' f (PerCompilerFlavor v) v
 lookupLens k f p@(PerCompilerFlavor ghc ghcjs)
-  | k == GHC = (\n -> PerCompilerFlavor n ghcjs) <$> f ghc
-  | k == GHCJS = (\n -> PerCompilerFlavor ghc n) <$> f ghcjs
+  | k == GHC = (`PerCompilerFlavor` ghcjs) <$> f ghc
+  | k == GHCJS = (ghc `PerCompilerFlavor`) <$> f ghcjs
   | otherwise = p <$ f mempty
 
 -------------------------------------------------------------------------------
@@ -767,7 +778,7 @@
 -------------------------------------------------------------------------------
 
 flagFieldGrammar
-  :: (FieldGrammar c g, Applicative (g PackageFlag))
+  :: FieldGrammar c g
   => FlagName
   -> g PackageFlag PackageFlag
 flagFieldGrammar name =
@@ -783,7 +794,7 @@
 -------------------------------------------------------------------------------
 
 sourceRepoFieldGrammar
-  :: (FieldGrammar c g, Applicative (g SourceRepo), c (Identity RepoType), c Token, c FilePathNT)
+  :: (FieldGrammar c g, c (Identity RepoType))
   => RepoKind
   -> g SourceRepo SourceRepo
 sourceRepoFieldGrammar kind =
@@ -802,7 +813,7 @@
 -------------------------------------------------------------------------------
 
 setupBInfoFieldGrammar
-  :: (FieldGrammar c g, Functor (g SetupBuildInfo), c (List CommaVCat (Identity Dependency) Dependency))
+  :: (FieldGrammar c g, c (List CommaVCat (Identity Dependency) Dependency))
   => Bool
   -> g SetupBuildInfo SetupBuildInfo
 setupBInfoFieldGrammar def =
@@ -893,7 +904,7 @@
   sequence_
     [ BS8.putStrLn $ " \\ " <> n
     | n <-
-        nub $
+        ordNub $
           sort $
             mconcat
               [ fieldGrammarKnownFieldList packageDescriptionFieldGrammar
@@ -919,7 +930,7 @@
     ]
   where
     es =
-      nub $
+      ordNub $
         sort
           [ prettyShow e
           | e <- [minBound .. maxBound]
diff --git a/src/Distribution/PackageDescription/Parsec.hs b/src/Distribution/PackageDescription/Parsec.hs
--- a/src/Distribution/PackageDescription/Parsec.hs
+++ b/src/Distribution/PackageDescription/Parsec.hs
@@ -20,6 +20,8 @@
     -- ** Parsing
   , ParseResult
   , runParseResult
+  , PSource (..)
+  , withSource
 
     -- * New-style spec-version
   , scanSpecVersion
@@ -38,7 +40,7 @@
 import Distribution.FieldGrammar
 import Distribution.FieldGrammar.Parsec (NamelessField (..))
 import Distribution.Fields.ConfVar (parseConditionConfVar)
-import Distribution.Fields.Field (FieldName, getName)
+import Distribution.Fields.Field (FieldName, getName, sectionArgAnn)
 import Distribution.Fields.LexerMonad (LexWarning, toPWarnings)
 import Distribution.Fields.ParseResult
 import Distribution.Fields.Parser
@@ -48,7 +50,7 @@
 import Distribution.PackageDescription.Quirks (patchQuirks)
 import Distribution.Parsec (parsec, simpleParsecBS)
 import Distribution.Parsec.FieldLineStream (fieldLineStreamFromBS)
-import Distribution.Parsec.Position (Position (..), zeroPos)
+import Distribution.Parsec.Position (Position (..), incPos, zeroPos)
 import Distribution.Parsec.Warning (PWarnType (..))
 import Distribution.Pretty (prettyShow)
 import Distribution.Utils.Generic (breakMaybe, fromUTF8BS, toUTF8BS, unfoldrM, validateUTF8)
@@ -74,7 +76,7 @@
 --
 -- In Cabal 1.2 the syntax for package descriptions was changed to a format
 -- with sections and possibly indented property descriptions.
-parseGenericPackageDescription :: BS.ByteString -> ParseResult GenericPackageDescription
+parseGenericPackageDescription :: BS.ByteString -> ParseResult src GenericPackageDescription
 parseGenericPackageDescription bs = do
   -- set scanned version
   setCabalSpecVersion ver
@@ -122,7 +124,7 @@
 fieldlinesToBS = BS.intercalate "\n" . map (\(FieldLine _ bs) -> bs)
 
 -- Monad in which sections are parsed
-type SectionParser = StateT SectionS ParseResult
+type SectionParser src = StateT SectionS (ParseResult src)
 
 -- | State of section parser
 data SectionS = SectionS
@@ -131,7 +133,7 @@
   }
 
 stateGpd :: Lens' SectionS GenericPackageDescription
-stateGpd f (SectionS gpd cs) = (\x -> SectionS x cs) <$> f gpd
+stateGpd f (SectionS gpd cs) = (`SectionS` cs) <$> f gpd
 {-# INLINE stateGpd #-}
 
 stateCommonStanzas :: Lens' SectionS (Map String CondTreeBuildInfo)
@@ -150,7 +152,7 @@
   -> [LexWarning]
   -> Maybe Int
   -> [Field Position]
-  -> ParseResult GenericPackageDescription
+  -> ParseResult src GenericPackageDescription
 parseGenericPackageDescription' scannedVer lexWarnings utf8WarnPos fs = do
   parseWarnings (toPWarnings lexWarnings)
   for_ utf8WarnPos $ \pos ->
@@ -220,7 +222,7 @@
     newSyntaxVersion :: CabalSpecVersion
     newSyntaxVersion = CabalSpecV1_2
 
-    maybeWarnCabalVersion :: Syntax -> PackageDescription -> ParseResult ()
+    maybeWarnCabalVersion :: Syntax -> PackageDescription -> ParseResult src ()
     maybeWarnCabalVersion syntax pkg
       | syntax == NewSyntax && specVersion pkg < newSyntaxVersion =
           parseWarning zeroPos PWTNewSyntax $
@@ -238,7 +240,7 @@
 cabalFormatVersionsDesc :: String
 cabalFormatVersionsDesc = "Current cabal-version values are listed at https://cabal.readthedocs.io/en/stable/file-format-changelog.html."
 
-goSections :: CabalSpecVersion -> [Field Position] -> SectionParser ()
+goSections :: CabalSpecVersion -> [Field Position] -> SectionParser src ()
 goSections specVer = traverse_ process
   where
     process (Field (Name pos name) _) =
@@ -261,14 +263,14 @@
       -> Map String CondTreeBuildInfo
       -- \^ common stanzas
       -> [Field Position]
-      -> ParseResult (CondTree ConfVar [Dependency] a)
+      -> ParseResult src (CondTree ConfVar a)
     parseCondTree' = parseCondTreeWithCommonStanzas specVer
 
-    parseSection :: Name Position -> [SectionArg Position] -> [Field Position] -> SectionParser ()
+    parseSection :: Name Position -> [SectionArg Position] -> [Field Position] -> SectionParser src ()
     parseSection (Name pos name) args fields
       | hasCommonStanzas == NoCommonStanzas
       , name == "common" = lift $ do
-          parseWarning pos PWTUnknownSection $ "Ignoring section: common. You should set cabal-version: 2.2 or larger to use common stanzas."
+          parseWarning pos PWTUnknownSection "Ignoring section: common. You should set cabal-version: 2.2 or larger to use common stanzas."
       | name == "common" = do
           commonStanzas <- use stateCommonStanzas
           name' <- lift $ parseCommonName pos args
@@ -284,8 +286,7 @@
           prev <- use $ stateGpd . L.condLibrary
           when (isJust prev) $
             lift $
-              parseFailure pos $
-                "Multiple main libraries; have you forgotten to specify a name for an internal library?"
+              parseFailure pos "Multiple main libraries; have you forgotten to specify a name for an internal library?"
 
           commonStanzas <- use stateCommonStanzas
           let name'' = LMainLibName
@@ -413,10 +414,10 @@
             parseWarning pos PWTUnknownSection $
               "Ignoring section: " ++ show name
 
-parseName :: Position -> [SectionArg Position] -> SectionParser String
+parseName :: Position -> [SectionArg Position] -> SectionParser src String
 parseName pos args = fromUTF8BS <$> parseNameBS pos args
 
-parseNameBS :: Position -> [SectionArg Position] -> SectionParser BS.ByteString
+parseNameBS :: Position -> [SectionArg Position] -> SectionParser src BS.ByteString
 -- TODO: use strict parser
 parseNameBS pos args = case args of
   [SecArgName _pos secName] ->
@@ -431,14 +432,14 @@
     lift $ parseFailure pos $ "Invalid name " ++ show args
     pure ""
 
-parseCommonName :: Position -> [SectionArg Position] -> ParseResult String
+parseCommonName :: Position -> [SectionArg Position] -> ParseResult src String
 parseCommonName pos args = case args of
   [SecArgName _pos secName] ->
     pure $ fromUTF8BS secName
   [SecArgStr _pos secName] ->
     pure $ fromUTF8BS secName
   [] -> do
-    parseFailure pos $ "name required"
+    parseFailure pos "name required"
     pure ""
   _ -> do
     -- TODO: pretty print args
@@ -446,7 +447,7 @@
     pure ""
 
 -- TODO: avoid conversion to 'String'.
-parseUnqualComponentName :: Position -> [SectionArg Position] -> SectionParser UnqualComponentName
+parseUnqualComponentName :: Position -> [SectionArg Position] -> SectionParser src UnqualComponentName
 parseUnqualComponentName pos args = mkUnqualComponentName <$> parseName pos args
 
 -- | Parse a non-recursive list of fields.
@@ -455,18 +456,18 @@
   -> [Field Position]
   -- ^ fields to be parsed
   -> ParsecFieldGrammar' a
-  -> ParseResult a
+  -> ParseResult src a
 parseFields v fields grammar = do
   let (fs0, ss) = partitionFields fields
   traverse_ (traverse_ warnInvalidSubsection) ss
   parseFieldGrammar v fs0 grammar
 
-warnInvalidSubsection :: Section Position -> ParseResult ()
+warnInvalidSubsection :: Section Position -> ParseResult src ()
 warnInvalidSubsection (MkSection (Name pos name) _ _) =
   void $ parseFailure pos $ "invalid subsection " ++ show name
 
 parseCondTree
-  :: forall a
+  :: forall src a
    . L.HasBuildInfo a
   => CabalSpecVersion
   -> HasElif
@@ -477,11 +478,9 @@
   -- ^ common stanzas
   -> (BuildInfo -> a)
   -- ^ constructor from buildInfo
-  -> (a -> [Dependency])
-  -- ^ condition extractor
   -> [Field Position]
-  -> ParseResult (CondTree ConfVar [Dependency] a)
-parseCondTree v hasElif grammar commonStanzas fromBuildInfo cond = go
+  -> ParseResult src (CondTree ConfVar a)
+parseCondTree v hasElif grammar commonStanzas fromBuildInfo = go
   where
     go fields0 = do
       (fields, endo) <-
@@ -492,12 +491,12 @@
       let (fs, ss) = partitionFields fields
       x <- parseFieldGrammar v fs grammar
       branches <- concat <$> traverse parseIfs ss
-      return $ endo $ CondNode x (cond x) branches
+      return $ endo $ CondNode x branches
 
-    parseIfs :: [Section Position] -> ParseResult [CondBranch ConfVar [Dependency] a]
+    parseIfs :: [Section Position] -> ParseResult src [CondBranch ConfVar a]
     parseIfs [] = return []
-    parseIfs (MkSection (Name _ name) test fields : sections) | name == "if" = do
-      test' <- parseConditionConfVar test
+    parseIfs (MkSection (Name pos name) test fields : sections) | name == "if" = do
+      test' <- parseConditionConfVar (startOfSection (incPos 2 pos) test) test
       fields' <- go fields
       (elseFields, sections') <- parseElseIfs sections
       return (CondBranch test' fields' elseFields : sections')
@@ -507,7 +506,7 @@
 
     parseElseIfs
       :: [Section Position]
-      -> ParseResult (Maybe (CondTree ConfVar [Dependency] a), [CondBranch ConfVar [Dependency] a])
+      -> ParseResult src (Maybe (CondTree ConfVar a), [CondBranch ConfVar a])
     parseElseIfs [] = return (Nothing, [])
     parseElseIfs (MkSection (Name pos name) args fields : sections) | name == "else" = do
       unless (null args) $
@@ -516,20 +515,26 @@
       elseFields <- go fields
       sections' <- parseIfs sections
       return (Just elseFields, sections')
-    parseElseIfs (MkSection (Name _ name) test fields : sections)
+    parseElseIfs (MkSection (Name pos name) test fields : sections)
       | hasElif == HasElif
       , name == "elif" = do
-          test' <- parseConditionConfVar test
+          test' <- parseConditionConfVar (startOfSection (incPos 4 pos) test) test
           fields' <- go fields
           (elseFields, sections') <- parseElseIfs sections
           -- we parse an empty 'Fields', to get empty value for a node
           a <- parseFieldGrammar v mempty grammar
-          return (Just $ CondNode a (cond a) [CondBranch test' fields' elseFields], sections')
+          return (Just $ CondNode a [CondBranch test' fields' elseFields], sections')
     parseElseIfs (MkSection (Name pos name) _ _ : sections) | name == "elif" = do
-      parseWarning pos PWTInvalidSubsection $ "invalid subsection \"elif\". You should set cabal-version: 2.2 or larger to use elif-conditionals."
+      parseWarning pos PWTInvalidSubsection "invalid subsection \"elif\". You should set cabal-version: 2.2 or larger to use elif-conditionals."
       (,) Nothing <$> parseIfs sections
     parseElseIfs sections = (,) Nothing <$> parseIfs sections
 
+startOfSection :: Position -> [SectionArg Position] -> Position
+-- The case where we have no args is the start of the section
+startOfSection defaultPos [] = defaultPos
+-- Otherwise the start of the section is the position of the first argument.
+startOfSection _ (cond : _) = sectionArgAnn cond
+
 {- Note [Accumulating parser]
 
 Note: Outdated a bit
@@ -586,7 +591,7 @@
 -- The approach is simple, and have good properties:
 --
 -- * Common stanzas are parsed exactly once, even if not-used. Thus we report errors in them.
-type CondTreeBuildInfo = CondTree ConfVar [Dependency] BuildInfo
+type CondTreeBuildInfo = CondTree ConfVar BuildInfo
 
 -- | Create @a@ from 'BuildInfo'.
 -- This class is used to implement common stanza parsing.
@@ -618,7 +623,7 @@
   fromBuildInfo' _ bi = BenchmarkStanza Nothing Nothing Nothing bi
 
 parseCondTreeWithCommonStanzas
-  :: forall a
+  :: forall src a
    . L.HasBuildInfo a
   => CabalSpecVersion
   -> ParsecFieldGrammar' a
@@ -628,16 +633,16 @@
   -> Map String CondTreeBuildInfo
   -- ^ common stanzas
   -> [Field Position]
-  -> ParseResult (CondTree ConfVar [Dependency] a)
+  -> ParseResult src (CondTree ConfVar a)
 parseCondTreeWithCommonStanzas v grammar fromBuildInfo commonStanzas fields = do
   (fields', endo) <- processImports v fromBuildInfo commonStanzas fields
-  x <- parseCondTree v hasElif grammar commonStanzas fromBuildInfo (view L.targetBuildDepends) fields'
+  x <- parseCondTree v hasElif grammar commonStanzas fromBuildInfo fields'
   return (endo x)
   where
     hasElif = specHasElif v
 
 processImports
-  :: forall a
+  :: forall src a
    . L.HasBuildInfo a
   => CabalSpecVersion
   -> (BuildInfo -> a)
@@ -645,7 +650,7 @@
   -> Map String CondTreeBuildInfo
   -- ^ common stanzas
   -> [Field Position]
-  -> ParseResult ([Field Position], CondTree ConfVar [Dependency] a -> CondTree ConfVar [Dependency] a)
+  -> ParseResult src ([Field Position], CondTree ConfVar a -> CondTree ConfVar a)
 processImports v fromBuildInfo commonStanzas = go []
   where
     hasCommonStanzas = specHasCommonStanzas v
@@ -674,10 +679,10 @@
     -- parse actual CondTree
     go acc fields = do
       fields' <- catMaybes <$> traverse (warnImport v) fields
-      pure $ (fields', \x -> foldr (mergeCommonStanza fromBuildInfo) x acc)
+      pure (fields', \x -> foldr (mergeCommonStanza fromBuildInfo) x acc)
 
 -- | Warn on "import" fields, also map to Maybe, so erroneous fields can be filtered
-warnImport :: CabalSpecVersion -> Field Position -> ParseResult (Maybe (Field Position))
+warnImport :: CabalSpecVersion -> Field Position -> ParseResult src (Maybe (Field Position))
 warnImport v (Field (Name pos name) _) | name == "import" = do
   if specHasCommonStanzas v == NoCommonStanzas
     then parseWarning pos PWTUnknownField "Unknown field: import. You should set cabal-version: 2.2 or larger to use common stanzas"
@@ -688,11 +693,11 @@
 mergeCommonStanza
   :: L.HasBuildInfo a
   => (BuildInfo -> a)
-  -> CondTree ConfVar [Dependency] BuildInfo
-  -> CondTree ConfVar [Dependency] a
-  -> CondTree ConfVar [Dependency] a
-mergeCommonStanza fromBuildInfo (CondNode bi _ bis) (CondNode x _ cs) =
-  CondNode x' (x' ^. L.targetBuildDepends) cs'
+  -> CondTree ConfVar BuildInfo
+  -> CondTree ConfVar a
+  -> CondTree ConfVar a
+mergeCommonStanza fromBuildInfo (CondNode bi bis) (CondNode x cs) =
+  CondNode x' cs'
   where
     -- new value is old value with buildInfo field _prepended_.
     x' = x & L.buildInfo %~ (bi <>)
@@ -705,7 +710,7 @@
 -------------------------------------------------------------------------------
 
 -- Check that a property holds on all branches of a condition tree
-onAllBranches :: forall v c a. Monoid a => (a -> Bool) -> CondTree v c a -> Bool
+onAllBranches :: forall v a. Monoid a => (a -> Bool) -> CondTree v a -> Bool
 onAllBranches p = go mempty
   where
     -- If the current level of the tree satisfies the property, then we are
@@ -713,13 +718,13 @@
     -- must satisfy it. Each node may have multiple immediate children; we only
     -- one need one to satisfy the property because the configure step uses
     -- 'mappend' to join together the results of flag resolution.
-    go :: a -> CondTree v c a -> Bool
+    go :: a -> CondTree v a -> Bool
     go acc ct =
       let acc' = acc `mappend` condTreeData ct
        in p acc' || any (goBranch acc') (condTreeComponents ct)
 
     -- Both the 'true' and the 'false' block must satisfy the property.
-    goBranch :: a -> CondBranch v c a -> Bool
+    goBranch :: a -> CondBranch v a -> Bool
     goBranch _ (CondBranch _ _ Nothing) = False
     goBranch acc (CondBranch _ t (Just e)) = go acc t && go acc e
 
@@ -731,7 +736,7 @@
 --
 -- * don't use undefined flags (very bad)
 -- * define flags which are unused (just bad)
-checkForUndefinedFlags :: GenericPackageDescription -> ParseResult ()
+checkForUndefinedFlags :: GenericPackageDescription -> ParseResult src ()
 checkForUndefinedFlags gpd = do
   let definedFlags, usedFlags :: Set.Set FlagName
       definedFlags = toSetOf (L.genPackageFlags . traverse . getting flagName) gpd
@@ -743,24 +748,22 @@
       "These flags are used without having been defined: "
         ++ intercalate ", " [unFlagName fn | fn <- Set.toList $ usedFlags `Set.difference` definedFlags]
   where
-    f :: CondTree ConfVar c a -> Const (Set.Set FlagName) (CondTree ConfVar c a)
+    f :: CondTree ConfVar a -> Const (Set.Set FlagName) (CondTree ConfVar a)
     f ct = Const (Set.fromList (freeVars ct))
 
 -- | Since @cabal-version: 1.24@ one can specify @custom-setup@.
 -- Let us require it.
-checkForUndefinedCustomSetup :: GenericPackageDescription -> ParseResult ()
+checkForUndefinedCustomSetup :: GenericPackageDescription -> ParseResult src ()
 checkForUndefinedCustomSetup gpd = do
   let pd = packageDescription gpd
   let csv = specVersion pd
 
   when (buildType pd == Custom && isNothing (setupBuildInfo pd)) $
     when (csv >= CabalSpecV1_24) $
-      parseFailure zeroPos $
-        "Since cabal-version: 1.24 specifying custom-setup section is mandatory"
+      parseFailure zeroPos "Since cabal-version: 1.24 specifying custom-setup section is mandatory"
 
   when (buildType pd == Hooks && isNothing (setupBuildInfo pd)) $
-    parseFailure zeroPos $
-      "Packages with build-type: Hooks require a custom-setup stanza"
+    parseFailure zeroPos "Packages with build-type: Hooks require a custom-setup stanza"
 
 -------------------------------------------------------------------------------
 -- Post processing of internal dependencies
@@ -923,7 +926,7 @@
 -- Supplementary build information
 -------------------------------------------------------------------------------
 
-parseHookedBuildInfo :: BS.ByteString -> ParseResult HookedBuildInfo
+parseHookedBuildInfo :: BS.ByteString -> ParseResult src HookedBuildInfo
 parseHookedBuildInfo bs = case readFields' bs of
   Right (fs, lexWarnings) -> do
     parseHookedBuildInfo' lexWarnings fs
@@ -933,7 +936,7 @@
 parseHookedBuildInfo'
   :: [LexWarning]
   -> [Field Position]
-  -> ParseResult HookedBuildInfo
+  -> ParseResult src HookedBuildInfo
 parseHookedBuildInfo' lexWarnings fs = do
   parseWarnings (toPWarnings lexWarnings)
   (mLibFields, exes) <- stanzas fs
@@ -941,24 +944,24 @@
   biExes <- traverse parseExe exes
   return (mLib, biExes)
   where
-    parseLib :: Fields Position -> ParseResult (Maybe BuildInfo)
+    parseLib :: Fields Position -> ParseResult src (Maybe BuildInfo)
     parseLib fields
       | Map.null fields = pure Nothing
       | otherwise = Just <$> parseFieldGrammar cabalSpecLatest fields buildInfoFieldGrammar
 
-    parseExe :: (UnqualComponentName, Fields Position) -> ParseResult (UnqualComponentName, BuildInfo)
+    parseExe :: (UnqualComponentName, Fields Position) -> ParseResult src (UnqualComponentName, BuildInfo)
     parseExe (n, fields) = do
       bi <- parseFieldGrammar cabalSpecLatest fields buildInfoFieldGrammar
       pure (n, bi)
 
-    stanzas :: [Field Position] -> ParseResult (Fields Position, [(UnqualComponentName, Fields Position)])
+    stanzas :: [Field Position] -> ParseResult src (Fields Position, [(UnqualComponentName, Fields Position)])
     stanzas fields = do
       let (hdr0, exes0) = breakMaybe isExecutableField fields
       hdr <- toFields hdr0
       exes <- unfoldrM (traverse toExe) exes0
       pure (hdr, exes)
 
-    toFields :: [Field Position] -> ParseResult (Fields Position)
+    toFields :: [Field Position] -> ParseResult src (Fields Position)
     toFields fields = do
       let (fields', ss) = partitionFields fields
       traverse_ (traverse_ warnInvalidSubsection) ss
@@ -966,7 +969,7 @@
 
     toExe
       :: ([FieldLine Position], [Field Position])
-      -> ParseResult ((UnqualComponentName, Fields Position), Maybe ([FieldLine Position], [Field Position]))
+      -> ParseResult src ((UnqualComponentName, Fields Position), Maybe ([FieldLine Position], [Field Position]))
     toExe (fss, fields) = do
       name <- runFieldParser zeroPos parsec cabalSpecLatest fss
       let (hdr0, rest) = breakMaybe isExecutableField fields
diff --git a/src/Distribution/PackageDescription/PrettyPrint.hs b/src/Distribution/PackageDescription/PrettyPrint.hs
--- a/src/Distribution/PackageDescription/PrettyPrint.hs
+++ b/src/Distribution/PackageDescription/PrettyPrint.hs
@@ -121,11 +121,11 @@
   PrettySection () "flag" [ppFlagName name] $
     prettyFieldGrammar v (flagFieldGrammar name) flag
 
-ppCondTree2 :: CabalSpecVersion -> PrettyFieldGrammar' s -> CondTree ConfVar [Dependency] s -> [PrettyField ()]
+ppCondTree2 :: CabalSpecVersion -> PrettyFieldGrammar' s -> CondTree ConfVar s -> [PrettyField ()]
 ppCondTree2 v grammar = go
   where
     -- TODO: recognise elif opportunities
-    go (CondNode it _ ifs) =
+    go (CondNode it ifs) =
       prettyFieldGrammar v grammar it
         ++ concatMap ppIf ifs
 
@@ -140,42 +140,42 @@
       , PrettySection () "else" [] (go elseTree)
       ]
 
-ppCondLibrary :: CabalSpecVersion -> Maybe (CondTree ConfVar [Dependency] Library) -> [PrettyField ()]
+ppCondLibrary :: CabalSpecVersion -> Maybe (CondTree ConfVar Library) -> [PrettyField ()]
 ppCondLibrary _ Nothing = mempty
 ppCondLibrary v (Just condTree) =
   pure $
     PrettySection () "library" [] $
       ppCondTree2 v (libraryFieldGrammar LMainLibName) condTree
 
-ppCondSubLibraries :: CabalSpecVersion -> [(UnqualComponentName, CondTree ConfVar [Dependency] Library)] -> [PrettyField ()]
+ppCondSubLibraries :: CabalSpecVersion -> [(UnqualComponentName, CondTree ConfVar Library)] -> [PrettyField ()]
 ppCondSubLibraries v libs =
   [ PrettySection () "library" [pretty n] $
     ppCondTree2 v (libraryFieldGrammar $ LSubLibName n) condTree
   | (n, condTree) <- libs
   ]
 
-ppCondForeignLibs :: CabalSpecVersion -> [(UnqualComponentName, CondTree ConfVar [Dependency] ForeignLib)] -> [PrettyField ()]
+ppCondForeignLibs :: CabalSpecVersion -> [(UnqualComponentName, CondTree ConfVar ForeignLib)] -> [PrettyField ()]
 ppCondForeignLibs v flibs =
   [ PrettySection () "foreign-library" [pretty n] $
     ppCondTree2 v (foreignLibFieldGrammar n) condTree
   | (n, condTree) <- flibs
   ]
 
-ppCondExecutables :: CabalSpecVersion -> [(UnqualComponentName, CondTree ConfVar [Dependency] Executable)] -> [PrettyField ()]
+ppCondExecutables :: CabalSpecVersion -> [(UnqualComponentName, CondTree ConfVar Executable)] -> [PrettyField ()]
 ppCondExecutables v exes =
   [ PrettySection () "executable" [pretty n] $
     ppCondTree2 v (executableFieldGrammar n) condTree
   | (n, condTree) <- exes
   ]
 
-ppCondTestSuites :: CabalSpecVersion -> [(UnqualComponentName, CondTree ConfVar [Dependency] TestSuite)] -> [PrettyField ()]
+ppCondTestSuites :: CabalSpecVersion -> [(UnqualComponentName, CondTree ConfVar TestSuite)] -> [PrettyField ()]
 ppCondTestSuites v suites =
   [ PrettySection () "test-suite" [pretty n] $
     ppCondTree2 v testSuiteFieldGrammar (fmap FG.unvalidateTestSuite condTree)
   | (n, condTree) <- suites
   ]
 
-ppCondBenchmarks :: CabalSpecVersion -> [(UnqualComponentName, CondTree ConfVar [Dependency] Benchmark)] -> [PrettyField ()]
+ppCondBenchmarks :: CabalSpecVersion -> [(UnqualComponentName, CondTree ConfVar Benchmark)] -> [PrettyField ()]
 ppCondBenchmarks v suites =
   [ PrettySection () "benchmark" [pretty n] $
     ppCondTree2 v benchmarkFieldGrammar (fmap FG.unvalidateBenchmark condTree)
@@ -185,7 +185,7 @@
 ppCondition :: Condition ConfVar -> Doc
 ppCondition (Var x) = ppConfVar x
 ppCondition (Lit b) = text (show b)
-ppCondition (CNot c) = char '!' <<>> (ppCondition c)
+ppCondition (CNot c) = char '!' <<>> ppCondition c
 ppCondition (COr c1 c2) =
   parens
     ( hsep
@@ -241,14 +241,14 @@
   where
     -- We set CondTree's [Dependency] to an empty list, as it
     -- is not pretty printed anyway.
-    mkCondTree x = CondNode x [] []
-    mkCondTreeL l = (fromMaybe (mkUnqualComponentName "") (libraryNameString (libName l)), CondNode l [] [])
+    mkCondTree x = CondNode x []
+    mkCondTreeL l = (fromMaybe (mkUnqualComponentName "") (libraryNameString (libName l)), CondNode l [])
 
     mkCondTree'
       :: (a -> UnqualComponentName)
       -> a
-      -> (UnqualComponentName, CondTree ConfVar [Dependency] a)
-    mkCondTree' f x = (f x, CondNode x [] [])
+      -> (UnqualComponentName, CondTree ConfVar a)
+    mkCondTree' f x = (f x, CondNode x [])
 
 -------------------------------------------------------------------------------
 -- Internal libs
@@ -283,7 +283,7 @@
     transformD d = [d]
 
     -- Always perform transformation for mixins as syntax was only introduced in 3.4
-    -- This guard is uncessary as no transformations take place when cabalSpec >= CabalSpecV3_4 but
+    -- This guard is unnecessary as no transformations take place when cabalSpec >= CabalSpecV3_4 but
     -- it more clearly signifies the intent. (See the specVer >= CabalSpecV3_4 line above).
     transformM :: Mixin -> Mixin
     transformM (Mixin pn (LSubLibName uqn) inc)
diff --git a/src/Distribution/Parsec.hs b/src/Distribution/Parsec.hs
--- a/src/Distribution/Parsec.hs
+++ b/src/Distribution/Parsec.hs
@@ -24,11 +24,16 @@
     -- ** Warnings
   , PWarnType (..)
   , PWarning (..)
+  , PWarningWithSource (..)
+  , PSource (..)
   , showPWarning
+  , showPWarningWithSource
 
     -- ** Errors
   , PError (..)
+  , PErrorWithSource (..)
   , showPError
+  , showPErrorWithSource
 
     -- * Position
   , Position (..)
@@ -55,19 +60,22 @@
 
 import Data.ByteString (ByteString)
 import Data.Char (digitToInt, intToDigit)
+import Data.Functor (($>))
 import Data.List (transpose)
 import Distribution.CabalSpecVersion
 import Distribution.Compat.Prelude
-import Distribution.Parsec.Error (PError (..), showPError)
+import Distribution.Parsec.Error (PError (..), PErrorWithSource (..), showPError, showPErrorWithSource)
+
+import Data.Monoid (Last (..))
 import Distribution.Parsec.FieldLineStream (FieldLineStream, fieldLineStreamFromBS, fieldLineStreamFromString)
 import Distribution.Parsec.Position (Position (..), incPos, retPos, showPos, zeroPos)
-import Distribution.Parsec.Warning (PWarnType (..), PWarning (..), showPWarning)
+import Distribution.Parsec.Warning
 import Numeric (showIntAtBase)
 import Prelude ()
 
+import qualified Control.Monad.Fail as Fail
 import qualified Distribution.Compat.CharParsing as P
 import qualified Distribution.Compat.DList as DList
-import qualified Distribution.Compat.MonadFail as Fail
 import qualified Text.Parsec as Parsec
 
 -------------------------------------------------------------------------------
@@ -247,13 +255,19 @@
       postprocess str
         | str == "True" = pure True
         | str == "False" = pure False
-        | lstr == "true" = parsecWarning PWTBoolCase caseWarning *> pure True
-        | lstr == "false" = parsecWarning PWTBoolCase caseWarning *> pure False
+        | lstr == "true" = parsecWarning PWTBoolCase caseWarning $> True
+        | lstr == "false" = parsecWarning PWTBoolCase caseWarning $> False
         | otherwise = fail $ "Not a boolean: " ++ str
         where
           lstr = map toLower str
           caseWarning =
             "Boolean values are case sensitive, use 'True' or 'False'."
+
+instance Parsec a => Parsec (Last a) where
+  parsec = parsecLast
+
+parsecLast :: (Parsec a, CabalParsing m) => m (Last a)
+parsecLast = (Last . Just <$> parsec) <|> pure mempty
 
 -- | @[^ ,]@
 parsecToken :: CabalParsing m => m String
diff --git a/src/Distribution/Parsec/Error.hs b/src/Distribution/Parsec/Error.hs
--- a/src/Distribution/Parsec/Error.hs
+++ b/src/Distribution/Parsec/Error.hs
@@ -1,22 +1,34 @@
+{-# LANGUAGE DeriveFunctor #-}
 {-# LANGUAGE DeriveGeneric #-}
 
 module Distribution.Parsec.Error
   ( PError (..)
+  , PErrorWithSource (..)
   , showPError
+  , showPErrorWithSource
   ) where
 
 import Distribution.Compat.Prelude
 import Distribution.Parsec.Position
+import Distribution.Parsec.Source
+import Distribution.Parsec.Warning -- TODO: Move PSource into own module
 import System.FilePath (normalise)
 import Prelude ()
 
 -- | Parser error.
-data PError = PError Position String
+data PError = PError {perrorPosition :: Position, perrorMessage :: String}
   deriving (Show, Generic)
 
+data PErrorWithSource src = PErrorWithSource {perrorSource :: !(PSource src), perror :: !PError}
+  deriving (Show, Generic, Functor)
+
 instance Binary PError
-instance NFData PError where rnf = genericRnf
+instance NFData PError
 
 showPError :: FilePath -> PError -> String
 showPError fpath (PError pos msg) =
   normalise fpath ++ ":" ++ showPos pos ++ ": " ++ msg
+
+showPErrorWithSource :: PErrorWithSource String -> String
+showPErrorWithSource (PErrorWithSource source (PError pos msg)) =
+  showPError (showPSourceAsFilePath source) (PError pos msg)
diff --git a/src/Distribution/Parsec/FieldLineStream.hs b/src/Distribution/Parsec/FieldLineStream.hs
--- a/src/Distribution/Parsec/FieldLineStream.hs
+++ b/src/Distribution/Parsec/FieldLineStream.hs
@@ -1,6 +1,6 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# OPTIONS_GHC -Wall -Werror #-}
 
@@ -11,13 +11,13 @@
   , fieldLineStreamEnd
   ) where
 
-import Data.Bits
 import Data.ByteString (ByteString)
 import Distribution.Compat.Prelude
 import Distribution.Utils.Generic (toUTF8BS)
 import Prelude ()
 
 import qualified Data.ByteString as BS
+import Data.Text.Internal.Encoding.Utf8
 import qualified Text.Parsec as Parsec
 
 -- | This is essentially a lazy bytestring, but chunks are glued with newline @\'\\n\'@.
@@ -45,49 +45,17 @@
   uncons (FLSCons bs s) = return $ case BS.uncons bs of
     -- as lines are glued with '\n', we return '\n' here!
     Nothing -> Just ('\n', s)
-    Just (c, bs') -> Just (unconsChar c bs' (\bs'' -> FLSCons bs'' s) s)
+    Just (c, bs') -> Just (unconsChar c bs' (`FLSCons` s) s)
 
--- Based on implementation 'decodeStringUtf8'
 unconsChar :: forall a. Word8 -> ByteString -> (ByteString -> a) -> a -> (Char, a)
-unconsChar c0 bs0 f next
-  | c0 <= 0x7F = (chr (fromIntegral c0), f bs0)
-  | c0 <= 0xBF = (replacementChar, f bs0)
-  | c0 <= 0xDF = twoBytes
-  | c0 <= 0xEF = moreBytes 3 0x800 bs0 (fromIntegral $ c0 .&. 0xF)
-  | c0 <= 0xF7 = moreBytes 4 0x10000 bs0 (fromIntegral $ c0 .&. 0x7)
-  | c0 <= 0xFB = moreBytes 5 0x200000 bs0 (fromIntegral $ c0 .&. 0x3)
-  | c0 <= 0xFD = moreBytes 6 0x4000000 bs0 (fromIntegral $ c0 .&. 0x1)
-  | otherwise = error $ "not implemented " ++ show c0
+unconsChar c0 bs0 f next = go (utf8DecodeStart c0) bs0
   where
-    twoBytes = case BS.uncons bs0 of
-      Nothing -> (replacementChar, next)
-      Just (c1, bs1)
-        | c1 .&. 0xC0 == 0x80 ->
-            if d >= 0x80
-              then (chr d, f bs1)
-              else (replacementChar, f bs1)
-        | otherwise -> (replacementChar, f bs1)
-        where
-          d = (fromIntegral (c0 .&. 0x1F) `shiftL` 6) .|. fromIntegral (c1 .&. 0x3F)
-
-    moreBytes :: Int -> Int -> ByteString -> Int -> (Char, a)
-    moreBytes 1 overlong bs' acc
-      | overlong <= acc
-      , acc <= 0x10FFFF
-      , acc < 0xD800 || 0xDFFF < acc =
-          (chr acc, f bs')
-      | otherwise =
-          (replacementChar, f bs')
-    moreBytes byteCount overlong bs' acc = case BS.uncons bs' of
-      Nothing -> (replacementChar, f bs')
-      Just (cn, bs1)
-        | cn .&. 0xC0 == 0x80 ->
-            moreBytes
-              (byteCount - 1)
-              overlong
-              bs1
-              ((acc `shiftL` 6) .|. fromIntegral cn .&. 0x3F)
-        | otherwise -> (replacementChar, f bs1)
+    go decoderResult bs = case decoderResult of
+      Accept ch -> (ch, f bs)
+      Reject -> (replacementChar, f bs)
+      Incomplete state codePoint -> case BS.uncons bs of
+        Nothing -> (replacementChar, next)
+        Just (w, bs') -> go (utf8DecodeContinue w state codePoint) bs'
 
 replacementChar :: Char
 replacementChar = '\xfffd'
diff --git a/src/Distribution/Parsec/Position.hs b/src/Distribution/Parsec/Position.hs
--- a/src/Distribution/Parsec/Position.hs
+++ b/src/Distribution/Parsec/Position.hs
@@ -21,7 +21,7 @@
   deriving (Eq, Ord, Show, Generic)
 
 instance Binary Position
-instance NFData Position where rnf = genericRnf
+instance NFData Position
 
 -- | Shift position by n columns to the right.
 incPos :: Int -> Position -> Position
diff --git a/src/Distribution/Parsec/Source.hs b/src/Distribution/Parsec/Source.hs
new file mode 100644
--- /dev/null
+++ b/src/Distribution/Parsec/Source.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE DeriveFunctor #-}
+{-# LANGUAGE DeriveGeneric #-}
+
+module Distribution.Parsec.Source
+  ( PSource (..)
+  , CabalFileSource (..)
+  , InstalledPackageInfoSource (..)
+  , renderCabalFileSource
+  , renderInstalledPackageInfoSource
+  ) where
+
+import qualified Data.ByteString as BS
+import Distribution.Compat.Prelude
+import Prelude ()
+
+-- | The source of a parse error
+data PSource src
+  = PKnownSource src
+  | PUnknownSource
+  deriving (Ord, Show, Generic, Functor)
+
+newtype CabalFileSource
+  = PCabalFile (FilePath, BS.ByteString)
+  deriving (Ord, Show, Generic)
+
+data InstalledPackageInfoSource
+  = PInstalledPackageInfo
+  deriving (Eq, Ord, Show, Generic)
+
+renderCabalFileSource :: CabalFileSource -> String
+renderCabalFileSource (PCabalFile (path, _)) = path
+
+renderInstalledPackageInfoSource :: InstalledPackageInfoSource -> String
+renderInstalledPackageInfoSource PInstalledPackageInfo = ""
+
+instance Eq CabalFileSource where
+  PCabalFile (path, _) == PCabalFile (path', _) = path == path'
+
+instance Eq src => Eq (PSource src) where
+  PKnownSource src == PKnownSource src' = src == src'
+  PUnknownSource == PUnknownSource = True
+  _ == _ = False
+
+instance Binary src => Binary (PSource src)
+instance NFData src => NFData (PSource src)
diff --git a/src/Distribution/Parsec/Warning.hs b/src/Distribution/Parsec/Warning.hs
--- a/src/Distribution/Parsec/Warning.hs
+++ b/src/Distribution/Parsec/Warning.hs
@@ -1,13 +1,19 @@
+{-# LANGUAGE DeriveFunctor #-}
 {-# LANGUAGE DeriveGeneric #-}
 
 module Distribution.Parsec.Warning
   ( PWarning (..)
+  , PWarningWithSource (..)
+  , PSource (..)
+  , showPSourceAsFilePath
   , PWarnType (..)
   , showPWarning
+  , showPWarningWithSource
   ) where
 
 import Distribution.Compat.Prelude
 import Distribution.Parsec.Position
+import Distribution.Parsec.Source
 import System.FilePath (normalise)
 import Prelude ()
 
@@ -64,15 +70,28 @@
   deriving (Eq, Ord, Show, Enum, Bounded, Generic)
 
 instance Binary PWarnType
-instance NFData PWarnType where rnf = genericRnf
+instance NFData PWarnType
 
 -- | Parser warning.
-data PWarning = PWarning !PWarnType !Position String
+data PWarning = PWarning {pwarningType :: !PWarnType, pwarningPosition :: !Position, pwarningMessage :: !String}
   deriving (Eq, Ord, Show, Generic)
 
+data PWarningWithSource src = PWarningWithSource {pwarningSource :: !(PSource src), pwarning :: !PWarning}
+  deriving (Eq, Ord, Show, Generic, Functor)
+
 instance Binary PWarning
-instance NFData PWarning where rnf = genericRnf
+instance NFData PWarning
 
 showPWarning :: FilePath -> PWarning -> String
 showPWarning fpath (PWarning _ pos msg) =
   normalise fpath ++ ":" ++ showPos pos ++ ": " ++ msg
+
+showPWarningWithSource :: PWarningWithSource String -> String
+showPWarningWithSource (PWarningWithSource source pwarn) =
+  showPWarning (showPSourceAsFilePath source) pwarn
+
+showPSourceAsFilePath :: PSource String -> String
+showPSourceAsFilePath source =
+  case source of
+    PKnownSource src -> src
+    PUnknownSource -> "???"
diff --git a/src/Distribution/SPDX/LicenseExceptionId.hs b/src/Distribution/SPDX/LicenseExceptionId.hs
--- a/src/Distribution/SPDX/LicenseExceptionId.hs
+++ b/src/Distribution/SPDX/LicenseExceptionId.hs
@@ -30,87 +30,92 @@
 -- LicenseExceptionId
 -------------------------------------------------------------------------------
 
--- | SPDX License Exceptions identifiers list v3.26
+-- | SPDX License Exceptions identifiers list v3.28
 data LicenseExceptionId
     = N_389_exception -- ^ @389-exception@, 389 Directory Server Exception
-    | Asterisk_exception -- ^ @Asterisk-exception@, Asterisk exception, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Asterisk_linking_protocols_exception -- ^ @Asterisk-linking-protocols-exception@, Asterisk linking protocols exception, SPDX License List 3.25, SPDX License List 3.26
+    | Asterisk_exception -- ^ @Asterisk-exception@, Asterisk exception, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Asterisk_linking_protocols_exception -- ^ @Asterisk-linking-protocols-exception@, Asterisk linking protocols exception, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
     | Autoconf_exception_2_0 -- ^ @Autoconf-exception-2.0@, Autoconf exception 2.0
     | Autoconf_exception_3_0 -- ^ @Autoconf-exception-3.0@, Autoconf exception 3.0
-    | Autoconf_exception_generic_3_0 -- ^ @Autoconf-exception-generic-3.0@, Autoconf generic exception for GPL-3.0, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Autoconf_exception_generic -- ^ @Autoconf-exception-generic@, Autoconf generic exception, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Autoconf_exception_macro -- ^ @Autoconf-exception-macro@, Autoconf macro exception, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Bison_exception_1_24 -- ^ @Bison-exception-1.24@, Bison exception 1.24, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
+    | Autoconf_exception_generic_3_0 -- ^ @Autoconf-exception-generic-3.0@, Autoconf generic exception for GPL-3.0, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Autoconf_exception_generic -- ^ @Autoconf-exception-generic@, Autoconf generic exception, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Autoconf_exception_macro -- ^ @Autoconf-exception-macro@, Autoconf macro exception, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Bison_exception_1_24 -- ^ @Bison-exception-1.24@, Bison exception 1.24, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
     | Bison_exception_2_2 -- ^ @Bison-exception-2.2@, Bison exception 2.2
     | Bootloader_exception -- ^ @Bootloader-exception@, Bootloader Distribution Exception
-    | CGAL_linking_exception -- ^ @CGAL-linking-exception@, CGAL Linking Exception, SPDX License List 3.26
+    | CGAL_linking_exception -- ^ @CGAL-linking-exception@, CGAL Linking Exception, SPDX License List 3.26, SPDX License List 3.28
+    | Classpath_exception_2_0_short -- ^ @Classpath-exception-2.0-short@, Classpath exception 2.0 - short, SPDX License List 3.28
     | Classpath_exception_2_0 -- ^ @Classpath-exception-2.0@, Classpath exception 2.0
     | CLISP_exception_2_0 -- ^ @CLISP-exception-2.0@, CLISP exception 2.0
-    | Cryptsetup_OpenSSL_exception -- ^ @cryptsetup-OpenSSL-exception@, cryptsetup OpenSSL exception, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Digia_Qt_LGPL_exception_1_1 -- ^ @Digia-Qt-LGPL-exception-1.1@, Digia Qt LGPL Exception version 1.1, SPDX License List 3.26
+    | Cryptsetup_OpenSSL_exception -- ^ @cryptsetup-OpenSSL-exception@, cryptsetup OpenSSL exception, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Digia_Qt_LGPL_exception_1_1 -- ^ @Digia-Qt-LGPL-exception-1.1@, Digia Qt LGPL Exception version 1.1, SPDX License List 3.26, SPDX License List 3.28
     | DigiRule_FOSS_exception -- ^ @DigiRule-FOSS-exception@, DigiRule FOSS License Exception
     | ECos_exception_2_0 -- ^ @eCos-exception-2.0@, eCos exception 2.0
-    | Erlang_otp_linking_exception -- ^ @erlang-otp-linking-exception@, Erlang/OTP Linking Exception, SPDX License List 3.25, SPDX License List 3.26
+    | Erlang_otp_linking_exception -- ^ @erlang-otp-linking-exception@, Erlang/OTP Linking Exception, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
     | Fawkes_Runtime_exception -- ^ @Fawkes-Runtime-exception@, Fawkes Runtime Exception
     | FLTK_exception -- ^ @FLTK-exception@, FLTK exception
-    | Fmt_exception -- ^ @fmt-exception@, fmt exception, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
+    | Fmt_exception -- ^ @fmt-exception@, fmt exception, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
     | Font_exception_2_0 -- ^ @Font-exception-2.0@, Font exception 2.0
     | Freertos_exception_2_0 -- ^ @freertos-exception-2.0@, FreeRTOS Exception 2.0
-    | GCC_exception_2_0_note -- ^ @GCC-exception-2.0-note@, GCC    Runtime Library exception 2.0 - note variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
+    | GCC_exception_2_0_note -- ^ @GCC-exception-2.0-note@, GCC    Runtime Library exception 2.0 - note variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
     | GCC_exception_2_0 -- ^ @GCC-exception-2.0@, GCC Runtime Library exception 2.0
     | GCC_exception_3_1 -- ^ @GCC-exception-3.1@, GCC Runtime Library exception 3.1
-    | Gmsh_exception -- ^ @Gmsh-exception@, Gmsh exception, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | GNAT_exception -- ^ @GNAT-exception@, GNAT exception, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | GNOME_examples_exception -- ^ @GNOME-examples-exception@, GNOME examples exception, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | GNU_compiler_exception -- ^ @GNU-compiler-exception@, GNU Compiler Exception, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
+    | Gmsh_exception -- ^ @Gmsh-exception@, Gmsh exception, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | GNAT_exception -- ^ @GNAT-exception@, GNAT exception, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | GNOME_examples_exception -- ^ @GNOME-examples-exception@, GNOME examples exception, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | GNU_compiler_exception -- ^ @GNU-compiler-exception@, GNU Compiler Exception, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
     | Gnu_javamail_exception -- ^ @gnu-javamail-exception@, GNU JavaMail exception
-    | GPL_3_0_389_ds_base_exception -- ^ @GPL-3.0-389-ds-base-exception@, GPL-3.0 389 DS Base Exception, SPDX License List 3.26
-    | GPL_3_0_interface_exception -- ^ @GPL-3.0-interface-exception@, GPL-3.0 Interface Exception, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | GPL_3_0_linking_exception -- ^ @GPL-3.0-linking-exception@, GPL-3.0 Linking Exception, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | GPL_3_0_linking_source_exception -- ^ @GPL-3.0-linking-source-exception@, GPL-3.0 Linking Exception (with Corresponding Source), SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | GPL_CC_1_0 -- ^ @GPL-CC-1.0@, GPL Cooperation Commitment 1.0, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | GStreamer_exception_2005 -- ^ @GStreamer-exception-2005@, GStreamer Exception (2005), SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | GStreamer_exception_2008 -- ^ @GStreamer-exception-2008@, GStreamer Exception (2008), SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Harbour_exception -- ^ @harbour-exception@, harbour exception, SPDX License List 3.26
+    | GPL_3_0_389_ds_base_exception -- ^ @GPL-3.0-389-ds-base-exception@, GPL-3.0 389 DS Base Exception, SPDX License List 3.26, SPDX License List 3.28
+    | GPL_3_0_interface_exception -- ^ @GPL-3.0-interface-exception@, GPL-3.0 Interface Exception, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | GPL_3_0_linking_exception -- ^ @GPL-3.0-linking-exception@, GPL-3.0 Linking Exception, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | GPL_3_0_linking_source_exception -- ^ @GPL-3.0-linking-source-exception@, GPL-3.0 Linking Exception (with Corresponding Source), SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | GPL_CC_1_0 -- ^ @GPL-CC-1.0@, GPL Cooperation Commitment 1.0, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | GStreamer_exception_2005 -- ^ @GStreamer-exception-2005@, GStreamer Exception (2005), SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | GStreamer_exception_2008 -- ^ @GStreamer-exception-2008@, GStreamer Exception (2008), SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Harbour_exception -- ^ @harbour-exception@, harbour exception, SPDX License List 3.26, SPDX License List 3.28
     | I2p_gpl_java_exception -- ^ @i2p-gpl-java-exception@, i2p GPL+Java Exception
-    | Independent_modules_exception -- ^ @Independent-modules-exception@, Independent Module Linking exception, SPDX License List 3.26
-    | KiCad_libraries_exception -- ^ @KiCad-libraries-exception@, KiCad Libraries Exception, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | LGPL_3_0_linking_exception -- ^ @LGPL-3.0-linking-exception@, LGPL-3.0 Linking Exception, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Libpri_OpenH323_exception -- ^ @libpri-OpenH323-exception@, libpri OpenH323 exception, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
+    | Independent_modules_exception -- ^ @Independent-modules-exception@, Independent Module Linking exception, SPDX License List 3.26, SPDX License List 3.28
+    | KiCad_libraries_exception -- ^ @KiCad-libraries-exception@, KiCad Libraries Exception, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Kvirc_openssl_exception -- ^ @kvirc-openssl-exception@, kvirc OpenSSL Exception, SPDX License List 3.28
+    | LGPL_3_0_linking_exception -- ^ @LGPL-3.0-linking-exception@, LGPL-3.0 Linking Exception, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Libpri_OpenH323_exception -- ^ @libpri-OpenH323-exception@, libpri OpenH323 exception, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
     | Libtool_exception -- ^ @Libtool-exception@, Libtool Exception
     | Linux_syscall_note -- ^ @Linux-syscall-note@, Linux Syscall Note
-    | LLGPL -- ^ @LLGPL@, LLGPL Preamble, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | LLVM_exception -- ^ @LLVM-exception@, LLVM Exception, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
+    | LLGPL -- ^ @LLGPL@, LLGPL Preamble, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | LLVM_exception -- ^ @LLVM-exception@, LLVM Exception, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
     | LZMA_exception -- ^ @LZMA-exception@, LZMA exception
     | Mif_exception -- ^ @mif-exception@, Macros and Inline Functions Exception
     | Nokia_Qt_exception_1_1 -- ^ @Nokia-Qt-exception-1.1@, Nokia Qt LGPL exception 1.1, SPDX License List 3.0, SPDX License List 3.2
-    | Mxml_exception -- ^ @mxml-exception@, mxml Exception, SPDX License List 3.26
-    | OCaml_LGPL_linking_exception -- ^ @OCaml-LGPL-linking-exception@, OCaml LGPL Linking Exception, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
+    | Mxml_exception -- ^ @mxml-exception@, mxml Exception, SPDX License List 3.26, SPDX License List 3.28
+    | OCaml_LGPL_linking_exception -- ^ @OCaml-LGPL-linking-exception@, OCaml LGPL Linking Exception, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
     | OCCT_exception_1_0 -- ^ @OCCT-exception-1.0@, Open CASCADE Exception 1.0
-    | OpenJDK_assembly_exception_1_0 -- ^ @OpenJDK-assembly-exception-1.0@, OpenJDK Assembly exception 1.0, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
+    | OpenJDK_assembly_exception_1_0 -- ^ @OpenJDK-assembly-exception-1.0@, OpenJDK Assembly exception 1.0, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
     | Openvpn_openssl_exception -- ^ @openvpn-openssl-exception@, OpenVPN OpenSSL Exception
-    | PCRE2_exception -- ^ @PCRE2-exception@, PCRE2 exception, SPDX License List 3.25, SPDX License List 3.26
-    | Polyparse_exception -- ^ @polyparse-exception@, Polyparse Exception, SPDX License List 3.26
-    | PS_or_PDF_font_exception_20170817 -- ^ @PS-or-PDF-font-exception-20170817@, PS/PDF font exception (2017-08-17), SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | QPL_1_0_INRIA_2004_exception -- ^ @QPL-1.0-INRIA-2004-exception@, INRIA QPL 1.0 2004 variant exception, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Qt_GPL_exception_1_0 -- ^ @Qt-GPL-exception-1.0@, Qt GPL exception 1.0, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Qt_LGPL_exception_1_1 -- ^ @Qt-LGPL-exception-1.1@, Qt LGPL exception 1.1, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
+    | PCRE2_exception -- ^ @PCRE2-exception@, PCRE2 exception, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Polyparse_exception -- ^ @polyparse-exception@, Polyparse Exception, SPDX License List 3.26, SPDX License List 3.28
+    | PS_or_PDF_font_exception_20170817 -- ^ @PS-or-PDF-font-exception-20170817@, PS/PDF font exception (2017-08-17), SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | QPL_1_0_INRIA_2004_exception -- ^ @QPL-1.0-INRIA-2004-exception@, INRIA QPL 1.0 2004 variant exception, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Qt_GPL_exception_1_0 -- ^ @Qt-GPL-exception-1.0@, Qt GPL exception 1.0, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Qt_LGPL_exception_1_1 -- ^ @Qt-LGPL-exception-1.1@, Qt LGPL exception 1.1, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
     | Qwt_exception_1_0 -- ^ @Qwt-exception-1.0@, Qwt exception 1.0
-    | Romic_exception -- ^ @romic-exception@, Romic Exception, SPDX License List 3.25, SPDX License List 3.26
-    | RRDtool_FLOSS_exception_2_0 -- ^ @RRDtool-FLOSS-exception-2.0@, RRDtool FLOSS exception 2.0, SPDX License List 3.25, SPDX License List 3.26
-    | SANE_exception -- ^ @SANE-exception@, SANE Exception, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | SHL_2_0 -- ^ @SHL-2.0@, Solderpad Hardware License v2.0, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | SHL_2_1 -- ^ @SHL-2.1@, Solderpad Hardware License v2.1, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Stunnel_exception -- ^ @stunnel-exception@, stunnel Exception, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | SWI_exception -- ^ @SWI-exception@, SWI exception, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Swift_exception -- ^ @Swift-exception@, Swift Exception, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Texinfo_exception -- ^ @Texinfo-exception@, Texinfo exception, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
+    | Romic_exception -- ^ @romic-exception@, Romic Exception, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | RRDtool_FLOSS_exception_2_0 -- ^ @RRDtool-FLOSS-exception-2.0@, RRDtool FLOSS exception 2.0, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Rsync_linking_exception -- ^ @rsync-linking-exception@, rsync Linking Exception, SPDX License List 3.28
+    | SANE_exception -- ^ @SANE-exception@, SANE Exception, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | SHL_2_0 -- ^ @SHL-2.0@, Solderpad Hardware License v2.0, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | SHL_2_1 -- ^ @SHL-2.1@, Solderpad Hardware License v2.1, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Simple_Library_Usage_exception -- ^ @Simple-Library-Usage-exception@, Simple Library Usage Exception, SPDX License List 3.28
+    | Sqlitestudio_OpenSSL_exception -- ^ @sqlitestudio-OpenSSL-exception@, sqlitestudio OpenSSL exception, SPDX License List 3.28
+    | Stunnel_exception -- ^ @stunnel-exception@, stunnel Exception, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | SWI_exception -- ^ @SWI-exception@, SWI exception, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Swift_exception -- ^ @Swift-exception@, Swift Exception, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Texinfo_exception -- ^ @Texinfo-exception@, Texinfo exception, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
     | U_boot_exception_2_0 -- ^ @u-boot-exception-2.0@, U-Boot exception 2.0
-    | UBDL_exception -- ^ @UBDL-exception@, Unmodified Binary Distribution exception, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Universal_FOSS_exception_1_0 -- ^ @Universal-FOSS-exception-1.0@, Universal FOSS Exception, Version 1.0, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Vsftpd_openssl_exception -- ^ @vsftpd-openssl-exception@, vsftpd OpenSSL exception, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
+    | UBDL_exception -- ^ @UBDL-exception@, Unmodified Binary Distribution exception, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Universal_FOSS_exception_1_0 -- ^ @Universal-FOSS-exception-1.0@, Universal FOSS Exception, Version 1.0, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Vsftpd_openssl_exception -- ^ @vsftpd-openssl-exception@, vsftpd OpenSSL exception, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
     | WxWindows_exception_3_1 -- ^ @WxWindows-exception-3.1@, WxWindows Library Exception 3.1
-    | X11vnc_openssl_exception -- ^ @x11vnc-openssl-exception@, x11vnc OpenSSL Exception, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
+    | X11vnc_openssl_exception -- ^ @x11vnc-openssl-exception@, x11vnc OpenSSL Exception, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
   deriving (Eq, Ord, Enum, Bounded, Show, Read, Data, Generic)
 
 instance Binary LicenseExceptionId where
@@ -123,7 +128,7 @@
 
 -- note: remember to bump version each time the definition changes
 instance Structured LicenseExceptionId where
-    structure p = set typeVersion 307 $ nominalStructure p
+    structure p = set typeVersion 308 $ nominalStructure p
 
 instance Pretty LicenseExceptionId where
     pretty = Disp.text . licenseExceptionId
@@ -156,6 +161,7 @@
 licenseExceptionId Bison_exception_2_2 = "Bison-exception-2.2"
 licenseExceptionId Bootloader_exception = "Bootloader-exception"
 licenseExceptionId CGAL_linking_exception = "CGAL-linking-exception"
+licenseExceptionId Classpath_exception_2_0_short = "Classpath-exception-2.0-short"
 licenseExceptionId Classpath_exception_2_0 = "Classpath-exception-2.0"
 licenseExceptionId CLISP_exception_2_0 = "CLISP-exception-2.0"
 licenseExceptionId Cryptsetup_OpenSSL_exception = "cryptsetup-OpenSSL-exception"
@@ -187,6 +193,7 @@
 licenseExceptionId I2p_gpl_java_exception = "i2p-gpl-java-exception"
 licenseExceptionId Independent_modules_exception = "Independent-modules-exception"
 licenseExceptionId KiCad_libraries_exception = "KiCad-libraries-exception"
+licenseExceptionId Kvirc_openssl_exception = "kvirc-openssl-exception"
 licenseExceptionId LGPL_3_0_linking_exception = "LGPL-3.0-linking-exception"
 licenseExceptionId Libpri_OpenH323_exception = "libpri-OpenH323-exception"
 licenseExceptionId Libtool_exception = "Libtool-exception"
@@ -210,9 +217,12 @@
 licenseExceptionId Qwt_exception_1_0 = "Qwt-exception-1.0"
 licenseExceptionId Romic_exception = "romic-exception"
 licenseExceptionId RRDtool_FLOSS_exception_2_0 = "RRDtool-FLOSS-exception-2.0"
+licenseExceptionId Rsync_linking_exception = "rsync-linking-exception"
 licenseExceptionId SANE_exception = "SANE-exception"
 licenseExceptionId SHL_2_0 = "SHL-2.0"
 licenseExceptionId SHL_2_1 = "SHL-2.1"
+licenseExceptionId Simple_Library_Usage_exception = "Simple-Library-Usage-exception"
+licenseExceptionId Sqlitestudio_OpenSSL_exception = "sqlitestudio-OpenSSL-exception"
 licenseExceptionId Stunnel_exception = "stunnel-exception"
 licenseExceptionId SWI_exception = "SWI-exception"
 licenseExceptionId Swift_exception = "Swift-exception"
@@ -238,6 +248,7 @@
 licenseExceptionName Bison_exception_2_2 = "Bison exception 2.2"
 licenseExceptionName Bootloader_exception = "Bootloader Distribution Exception"
 licenseExceptionName CGAL_linking_exception = "CGAL Linking Exception"
+licenseExceptionName Classpath_exception_2_0_short = "Classpath exception 2.0 - short"
 licenseExceptionName Classpath_exception_2_0 = "Classpath exception 2.0"
 licenseExceptionName CLISP_exception_2_0 = "CLISP exception 2.0"
 licenseExceptionName Cryptsetup_OpenSSL_exception = "cryptsetup OpenSSL exception"
@@ -269,6 +280,7 @@
 licenseExceptionName I2p_gpl_java_exception = "i2p GPL+Java Exception"
 licenseExceptionName Independent_modules_exception = "Independent Module Linking exception"
 licenseExceptionName KiCad_libraries_exception = "KiCad Libraries Exception"
+licenseExceptionName Kvirc_openssl_exception = "kvirc OpenSSL Exception"
 licenseExceptionName LGPL_3_0_linking_exception = "LGPL-3.0 Linking Exception"
 licenseExceptionName Libpri_OpenH323_exception = "libpri OpenH323 exception"
 licenseExceptionName Libtool_exception = "Libtool Exception"
@@ -292,9 +304,12 @@
 licenseExceptionName Qwt_exception_1_0 = "Qwt exception 1.0"
 licenseExceptionName Romic_exception = "Romic Exception"
 licenseExceptionName RRDtool_FLOSS_exception_2_0 = "RRDtool FLOSS exception 2.0"
+licenseExceptionName Rsync_linking_exception = "rsync Linking Exception"
 licenseExceptionName SANE_exception = "SANE Exception"
 licenseExceptionName SHL_2_0 = "Solderpad Hardware License v2.0"
 licenseExceptionName SHL_2_1 = "Solderpad Hardware License v2.1"
+licenseExceptionName Simple_Library_Usage_exception = "Simple Library Usage Exception"
+licenseExceptionName Sqlitestudio_OpenSSL_exception = "sqlitestudio OpenSSL exception"
 licenseExceptionName Stunnel_exception = "stunnel Exception"
 licenseExceptionName SWI_exception = "SWI exception"
 licenseExceptionName Swift_exception = "Swift Exception"
@@ -533,6 +548,66 @@
     , X11vnc_openssl_exception
     ]
     ++ bulkOfLicenses
+licenseExceptionIdList LicenseListVersion_3_28 =
+    [ Asterisk_exception
+    , Asterisk_linking_protocols_exception
+    , Autoconf_exception_generic_3_0
+    , Autoconf_exception_generic
+    , Autoconf_exception_macro
+    , Bison_exception_1_24
+    , CGAL_linking_exception
+    , Classpath_exception_2_0_short
+    , Cryptsetup_OpenSSL_exception
+    , Digia_Qt_LGPL_exception_1_1
+    , Erlang_otp_linking_exception
+    , Fmt_exception
+    , GCC_exception_2_0_note
+    , Gmsh_exception
+    , GNAT_exception
+    , GNOME_examples_exception
+    , GNU_compiler_exception
+    , GPL_3_0_389_ds_base_exception
+    , GPL_3_0_interface_exception
+    , GPL_3_0_linking_exception
+    , GPL_3_0_linking_source_exception
+    , GPL_CC_1_0
+    , GStreamer_exception_2005
+    , GStreamer_exception_2008
+    , Harbour_exception
+    , Independent_modules_exception
+    , KiCad_libraries_exception
+    , Kvirc_openssl_exception
+    , LGPL_3_0_linking_exception
+    , Libpri_OpenH323_exception
+    , LLGPL
+    , LLVM_exception
+    , Mxml_exception
+    , OCaml_LGPL_linking_exception
+    , OpenJDK_assembly_exception_1_0
+    , PCRE2_exception
+    , Polyparse_exception
+    , PS_or_PDF_font_exception_20170817
+    , QPL_1_0_INRIA_2004_exception
+    , Qt_GPL_exception_1_0
+    , Qt_LGPL_exception_1_1
+    , Romic_exception
+    , RRDtool_FLOSS_exception_2_0
+    , Rsync_linking_exception
+    , SANE_exception
+    , SHL_2_0
+    , SHL_2_1
+    , Simple_Library_Usage_exception
+    , Sqlitestudio_OpenSSL_exception
+    , Stunnel_exception
+    , SWI_exception
+    , Swift_exception
+    , Texinfo_exception
+    , UBDL_exception
+    , Universal_FOSS_exception_1_0
+    , Vsftpd_openssl_exception
+    , X11vnc_openssl_exception
+    ]
+    ++ bulkOfLicenses
 
 -- | Create a 'LicenseExceptionId' from a 'String'.
 mkLicenseExceptionId :: LicenseListVersion -> String -> Maybe LicenseExceptionId
@@ -545,6 +620,7 @@
 mkLicenseExceptionId LicenseListVersion_3_23 s = Map.lookup s stringLookup_3_23
 mkLicenseExceptionId LicenseListVersion_3_25 s = Map.lookup s stringLookup_3_25
 mkLicenseExceptionId LicenseListVersion_3_26 s = Map.lookup s stringLookup_3_26
+mkLicenseExceptionId LicenseListVersion_3_28 s = Map.lookup s stringLookup_3_28
 
 stringLookup_3_0 :: Map String LicenseExceptionId
 stringLookup_3_0 = Map.fromList $ map (\i -> (licenseExceptionId i, i)) $
@@ -581,6 +657,10 @@
 stringLookup_3_26 :: Map String LicenseExceptionId
 stringLookup_3_26 = Map.fromList $ map (\i -> (licenseExceptionId i, i)) $
     licenseExceptionIdList LicenseListVersion_3_26
+
+stringLookup_3_28 :: Map String LicenseExceptionId
+stringLookup_3_28 = Map.fromList $ map (\i -> (licenseExceptionId i, i)) $
+    licenseExceptionIdList LicenseListVersion_3_28
 
 --  | License exceptions in all SPDX License lists
 bulkOfLicenses :: [LicenseExceptionId]
diff --git a/src/Distribution/SPDX/LicenseId.hs b/src/Distribution/SPDX/LicenseId.hs
--- a/src/Distribution/SPDX/LicenseId.hs
+++ b/src/Distribution/SPDX/LicenseId.hs
@@ -33,3634 +33,4091 @@
 -- LicenseId
 -------------------------------------------------------------------------------
 
--- | SPDX License identifiers list v3.26
-data LicenseId
-    = N_0BSD -- ^ @0BSD@, BSD Zero Clause License
-    | N_3D_Slicer_1_0 -- ^ @3D-Slicer-1.0@, 3D Slicer License v1.0, SPDX License List 3.25, SPDX License List 3.26
-    | AAL -- ^ @AAL@, Attribution Assurance License
-    | Abstyles -- ^ @Abstyles@, Abstyles License
-    | AdaCore_doc -- ^ @AdaCore-doc@, AdaCore Doc License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Adobe_2006 -- ^ @Adobe-2006@, Adobe Systems Incorporated Source Code License Agreement
-    | Adobe_Display_PostScript -- ^ @Adobe-Display-PostScript@, Adobe Display PostScript License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Adobe_Glyph -- ^ @Adobe-Glyph@, Adobe Glyph List License
-    | Adobe_Utopia -- ^ @Adobe-Utopia@, Adobe Utopia Font License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | ADSL -- ^ @ADSL@, Amazon Digital Services License
-    | AFL_1_1 -- ^ @AFL-1.1@, Academic Free License v1.1
-    | AFL_1_2 -- ^ @AFL-1.2@, Academic Free License v1.2
-    | AFL_2_0 -- ^ @AFL-2.0@, Academic Free License v2.0
-    | AFL_2_1 -- ^ @AFL-2.1@, Academic Free License v2.1
-    | AFL_3_0 -- ^ @AFL-3.0@, Academic Free License v3.0
-    | Afmparse -- ^ @Afmparse@, Afmparse License
-    | AGPL_1_0 -- ^ @AGPL-1.0@, Affero General Public License v1.0, SPDX License List 3.0
-    | AGPL_1_0_only -- ^ @AGPL-1.0-only@, Affero General Public License v1.0 only, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | AGPL_1_0_or_later -- ^ @AGPL-1.0-or-later@, Affero General Public License v1.0 or later, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | AGPL_3_0_only -- ^ @AGPL-3.0-only@, GNU Affero General Public License v3.0 only
-    | AGPL_3_0_or_later -- ^ @AGPL-3.0-or-later@, GNU Affero General Public License v3.0 or later
-    | Aladdin -- ^ @Aladdin@, Aladdin Free Public License
-    | AMD_newlib -- ^ @AMD-newlib@, AMD newlib License, SPDX License List 3.25, SPDX License List 3.26
-    | AMDPLPA -- ^ @AMDPLPA@, AMD's plpa_map.c License
-    | AML_glslang -- ^ @AML-glslang@, AML glslang variant License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | AML -- ^ @AML@, Apple MIT License
-    | AMPAS -- ^ @AMPAS@, Academy of Motion Picture Arts and Sciences BSD
-    | ANTLR_PD_fallback -- ^ @ANTLR-PD-fallback@, ANTLR Software Rights Notice with license fallback, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | ANTLR_PD -- ^ @ANTLR-PD@, ANTLR Software Rights Notice
-    | Any_OSI_perl_modules -- ^ @any-OSI-perl-modules@, Any OSI License - Perl Modules, SPDX License List 3.26
-    | Any_OSI -- ^ @any-OSI@, Any OSI License, SPDX License List 3.25, SPDX License List 3.26
-    | Apache_1_0 -- ^ @Apache-1.0@, Apache License 1.0
-    | Apache_1_1 -- ^ @Apache-1.1@, Apache License 1.1
-    | Apache_2_0 -- ^ @Apache-2.0@, Apache License 2.0
-    | APAFML -- ^ @APAFML@, Adobe Postscript AFM License
-    | APL_1_0 -- ^ @APL-1.0@, Adaptive Public License 1.0
-    | App_s2p -- ^ @App-s2p@, App::s2p License, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | APSL_1_0 -- ^ @APSL-1.0@, Apple Public Source License 1.0
-    | APSL_1_1 -- ^ @APSL-1.1@, Apple Public Source License 1.1
-    | APSL_1_2 -- ^ @APSL-1.2@, Apple Public Source License 1.2
-    | APSL_2_0 -- ^ @APSL-2.0@, Apple Public Source License 2.0
-    | Arphic_1999 -- ^ @Arphic-1999@, Arphic Public License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Artistic_1_0_cl8 -- ^ @Artistic-1.0-cl8@, Artistic License 1.0 w/clause 8
-    | Artistic_1_0_Perl -- ^ @Artistic-1.0-Perl@, Artistic License 1.0 (Perl)
-    | Artistic_1_0 -- ^ @Artistic-1.0@, Artistic License 1.0
-    | Artistic_2_0 -- ^ @Artistic-2.0@, Artistic License 2.0
-    | Artistic_dist -- ^ @Artistic-dist@, Artistic License 1.0 (dist), SPDX License List 3.26
-    | Aspell_RU -- ^ @Aspell-RU@, Aspell Russian License, SPDX License List 3.26
-    | ASWF_Digital_Assets_1_0 -- ^ @ASWF-Digital-Assets-1.0@, ASWF Digital Assets License version 1.0, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | ASWF_Digital_Assets_1_1 -- ^ @ASWF-Digital-Assets-1.1@, ASWF Digital Assets License 1.1, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Baekmuk -- ^ @Baekmuk@, Baekmuk License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Bahyph -- ^ @Bahyph@, Bahyph License
-    | Barr -- ^ @Barr@, Barr License
-    | Bcrypt_Solar_Designer -- ^ @bcrypt-Solar-Designer@, bcrypt Solar Designer License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Beerware -- ^ @Beerware@, Beerware License
-    | Bitstream_Charter -- ^ @Bitstream-Charter@, Bitstream Charter Font License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Bitstream_Vera -- ^ @Bitstream-Vera@, Bitstream Vera Font License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | BitTorrent_1_0 -- ^ @BitTorrent-1.0@, BitTorrent Open Source License v1.0
-    | BitTorrent_1_1 -- ^ @BitTorrent-1.1@, BitTorrent Open Source License v1.1
-    | Blessing -- ^ @blessing@, SQLite Blessing, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | BlueOak_1_0_0 -- ^ @BlueOak-1.0.0@, Blue Oak Model License 1.0.0, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Boehm_GC_without_fee -- ^ @Boehm-GC-without-fee@, Boehm-Demers-Weiser GC License (without fee), SPDX License List 3.26
-    | Boehm_GC -- ^ @Boehm-GC@, Boehm-Demers-Weiser GC License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Borceux -- ^ @Borceux@, Borceux license
-    | Brian_Gladman_2_Clause -- ^ @Brian-Gladman-2-Clause@, Brian Gladman 2-Clause License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Brian_Gladman_3_Clause -- ^ @Brian-Gladman-3-Clause@, Brian Gladman 3-Clause License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | BSD_1_Clause -- ^ @BSD-1-Clause@, BSD 1-Clause License
-    | BSD_2_Clause_FreeBSD -- ^ @BSD-2-Clause-FreeBSD@, BSD 2-Clause FreeBSD License, SPDX License List 3.0, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9
-    | BSD_2_Clause_NetBSD -- ^ @BSD-2-Clause-NetBSD@, BSD 2-Clause NetBSD License, SPDX License List 3.0, SPDX License List 3.2, SPDX License List 3.6
-    | BSD_2_Clause_Darwin -- ^ @BSD-2-Clause-Darwin@, BSD 2-Clause - Ian Darwin variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | BSD_2_Clause_first_lines -- ^ @BSD-2-Clause-first-lines@, BSD 2-Clause - first lines requirement, SPDX License List 3.25, SPDX License List 3.26
-    | BSD_2_Clause_Patent -- ^ @BSD-2-Clause-Patent@, BSD-2-Clause Plus Patent License
-    | BSD_2_Clause_pkgconf_disclaimer -- ^ @BSD-2-Clause-pkgconf-disclaimer@, BSD 2-Clause pkgconf disclaimer variant, SPDX License List 3.26
-    | BSD_2_Clause_Views -- ^ @BSD-2-Clause-Views@, BSD 2-Clause with views sentence, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | BSD_2_Clause -- ^ @BSD-2-Clause@, BSD 2-Clause "Simplified" License
-    | BSD_3_Clause_acpica -- ^ @BSD-3-Clause-acpica@, BSD 3-Clause acpica variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | BSD_3_Clause_Attribution -- ^ @BSD-3-Clause-Attribution@, BSD with attribution
-    | BSD_3_Clause_Clear -- ^ @BSD-3-Clause-Clear@, BSD 3-Clause Clear License
-    | BSD_3_Clause_flex -- ^ @BSD-3-Clause-flex@, BSD 3-Clause Flex variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | BSD_3_Clause_HP -- ^ @BSD-3-Clause-HP@, Hewlett-Packard BSD variant license, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | BSD_3_Clause_LBNL -- ^ @BSD-3-Clause-LBNL@, Lawrence Berkeley National Labs BSD variant license
-    | BSD_3_Clause_Modification -- ^ @BSD-3-Clause-Modification@, BSD 3-Clause Modification, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | BSD_3_Clause_No_Military_License -- ^ @BSD-3-Clause-No-Military-License@, BSD 3-Clause No Military License, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | BSD_3_Clause_No_Nuclear_License_2014 -- ^ @BSD-3-Clause-No-Nuclear-License-2014@, BSD 3-Clause No Nuclear License 2014
-    | BSD_3_Clause_No_Nuclear_License -- ^ @BSD-3-Clause-No-Nuclear-License@, BSD 3-Clause No Nuclear License
-    | BSD_3_Clause_No_Nuclear_Warranty -- ^ @BSD-3-Clause-No-Nuclear-Warranty@, BSD 3-Clause No Nuclear Warranty
-    | BSD_3_Clause_Open_MPI -- ^ @BSD-3-Clause-Open-MPI@, BSD 3-Clause Open MPI variant, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | BSD_3_Clause_Sun -- ^ @BSD-3-Clause-Sun@, BSD 3-Clause Sun Microsystems, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | BSD_3_Clause -- ^ @BSD-3-Clause@, BSD 3-Clause "New" or "Revised" License
-    | BSD_4_Clause_Shortened -- ^ @BSD-4-Clause-Shortened@, BSD 4 Clause Shortened, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | BSD_4_Clause_UC -- ^ @BSD-4-Clause-UC@, BSD-4-Clause (University of California-Specific)
-    | BSD_4_Clause -- ^ @BSD-4-Clause@, BSD 4-Clause "Original" or "Old" License
-    | BSD_4_3RENO -- ^ @BSD-4.3RENO@, BSD 4.3 RENO License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | BSD_4_3TAHOE -- ^ @BSD-4.3TAHOE@, BSD 4.3 TAHOE License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | BSD_Advertising_Acknowledgement -- ^ @BSD-Advertising-Acknowledgement@, BSD Advertising Acknowledgement License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | BSD_Attribution_HPND_disclaimer -- ^ @BSD-Attribution-HPND-disclaimer@, BSD with Attribution and HPND disclaimer, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | BSD_Inferno_Nettverk -- ^ @BSD-Inferno-Nettverk@, BSD-Inferno-Nettverk, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | BSD_Protection -- ^ @BSD-Protection@, BSD Protection License
-    | BSD_Source_beginning_file -- ^ @BSD-Source-beginning-file@, BSD Source Code Attribution - beginning of file variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | BSD_Source_Code -- ^ @BSD-Source-Code@, BSD Source Code Attribution
-    | BSD_Systemics_W3Works -- ^ @BSD-Systemics-W3Works@, Systemics W3Works BSD variant license, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | BSD_Systemics -- ^ @BSD-Systemics@, Systemics BSD variant license, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | BSL_1_0 -- ^ @BSL-1.0@, Boost Software License 1.0
-    | Bzip2_1_0_5 -- ^ @bzip2-1.0.5@, bzip2 and libbzip2 License v1.0.5, SPDX License List 3.0, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10
-    | BUSL_1_1 -- ^ @BUSL-1.1@, Business Source License 1.1, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Bzip2_1_0_6 -- ^ @bzip2-1.0.6@, bzip2 and libbzip2 License v1.0.6
-    | C_UDA_1_0 -- ^ @C-UDA-1.0@, Computational Use of Data Agreement v1.0, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | CAL_1_0_Combined_Work_Exception -- ^ @CAL-1.0-Combined-Work-Exception@, Cryptographic Autonomy License 1.0 (Combined Work Exception), SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | CAL_1_0 -- ^ @CAL-1.0@, Cryptographic Autonomy License 1.0, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Caldera_no_preamble -- ^ @Caldera-no-preamble@, Caldera License (without preamble), SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Caldera -- ^ @Caldera@, Caldera License
-    | Catharon -- ^ @Catharon@, Catharon License, SPDX License List 3.25, SPDX License List 3.26
-    | CATOSL_1_1 -- ^ @CATOSL-1.1@, Computer Associates Trusted Open Source License 1.1
-    | CC_BY_1_0 -- ^ @CC-BY-1.0@, Creative Commons Attribution 1.0 Generic
-    | CC_BY_2_0 -- ^ @CC-BY-2.0@, Creative Commons Attribution 2.0 Generic
-    | CC_BY_2_5_AU -- ^ @CC-BY-2.5-AU@, Creative Commons Attribution 2.5 Australia, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | CC_BY_2_5 -- ^ @CC-BY-2.5@, Creative Commons Attribution 2.5 Generic
-    | CC_BY_3_0_AT -- ^ @CC-BY-3.0-AT@, Creative Commons Attribution 3.0 Austria, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | CC_BY_3_0_AU -- ^ @CC-BY-3.0-AU@, Creative Commons Attribution 3.0 Australia, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | CC_BY_3_0_DE -- ^ @CC-BY-3.0-DE@, Creative Commons Attribution 3.0 Germany, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | CC_BY_3_0_IGO -- ^ @CC-BY-3.0-IGO@, Creative Commons Attribution 3.0 IGO, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | CC_BY_3_0_NL -- ^ @CC-BY-3.0-NL@, Creative Commons Attribution 3.0 Netherlands, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | CC_BY_3_0_US -- ^ @CC-BY-3.0-US@, Creative Commons Attribution 3.0 United States, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | CC_BY_3_0 -- ^ @CC-BY-3.0@, Creative Commons Attribution 3.0 Unported
-    | CC_BY_4_0 -- ^ @CC-BY-4.0@, Creative Commons Attribution 4.0 International
-    | CC_BY_NC_1_0 -- ^ @CC-BY-NC-1.0@, Creative Commons Attribution Non Commercial 1.0 Generic
-    | CC_BY_NC_2_0 -- ^ @CC-BY-NC-2.0@, Creative Commons Attribution Non Commercial 2.0 Generic
-    | CC_BY_NC_2_5 -- ^ @CC-BY-NC-2.5@, Creative Commons Attribution Non Commercial 2.5 Generic
-    | CC_BY_NC_3_0_DE -- ^ @CC-BY-NC-3.0-DE@, Creative Commons Attribution Non Commercial 3.0 Germany, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | CC_BY_NC_3_0 -- ^ @CC-BY-NC-3.0@, Creative Commons Attribution Non Commercial 3.0 Unported
-    | CC_BY_NC_4_0 -- ^ @CC-BY-NC-4.0@, Creative Commons Attribution Non Commercial 4.0 International
-    | CC_BY_NC_ND_1_0 -- ^ @CC-BY-NC-ND-1.0@, Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic
-    | CC_BY_NC_ND_2_0 -- ^ @CC-BY-NC-ND-2.0@, Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic
-    | CC_BY_NC_ND_2_5 -- ^ @CC-BY-NC-ND-2.5@, Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic
-    | CC_BY_NC_ND_3_0_DE -- ^ @CC-BY-NC-ND-3.0-DE@, Creative Commons Attribution Non Commercial No Derivatives 3.0 Germany, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | CC_BY_NC_ND_3_0_IGO -- ^ @CC-BY-NC-ND-3.0-IGO@, Creative Commons Attribution Non Commercial No Derivatives 3.0 IGO, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | CC_BY_NC_ND_3_0 -- ^ @CC-BY-NC-ND-3.0@, Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported
-    | CC_BY_NC_ND_4_0 -- ^ @CC-BY-NC-ND-4.0@, Creative Commons Attribution Non Commercial No Derivatives 4.0 International
-    | CC_BY_NC_SA_1_0 -- ^ @CC-BY-NC-SA-1.0@, Creative Commons Attribution Non Commercial Share Alike 1.0 Generic
-    | CC_BY_NC_SA_2_0_DE -- ^ @CC-BY-NC-SA-2.0-DE@, Creative Commons Attribution Non Commercial Share Alike 2.0 Germany, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | CC_BY_NC_SA_2_0_FR -- ^ @CC-BY-NC-SA-2.0-FR@, Creative Commons Attribution-NonCommercial-ShareAlike 2.0 France, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | CC_BY_NC_SA_2_0_UK -- ^ @CC-BY-NC-SA-2.0-UK@, Creative Commons Attribution Non Commercial Share Alike 2.0 England and Wales, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | CC_BY_NC_SA_2_0 -- ^ @CC-BY-NC-SA-2.0@, Creative Commons Attribution Non Commercial Share Alike 2.0 Generic
-    | CC_BY_NC_SA_2_5 -- ^ @CC-BY-NC-SA-2.5@, Creative Commons Attribution Non Commercial Share Alike 2.5 Generic
-    | CC_BY_NC_SA_3_0_DE -- ^ @CC-BY-NC-SA-3.0-DE@, Creative Commons Attribution Non Commercial Share Alike 3.0 Germany, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | CC_BY_NC_SA_3_0_IGO -- ^ @CC-BY-NC-SA-3.0-IGO@, Creative Commons Attribution Non Commercial Share Alike 3.0 IGO, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | CC_BY_NC_SA_3_0 -- ^ @CC-BY-NC-SA-3.0@, Creative Commons Attribution Non Commercial Share Alike 3.0 Unported
-    | CC_BY_NC_SA_4_0 -- ^ @CC-BY-NC-SA-4.0@, Creative Commons Attribution Non Commercial Share Alike 4.0 International
-    | CC_BY_ND_1_0 -- ^ @CC-BY-ND-1.0@, Creative Commons Attribution No Derivatives 1.0 Generic
-    | CC_BY_ND_2_0 -- ^ @CC-BY-ND-2.0@, Creative Commons Attribution No Derivatives 2.0 Generic
-    | CC_BY_ND_2_5 -- ^ @CC-BY-ND-2.5@, Creative Commons Attribution No Derivatives 2.5 Generic
-    | CC_BY_ND_3_0_DE -- ^ @CC-BY-ND-3.0-DE@, Creative Commons Attribution No Derivatives 3.0 Germany, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | CC_BY_ND_3_0 -- ^ @CC-BY-ND-3.0@, Creative Commons Attribution No Derivatives 3.0 Unported
-    | CC_BY_ND_4_0 -- ^ @CC-BY-ND-4.0@, Creative Commons Attribution No Derivatives 4.0 International
-    | CC_BY_SA_1_0 -- ^ @CC-BY-SA-1.0@, Creative Commons Attribution Share Alike 1.0 Generic
-    | CC_BY_SA_2_0_UK -- ^ @CC-BY-SA-2.0-UK@, Creative Commons Attribution Share Alike 2.0 England and Wales, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | CC_BY_SA_2_0 -- ^ @CC-BY-SA-2.0@, Creative Commons Attribution Share Alike 2.0 Generic
-    | CC_BY_SA_2_1_JP -- ^ @CC-BY-SA-2.1-JP@, Creative Commons Attribution Share Alike 2.1 Japan, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | CC_BY_SA_2_5 -- ^ @CC-BY-SA-2.5@, Creative Commons Attribution Share Alike 2.5 Generic
-    | CC_BY_SA_3_0_AT -- ^ @CC-BY-SA-3.0-AT@, Creative Commons Attribution Share Alike 3.0 Austria, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | CC_BY_SA_3_0_DE -- ^ @CC-BY-SA-3.0-DE@, Creative Commons Attribution Share Alike 3.0 Germany, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | CC_BY_SA_3_0_IGO -- ^ @CC-BY-SA-3.0-IGO@, Creative Commons Attribution-ShareAlike 3.0 IGO, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | CC_BY_SA_3_0 -- ^ @CC-BY-SA-3.0@, Creative Commons Attribution Share Alike 3.0 Unported
-    | CC_BY_SA_4_0 -- ^ @CC-BY-SA-4.0@, Creative Commons Attribution Share Alike 4.0 International
-    | CC_PDDC -- ^ @CC-PDDC@, Creative Commons Public Domain Dedication and Certification, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | CC_PDM_1_0 -- ^ @CC-PDM-1.0@, Creative    Commons Public Domain Mark 1.0 Universal, SPDX License List 3.26
-    | CC_SA_1_0 -- ^ @CC-SA-1.0@, Creative Commons Share Alike 1.0 Generic, SPDX License List 3.26
-    | CC0_1_0 -- ^ @CC0-1.0@, Creative Commons Zero v1.0 Universal
-    | CDDL_1_0 -- ^ @CDDL-1.0@, Common Development and Distribution License 1.0
-    | CDDL_1_1 -- ^ @CDDL-1.1@, Common Development and Distribution License 1.1
-    | CDL_1_0 -- ^ @CDL-1.0@, Common Documentation License 1.0, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | CDLA_Permissive_1_0 -- ^ @CDLA-Permissive-1.0@, Community Data License Agreement Permissive 1.0
-    | CDLA_Permissive_2_0 -- ^ @CDLA-Permissive-2.0@, Community Data License Agreement Permissive 2.0, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | CDLA_Sharing_1_0 -- ^ @CDLA-Sharing-1.0@, Community Data License Agreement Sharing 1.0
-    | CECILL_1_0 -- ^ @CECILL-1.0@, CeCILL Free Software License Agreement v1.0
-    | CECILL_1_1 -- ^ @CECILL-1.1@, CeCILL Free Software License Agreement v1.1
-    | CECILL_2_0 -- ^ @CECILL-2.0@, CeCILL Free Software License Agreement v2.0
-    | CECILL_2_1 -- ^ @CECILL-2.1@, CeCILL Free Software License Agreement v2.1
-    | CECILL_B -- ^ @CECILL-B@, CeCILL-B Free Software License Agreement
-    | CECILL_C -- ^ @CECILL-C@, CeCILL-C Free Software License Agreement
-    | CERN_OHL_1_1 -- ^ @CERN-OHL-1.1@, CERN Open Hardware Licence v1.1, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | CERN_OHL_1_2 -- ^ @CERN-OHL-1.2@, CERN Open Hardware Licence v1.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | CERN_OHL_P_2_0 -- ^ @CERN-OHL-P-2.0@, CERN Open Hardware Licence Version 2 - Permissive, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | CERN_OHL_S_2_0 -- ^ @CERN-OHL-S-2.0@, CERN Open Hardware Licence Version 2 - Strongly Reciprocal, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | CERN_OHL_W_2_0 -- ^ @CERN-OHL-W-2.0@, CERN Open Hardware Licence Version 2 - Weakly Reciprocal, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | CFITSIO -- ^ @CFITSIO@, CFITSIO License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Check_cvs -- ^ @check-cvs@, check-cvs License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Checkmk -- ^ @checkmk@, Checkmk License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | ClArtistic -- ^ @ClArtistic@, Clarified Artistic License
-    | Clips -- ^ @Clips@, Clips License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | CMU_Mach_nodoc -- ^ @CMU-Mach-nodoc@, CMU    Mach - no notices-in-documentation variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | CMU_Mach -- ^ @CMU-Mach@, CMU Mach License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | CNRI_Jython -- ^ @CNRI-Jython@, CNRI Jython License
-    | CNRI_Python_GPL_Compatible -- ^ @CNRI-Python-GPL-Compatible@, CNRI Python Open Source GPL Compatible License Agreement
-    | CNRI_Python -- ^ @CNRI-Python@, CNRI Python License
-    | COIL_1_0 -- ^ @COIL-1.0@, Copyfree Open Innovation License, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Community_Spec_1_0 -- ^ @Community-Spec-1.0@, Community Specification License 1.0, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Condor_1_1 -- ^ @Condor-1.1@, Condor Public License v1.1
-    | Copyleft_next_0_3_0 -- ^ @copyleft-next-0.3.0@, copyleft-next 0.3.0, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Copyleft_next_0_3_1 -- ^ @copyleft-next-0.3.1@, copyleft-next 0.3.1, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Cornell_Lossless_JPEG -- ^ @Cornell-Lossless-JPEG@, Cornell Lossless JPEG License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | CPAL_1_0 -- ^ @CPAL-1.0@, Common Public Attribution License 1.0
-    | CPL_1_0 -- ^ @CPL-1.0@, Common Public License 1.0
-    | CPOL_1_02 -- ^ @CPOL-1.02@, Code Project Open License 1.02
-    | Cronyx -- ^ @Cronyx@, Cronyx License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Crossword -- ^ @Crossword@, Crossword License
-    | CryptoSwift -- ^ @CryptoSwift@, CryptoSwift License, SPDX License List 3.26
-    | CrystalStacker -- ^ @CrystalStacker@, CrystalStacker License
-    | CUA_OPL_1_0 -- ^ @CUA-OPL-1.0@, CUA Office Public License v1.0
-    | Cube -- ^ @Cube@, Cube License
-    | Curl -- ^ @curl@, curl License
-    | Cve_tou -- ^ @cve-tou@, Common Vulnerability Enumeration ToU License, SPDX License List 3.25, SPDX License List 3.26
-    | D_FSL_1_0 -- ^ @D-FSL-1.0@, Deutsche Freie Software Lizenz
-    | DEC_3_Clause -- ^ @DEC-3-Clause@, DEC 3-Clause License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Diffmark -- ^ @diffmark@, diffmark license
-    | DL_DE_BY_2_0 -- ^ @DL-DE-BY-2.0@, Data licence Germany – attribution – version 2.0, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | DL_DE_ZERO_2_0 -- ^ @DL-DE-ZERO-2.0@, Data licence Germany – zero – version 2.0, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | DocBook_DTD -- ^ @DocBook-DTD@, DocBook DTD License, SPDX License List 3.26
-    | DocBook_Schema -- ^ @DocBook-Schema@, DocBook Schema License, SPDX License List 3.25, SPDX License List 3.26
-    | DocBook_Stylesheet -- ^ @DocBook-Stylesheet@, DocBook Stylesheet License, SPDX License List 3.26
-    | DocBook_XML -- ^ @DocBook-XML@, DocBook XML License, SPDX License List 3.25, SPDX License List 3.26
-    | DOC -- ^ @DOC@, DOC License
-    | Dotseqn -- ^ @Dotseqn@, Dotseqn License
-    | DRL_1_0 -- ^ @DRL-1.0@, Detection Rule License 1.0, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | DRL_1_1 -- ^ @DRL-1.1@, Detection Rule License 1.1, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | DSDP -- ^ @DSDP@, DSDP License
-    | Dtoa -- ^ @dtoa@, David M. Gay dtoa License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Dvipdfm -- ^ @dvipdfm@, dvipdfm License
-    | ECL_1_0 -- ^ @ECL-1.0@, Educational Community License v1.0
-    | ECL_2_0 -- ^ @ECL-2.0@, Educational Community License v2.0
-    | EFL_1_0 -- ^ @EFL-1.0@, Eiffel Forum License v1.0
-    | EFL_2_0 -- ^ @EFL-2.0@, Eiffel Forum License v2.0
-    | EGenix -- ^ @eGenix@, eGenix.com Public License 1.1.0
-    | Elastic_2_0 -- ^ @Elastic-2.0@, Elastic License 2.0, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Entessa -- ^ @Entessa@, Entessa Public License v1.0
-    | EPICS -- ^ @EPICS@, EPICS Open License, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | EPL_1_0 -- ^ @EPL-1.0@, Eclipse Public License 1.0
-    | EPL_2_0 -- ^ @EPL-2.0@, Eclipse Public License 2.0
-    | ErlPL_1_1 -- ^ @ErlPL-1.1@, Erlang Public License v1.1
-    | Etalab_2_0 -- ^ @etalab-2.0@, Etalab Open License 2.0, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | EUDatagrid -- ^ @EUDatagrid@, EU DataGrid Software License
-    | EUPL_1_0 -- ^ @EUPL-1.0@, European Union Public License 1.0
-    | EUPL_1_1 -- ^ @EUPL-1.1@, European Union Public License 1.1
-    | EUPL_1_2 -- ^ @EUPL-1.2@, European Union Public License 1.2
-    | Eurosym -- ^ @Eurosym@, Eurosym License
-    | Fair -- ^ @Fair@, Fair License
-    | FBM -- ^ @FBM@, Fuzzy Bitmap License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | FDK_AAC -- ^ @FDK-AAC@, Fraunhofer FDK AAC Codec Library, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Ferguson_Twofish -- ^ @Ferguson-Twofish@, Ferguson Twofish License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Frameworx_1_0 -- ^ @Frameworx-1.0@, Frameworx Open License 1.0
-    | FreeBSD_DOC -- ^ @FreeBSD-DOC@, FreeBSD Documentation License, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | FreeImage -- ^ @FreeImage@, FreeImage Public License v1.0
-    | FSFAP_no_warranty_disclaimer -- ^ @FSFAP-no-warranty-disclaimer@, FSF All Permissive License (without Warranty), SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | FSFAP -- ^ @FSFAP@, FSF All Permissive License
-    | FSFULLRSD -- ^ @FSFULLRSD@, FSF Unlimited License (with License Retention and Short Disclaimer), SPDX License List 3.26
-    | FSFULLRWD -- ^ @FSFULLRWD@, FSF Unlimited License (With License Retention and Warranty Disclaimer), SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | FSFULLR -- ^ @FSFULLR@, FSF Unlimited License (with License Retention)
-    | FSFUL -- ^ @FSFUL@, FSF Unlimited License
-    | FSL_1_1_ALv2 -- ^ @FSL-1.1-ALv2@, Functional Source License, Version 1.1, ALv2 Future License, SPDX License List 3.26
-    | FSL_1_1_MIT -- ^ @FSL-1.1-MIT@, Functional Source License, Version 1.1, MIT Future License, SPDX License List 3.26
-    | FTL -- ^ @FTL@, Freetype Project License
-    | Furuseth -- ^ @Furuseth@, Furuseth License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Fwlw -- ^ @fwlw@, fwlw License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Game_Programming_Gems -- ^ @Game-Programming-Gems@, Game Programming Gems License, SPDX License List 3.26
-    | GCR_docs -- ^ @GCR-docs@, Gnome GCR Documentation License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | GD -- ^ @GD@, GD License, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Generic_xts -- ^ @generic-xts@, Generic XTS License, SPDX License List 3.26
-    | GFDL_1_1_invariants_only -- ^ @GFDL-1.1-invariants-only@, GNU Free Documentation License v1.1 only - invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | GFDL_1_1_invariants_or_later -- ^ @GFDL-1.1-invariants-or-later@, GNU Free Documentation License v1.1 or later - invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | GFDL_1_1_no_invariants_only -- ^ @GFDL-1.1-no-invariants-only@, GNU Free Documentation License v1.1 only - no invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | GFDL_1_1_no_invariants_or_later -- ^ @GFDL-1.1-no-invariants-or-later@, GNU Free Documentation License v1.1 or later - no invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | GFDL_1_1_only -- ^ @GFDL-1.1-only@, GNU Free Documentation License v1.1 only
-    | GFDL_1_1_or_later -- ^ @GFDL-1.1-or-later@, GNU Free Documentation License v1.1 or later
-    | GFDL_1_2_invariants_only -- ^ @GFDL-1.2-invariants-only@, GNU Free Documentation License v1.2 only - invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | GFDL_1_2_invariants_or_later -- ^ @GFDL-1.2-invariants-or-later@, GNU Free Documentation License v1.2 or later - invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | GFDL_1_2_no_invariants_only -- ^ @GFDL-1.2-no-invariants-only@, GNU Free Documentation License v1.2 only - no invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | GFDL_1_2_no_invariants_or_later -- ^ @GFDL-1.2-no-invariants-or-later@, GNU Free Documentation License v1.2 or later - no invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | GFDL_1_2_only -- ^ @GFDL-1.2-only@, GNU Free Documentation License v1.2 only
-    | GFDL_1_2_or_later -- ^ @GFDL-1.2-or-later@, GNU Free Documentation License v1.2 or later
-    | GFDL_1_3_invariants_only -- ^ @GFDL-1.3-invariants-only@, GNU Free Documentation License v1.3 only - invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | GFDL_1_3_invariants_or_later -- ^ @GFDL-1.3-invariants-or-later@, GNU Free Documentation License v1.3 or later - invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | GFDL_1_3_no_invariants_only -- ^ @GFDL-1.3-no-invariants-only@, GNU Free Documentation License v1.3 only - no invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | GFDL_1_3_no_invariants_or_later -- ^ @GFDL-1.3-no-invariants-or-later@, GNU Free Documentation License v1.3 or later - no invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | GFDL_1_3_only -- ^ @GFDL-1.3-only@, GNU Free Documentation License v1.3 only
-    | GFDL_1_3_or_later -- ^ @GFDL-1.3-or-later@, GNU Free Documentation License v1.3 or later
-    | Giftware -- ^ @Giftware@, Giftware License
-    | GL2PS -- ^ @GL2PS@, GL2PS License
-    | Glide -- ^ @Glide@, 3dfx Glide License
-    | Glulxe -- ^ @Glulxe@, Glulxe License
-    | GLWTPL -- ^ @GLWTPL@, Good Luck With That Public License, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Gnuplot -- ^ @gnuplot@, gnuplot License
-    | GPL_1_0_only -- ^ @GPL-1.0-only@, GNU General Public License v1.0 only
-    | GPL_1_0_or_later -- ^ @GPL-1.0-or-later@, GNU General Public License v1.0 or later
-    | GPL_2_0_only -- ^ @GPL-2.0-only@, GNU General Public License v2.0 only
-    | GPL_2_0_or_later -- ^ @GPL-2.0-or-later@, GNU General Public License v2.0 or later
-    | GPL_3_0_only -- ^ @GPL-3.0-only@, GNU General Public License v3.0 only
-    | GPL_3_0_or_later -- ^ @GPL-3.0-or-later@, GNU General Public License v3.0 or later
-    | Graphics_Gems -- ^ @Graphics-Gems@, Graphics Gems License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | GSOAP_1_3b -- ^ @gSOAP-1.3b@, gSOAP Public License v1.3b
-    | Gtkbook -- ^ @gtkbook@, gtkbook License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Gutmann -- ^ @Gutmann@, Gutmann License, SPDX License List 3.25, SPDX License List 3.26
-    | HaskellReport -- ^ @HaskellReport@, Haskell Language Report License
-    | HDF5 -- ^ @HDF5@, HDF5 License, SPDX License List 3.26
-    | Hdparm -- ^ @hdparm@, hdparm License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | HIDAPI -- ^ @HIDAPI@, HIDAPI License, SPDX License List 3.25, SPDX License List 3.26
-    | Hippocratic_2_1 -- ^ @Hippocratic-2.1@, Hippocratic License 2.1, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | HP_1986 -- ^ @HP-1986@, Hewlett-Packard 1986 License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | HP_1989 -- ^ @HP-1989@, Hewlett-Packard 1989 License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | HPND_DEC -- ^ @HPND-DEC@, Historical Permission Notice and Disclaimer - DEC variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | HPND_doc_sell -- ^ @HPND-doc-sell@, Historical Permission Notice and Disclaimer - documentation sell variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | HPND_doc -- ^ @HPND-doc@, Historical Permission Notice and Disclaimer - documentation variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | HPND_export_US_acknowledgement -- ^ @HPND-export-US-acknowledgement@, HPND with US Government export control warning and acknowledgment, SPDX License List 3.25, SPDX License List 3.26
-    | HPND_export_US_modify -- ^ @HPND-export-US-modify@, HPND with US Government export control warning and modification rqmt, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | HPND_export_US -- ^ @HPND-export-US@, HPND with US Government export control warning, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | HPND_export2_US -- ^ @HPND-export2-US@, HPND with US Government export control and 2 disclaimers, SPDX License List 3.25, SPDX License List 3.26
-    | HPND_Fenneberg_Livingston -- ^ @HPND-Fenneberg-Livingston@, Historical Permission Notice and Disclaimer - Fenneberg-Livingston variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | HPND_INRIA_IMAG -- ^ @HPND-INRIA-IMAG@, Historical Permission Notice and Disclaimer    - INRIA-IMAG variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | HPND_Intel -- ^ @HPND-Intel@, Historical Permission Notice and Disclaimer - Intel variant, SPDX License List 3.25, SPDX License List 3.26
-    | HPND_Kevlin_Henney -- ^ @HPND-Kevlin-Henney@, Historical Permission Notice and Disclaimer - Kevlin Henney variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | HPND_Markus_Kuhn -- ^ @HPND-Markus-Kuhn@, Historical Permission Notice and Disclaimer - Markus Kuhn variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | HPND_merchantability_variant -- ^ @HPND-merchantability-variant@, Historical Permission Notice and Disclaimer - merchantability variant, SPDX License List 3.25, SPDX License List 3.26
-    | HPND_MIT_disclaimer -- ^ @HPND-MIT-disclaimer@, Historical Permission Notice and Disclaimer with MIT disclaimer, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | HPND_Netrek -- ^ @HPND-Netrek@, Historical Permission Notice and Disclaimer - Netrek variant, SPDX License List 3.25, SPDX License List 3.26
-    | HPND_Pbmplus -- ^ @HPND-Pbmplus@, Historical Permission Notice and Disclaimer - Pbmplus variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | HPND_sell_MIT_disclaimer_xserver -- ^ @HPND-sell-MIT-disclaimer-xserver@, Historical Permission Notice and Disclaimer - sell xserver variant with MIT disclaimer, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | HPND_sell_regexpr -- ^ @HPND-sell-regexpr@, Historical Permission Notice and Disclaimer - sell regexpr variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | HPND_sell_variant_MIT_disclaimer_rev -- ^ @HPND-sell-variant-MIT-disclaimer-rev@, HPND sell variant with MIT disclaimer - reverse, SPDX License List 3.25, SPDX License List 3.26
-    | HPND_sell_variant_MIT_disclaimer -- ^ @HPND-sell-variant-MIT-disclaimer@, HPND sell variant with MIT disclaimer, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | HPND_sell_variant -- ^ @HPND-sell-variant@, Historical Permission Notice and Disclaimer - sell variant, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | HPND_UC_export_US -- ^ @HPND-UC-export-US@, Historical Permission Notice and Disclaimer - University of California, US export warning, SPDX License List 3.25, SPDX License List 3.26
-    | HPND_UC -- ^ @HPND-UC@, Historical Permission Notice and Disclaimer - University of California variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | HPND -- ^ @HPND@, Historical Permission Notice and Disclaimer
-    | HTMLTIDY -- ^ @HTMLTIDY@, HTML Tidy License, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | IBM_pibs -- ^ @IBM-pibs@, IBM PowerPC Initialization and Boot Software
-    | ICU -- ^ @ICU@, ICU License
-    | IEC_Code_Components_EULA -- ^ @IEC-Code-Components-EULA@, IEC    Code Components End-user licence agreement, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | IJG_short -- ^ @IJG-short@, Independent JPEG Group License - short, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | IJG -- ^ @IJG@, Independent JPEG Group License
-    | ImageMagick -- ^ @ImageMagick@, ImageMagick License
-    | IMatix -- ^ @iMatix@, iMatix Standard Function Library Agreement
-    | Imlib2 -- ^ @Imlib2@, Imlib2 License
-    | Info_ZIP -- ^ @Info-ZIP@, Info-ZIP License
-    | Inner_Net_2_0 -- ^ @Inner-Net-2.0@, Inner Net License v2.0, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | InnoSetup -- ^ @InnoSetup@, Inno Setup License, SPDX License List 3.26
-    | Intel_ACPI -- ^ @Intel-ACPI@, Intel ACPI Software License Agreement
-    | Intel -- ^ @Intel@, Intel Open Source License
-    | Interbase_1_0 -- ^ @Interbase-1.0@, Interbase Public License v1.0
-    | IPA -- ^ @IPA@, IPA Font License
-    | IPL_1_0 -- ^ @IPL-1.0@, IBM Public License v1.0
-    | ISC_Veillard -- ^ @ISC-Veillard@, ISC Veillard variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | ISC -- ^ @ISC@, ISC License
-    | Jam -- ^ @Jam@, Jam License, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | JasPer_2_0 -- ^ @JasPer-2.0@, JasPer License
-    | Jove -- ^ @jove@, Jove License, SPDX License List 3.26
-    | JPL_image -- ^ @JPL-image@, JPL Image Use Policy, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | JPNIC -- ^ @JPNIC@, Japan Network Information Center License, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | JSON -- ^ @JSON@, JSON License
-    | Kastrup -- ^ @Kastrup@, Kastrup License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Kazlib -- ^ @Kazlib@, Kazlib License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Knuth_CTAN -- ^ @Knuth-CTAN@, Knuth CTAN License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | LAL_1_2 -- ^ @LAL-1.2@, Licence Art Libre 1.2
-    | LAL_1_3 -- ^ @LAL-1.3@, Licence Art Libre 1.3
-    | Latex2e_translated_notice -- ^ @Latex2e-translated-notice@, Latex2e with translated notice permission, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Latex2e -- ^ @Latex2e@, Latex2e License
-    | Leptonica -- ^ @Leptonica@, Leptonica License
-    | LGPL_2_0_only -- ^ @LGPL-2.0-only@, GNU Library General Public License v2 only
-    | LGPL_2_0_or_later -- ^ @LGPL-2.0-or-later@, GNU Library General Public License v2 or later
-    | LGPL_2_1_only -- ^ @LGPL-2.1-only@, GNU Lesser General Public License v2.1 only
-    | LGPL_2_1_or_later -- ^ @LGPL-2.1-or-later@, GNU Lesser General Public License v2.1 or later
-    | LGPL_3_0_only -- ^ @LGPL-3.0-only@, GNU Lesser General Public License v3.0 only
-    | LGPL_3_0_or_later -- ^ @LGPL-3.0-or-later@, GNU Lesser General Public License v3.0 or later
-    | LGPLLR -- ^ @LGPLLR@, Lesser General Public License For Linguistic Resources
-    | Libpng_1_6_35 -- ^ @libpng-1.6.35@, PNG Reference Library License v1 (for libpng 0.5 through 1.6.35, SPDX License List 3.26
-    | Libpng_2_0 -- ^ @libpng-2.0@, PNG Reference Library version 2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Libpng -- ^ @Libpng@, libpng License
-    | Libselinux_1_0 -- ^ @libselinux-1.0@, libselinux public domain notice, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Libtiff -- ^ @libtiff@, libtiff License
-    | Libutil_David_Nugent -- ^ @libutil-David-Nugent@, libutil David Nugent License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | LiLiQ_P_1_1 -- ^ @LiLiQ-P-1.1@, Licence Libre du Québec – Permissive version 1.1
-    | LiLiQ_R_1_1 -- ^ @LiLiQ-R-1.1@, Licence Libre du Québec – Réciprocité version 1.1
-    | LiLiQ_Rplus_1_1 -- ^ @LiLiQ-Rplus-1.1@, Licence Libre du Québec – Réciprocité forte version 1.1
-    | Linux_man_pages_1_para -- ^ @Linux-man-pages-1-para@, Linux man-pages - 1 paragraph, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Linux_man_pages_copyleft_2_para -- ^ @Linux-man-pages-copyleft-2-para@, Linux man-pages Copyleft - 2 paragraphs, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Linux_man_pages_copyleft_var -- ^ @Linux-man-pages-copyleft-var@, Linux man-pages Copyleft Variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Linux_man_pages_copyleft -- ^ @Linux-man-pages-copyleft@, Linux man-pages Copyleft, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Linux_OpenIB -- ^ @Linux-OpenIB@, Linux Kernel Variant of OpenIB.org license, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | LOOP -- ^ @LOOP@, Common Lisp LOOP License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | LPD_document -- ^ @LPD-document@, LPD Documentation License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | LPL_1_02 -- ^ @LPL-1.02@, Lucent Public License v1.02
-    | LPL_1_0 -- ^ @LPL-1.0@, Lucent Public License Version 1.0
-    | LPPL_1_0 -- ^ @LPPL-1.0@, LaTeX Project Public License v1.0
-    | LPPL_1_1 -- ^ @LPPL-1.1@, LaTeX Project Public License v1.1
-    | LPPL_1_2 -- ^ @LPPL-1.2@, LaTeX Project Public License v1.2
-    | LPPL_1_3a -- ^ @LPPL-1.3a@, LaTeX Project Public License v1.3a
-    | LPPL_1_3c -- ^ @LPPL-1.3c@, LaTeX Project Public License v1.3c
-    | Lsof -- ^ @lsof@, lsof License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Lucida_Bitmap_Fonts -- ^ @Lucida-Bitmap-Fonts@, Lucida Bitmap Fonts License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | LZMA_SDK_9_11_to_9_20 -- ^ @LZMA-SDK-9.11-to-9.20@, LZMA SDK License (versions 9.11 to 9.20), SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | LZMA_SDK_9_22 -- ^ @LZMA-SDK-9.22@, LZMA SDK License (versions 9.22 and beyond), SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Mackerras_3_Clause_acknowledgment -- ^ @Mackerras-3-Clause-acknowledgment@, Mackerras 3-Clause - acknowledgment variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Mackerras_3_Clause -- ^ @Mackerras-3-Clause@, Mackerras 3-Clause License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Magaz -- ^ @magaz@, magaz License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Mailprio -- ^ @mailprio@, mailprio License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | MakeIndex -- ^ @MakeIndex@, MakeIndex License
-    | Man2html -- ^ @man2html@, man2html License, SPDX License List 3.26
-    | Martin_Birgmeier -- ^ @Martin-Birgmeier@, Martin Birgmeier License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | McPhee_slideshow -- ^ @McPhee-slideshow@, McPhee Slideshow License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Metamail -- ^ @metamail@, metamail License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Minpack -- ^ @Minpack@, Minpack License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | MIPS -- ^ @MIPS@, MIPS License, SPDX License List 3.26
-    | MirOS -- ^ @MirOS@, The MirOS Licence
-    | MIT_0 -- ^ @MIT-0@, MIT No Attribution, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | MIT_advertising -- ^ @MIT-advertising@, Enlightenment License (e16)
-    | MIT_Click -- ^ @MIT-Click@, MIT Click License, SPDX License List 3.26
-    | MIT_CMU -- ^ @MIT-CMU@, CMU License
-    | MIT_enna -- ^ @MIT-enna@, enna License
-    | MIT_feh -- ^ @MIT-feh@, feh License
-    | MIT_Festival -- ^ @MIT-Festival@, MIT Festival Variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | MIT_Khronos_old -- ^ @MIT-Khronos-old@, MIT Khronos - old variant, SPDX License List 3.25, SPDX License List 3.26
-    | MIT_Modern_Variant -- ^ @MIT-Modern-Variant@, MIT License Modern Variant, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | MIT_open_group -- ^ @MIT-open-group@, MIT Open Group variant, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | MIT_testregex -- ^ @MIT-testregex@, MIT testregex Variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | MIT_Wu -- ^ @MIT-Wu@, MIT Tom Wu Variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | MITNFA -- ^ @MITNFA@, MIT +no-false-attribs license
-    | MIT -- ^ @MIT@, MIT License
-    | MMIXware -- ^ @MMIXware@, MMIXware License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Motosoto -- ^ @Motosoto@, Motosoto License
-    | MPEG_SSG -- ^ @MPEG-SSG@, MPEG Software Simulation, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Mpi_permissive -- ^ @mpi-permissive@, mpi Permissive License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Mpich2 -- ^ @mpich2@, mpich2 License
-    | MPL_1_0 -- ^ @MPL-1.0@, Mozilla Public License 1.0
-    | MPL_1_1 -- ^ @MPL-1.1@, Mozilla Public License 1.1
-    | MPL_2_0_no_copyleft_exception -- ^ @MPL-2.0-no-copyleft-exception@, Mozilla Public License 2.0 (no copyleft exception)
-    | MPL_2_0 -- ^ @MPL-2.0@, Mozilla Public License 2.0
-    | Mplus -- ^ @mplus@, mplus Font License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | MS_LPL -- ^ @MS-LPL@, Microsoft Limited Public License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | MS_PL -- ^ @MS-PL@, Microsoft Public License
-    | MS_RL -- ^ @MS-RL@, Microsoft Reciprocal License
-    | MTLL -- ^ @MTLL@, Matrix Template Library License
-    | MulanPSL_1_0 -- ^ @MulanPSL-1.0@, Mulan Permissive Software License, Version 1, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | MulanPSL_2_0 -- ^ @MulanPSL-2.0@, Mulan Permissive Software License, Version 2, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Multics -- ^ @Multics@, Multics License
-    | Mup -- ^ @Mup@, Mup License
-    | NAIST_2003 -- ^ @NAIST-2003@, Nara Institute of Science and Technology License (2003), SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | NASA_1_3 -- ^ @NASA-1.3@, NASA Open Source Agreement 1.3
-    | Naumen -- ^ @Naumen@, Naumen Public License
-    | NBPL_1_0 -- ^ @NBPL-1.0@, Net Boolean Public License v1
-    | NCBI_PD -- ^ @NCBI-PD@, NCBI Public Domain Notice, SPDX License List 3.25, SPDX License List 3.26
-    | NCGL_UK_2_0 -- ^ @NCGL-UK-2.0@, Non-Commercial Government Licence, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | NCL -- ^ @NCL@, NCL Source Code License, SPDX License List 3.25, SPDX License List 3.26
-    | NCSA -- ^ @NCSA@, University of Illinois/NCSA Open Source License
-    | Net_SNMP -- ^ @Net-SNMP@, Net-SNMP License, SPDX License List 3.0, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23
-    | NetCDF -- ^ @NetCDF@, NetCDF license
-    | Newsletr -- ^ @Newsletr@, Newsletr License
-    | NGPL -- ^ @NGPL@, Nethack General Public License
-    | Ngrep -- ^ @ngrep@, ngrep License, SPDX License List 3.26
-    | NICTA_1_0 -- ^ @NICTA-1.0@, NICTA Public Software License, Version 1.0, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | NIST_PD_fallback -- ^ @NIST-PD-fallback@, NIST Public Domain Notice with license fallback, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | NIST_PD -- ^ @NIST-PD@, NIST Public Domain Notice, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | NIST_Software -- ^ @NIST-Software@, NIST Software License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | NLOD_1_0 -- ^ @NLOD-1.0@, Norwegian Licence for Open Government Data (NLOD) 1.0
-    | NLOD_2_0 -- ^ @NLOD-2.0@, Norwegian Licence for Open Government Data (NLOD) 2.0, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | NLPL -- ^ @NLPL@, No Limit Public License
-    | Nokia -- ^ @Nokia@, Nokia Open Source License
-    | NOSL -- ^ @NOSL@, Netizen Open Source License
-    | Noweb -- ^ @Noweb@, Noweb License
-    | NPL_1_0 -- ^ @NPL-1.0@, Netscape Public License v1.0
-    | NPL_1_1 -- ^ @NPL-1.1@, Netscape Public License v1.1
-    | NPOSL_3_0 -- ^ @NPOSL-3.0@, Non-Profit Open Software License 3.0
-    | NRL -- ^ @NRL@, NRL License
-    | NTIA_PD -- ^ @NTIA-PD@, NTIA Public Domain Notice, SPDX License List 3.26
-    | NTP_0 -- ^ @NTP-0@, NTP No Attribution, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | NTP -- ^ @NTP@, NTP License
-    | O_UDA_1_0 -- ^ @O-UDA-1.0@, Open Use of Data Agreement v1.0, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | OAR -- ^ @OAR@, OAR License, SPDX License List 3.25, SPDX License List 3.26
-    | OCCT_PL -- ^ @OCCT-PL@, Open CASCADE Technology Public License
-    | OCLC_2_0 -- ^ @OCLC-2.0@, OCLC Research Public License 2.0
-    | ODbL_1_0 -- ^ @ODbL-1.0@, Open Data Commons Open Database License v1.0
-    | ODC_By_1_0 -- ^ @ODC-By-1.0@, Open Data Commons Attribution License v1.0, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | OFFIS -- ^ @OFFIS@, OFFIS License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | OFL_1_0_no_RFN -- ^ @OFL-1.0-no-RFN@, SIL Open Font License 1.0 with no Reserved Font Name, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | OFL_1_0_RFN -- ^ @OFL-1.0-RFN@, SIL Open Font License 1.0 with Reserved Font Name, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | OFL_1_0 -- ^ @OFL-1.0@, SIL Open Font License 1.0
-    | OFL_1_1_no_RFN -- ^ @OFL-1.1-no-RFN@, SIL Open Font License 1.1 with no Reserved Font Name, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | OFL_1_1_RFN -- ^ @OFL-1.1-RFN@, SIL Open Font License 1.1 with Reserved Font Name, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | OFL_1_1 -- ^ @OFL-1.1@, SIL Open Font License 1.1
-    | OGC_1_0 -- ^ @OGC-1.0@, OGC Software License, Version 1.0, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | OGDL_Taiwan_1_0 -- ^ @OGDL-Taiwan-1.0@, Taiwan Open Government Data License, version 1.0, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | OGL_Canada_2_0 -- ^ @OGL-Canada-2.0@, Open Government Licence - Canada, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | OGL_UK_1_0 -- ^ @OGL-UK-1.0@, Open Government Licence v1.0, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | OGL_UK_2_0 -- ^ @OGL-UK-2.0@, Open Government Licence v2.0, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | OGL_UK_3_0 -- ^ @OGL-UK-3.0@, Open Government Licence v3.0, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | OGTSL -- ^ @OGTSL@, Open Group Test Suite License
-    | OLDAP_1_1 -- ^ @OLDAP-1.1@, Open LDAP Public License v1.1
-    | OLDAP_1_2 -- ^ @OLDAP-1.2@, Open LDAP Public License v1.2
-    | OLDAP_1_3 -- ^ @OLDAP-1.3@, Open LDAP Public License v1.3
-    | OLDAP_1_4 -- ^ @OLDAP-1.4@, Open LDAP Public License v1.4
-    | OLDAP_2_0_1 -- ^ @OLDAP-2.0.1@, Open LDAP Public License v2.0.1
-    | OLDAP_2_0 -- ^ @OLDAP-2.0@, Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B)
-    | OLDAP_2_1 -- ^ @OLDAP-2.1@, Open LDAP Public License v2.1
-    | OLDAP_2_2_1 -- ^ @OLDAP-2.2.1@, Open LDAP Public License v2.2.1
-    | OLDAP_2_2_2 -- ^ @OLDAP-2.2.2@, Open LDAP Public License 2.2.2
-    | OLDAP_2_2 -- ^ @OLDAP-2.2@, Open LDAP Public License v2.2
-    | OLDAP_2_3 -- ^ @OLDAP-2.3@, Open LDAP Public License v2.3
-    | OLDAP_2_4 -- ^ @OLDAP-2.4@, Open LDAP Public License v2.4
-    | OLDAP_2_5 -- ^ @OLDAP-2.5@, Open LDAP Public License v2.5
-    | OLDAP_2_6 -- ^ @OLDAP-2.6@, Open LDAP Public License v2.6
-    | OLDAP_2_7 -- ^ @OLDAP-2.7@, Open LDAP Public License v2.7
-    | OLDAP_2_8 -- ^ @OLDAP-2.8@, Open LDAP Public License v2.8
-    | OLFL_1_3 -- ^ @OLFL-1.3@, Open Logistics Foundation License Version 1.3, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | OML -- ^ @OML@, Open Market License
-    | OpenPBS_2_3 -- ^ @OpenPBS-2.3@, OpenPBS v2.3 Software License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | OpenSSL_standalone -- ^ @OpenSSL-standalone@, OpenSSL License - standalone, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | OpenSSL -- ^ @OpenSSL@, OpenSSL License
-    | OpenVision -- ^ @OpenVision@, OpenVision License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | OPL_1_0 -- ^ @OPL-1.0@, Open Public License v1.0
-    | OPL_UK_3_0 -- ^ @OPL-UK-3.0@, United    Kingdom Open Parliament Licence v3.0, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | OPUBL_1_0 -- ^ @OPUBL-1.0@, Open Publication License v1.0, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | OSET_PL_2_1 -- ^ @OSET-PL-2.1@, OSET Public License version 2.1
-    | OSL_1_0 -- ^ @OSL-1.0@, Open Software License 1.0
-    | OSL_1_1 -- ^ @OSL-1.1@, Open Software License 1.1
-    | OSL_2_0 -- ^ @OSL-2.0@, Open Software License 2.0
-    | OSL_2_1 -- ^ @OSL-2.1@, Open Software License 2.1
-    | OSL_3_0 -- ^ @OSL-3.0@, Open Software License 3.0
-    | PADL -- ^ @PADL@, PADL License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Parity_6_0_0 -- ^ @Parity-6.0.0@, The Parity Public License 6.0.0, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Parity_7_0_0 -- ^ @Parity-7.0.0@, The Parity Public License 7.0.0, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | PDDL_1_0 -- ^ @PDDL-1.0@, Open Data Commons Public Domain Dedication & License 1.0
-    | PHP_3_01 -- ^ @PHP-3.01@, PHP License v3.01
-    | PHP_3_0 -- ^ @PHP-3.0@, PHP License v3.0
-    | Pixar -- ^ @Pixar@, Pixar License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Pkgconf -- ^ @pkgconf@, pkgconf License, SPDX License List 3.25, SPDX License List 3.26
-    | Plexus -- ^ @Plexus@, Plexus Classworlds License
-    | Pnmstitch -- ^ @pnmstitch@, pnmstitch License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | PolyForm_Noncommercial_1_0_0 -- ^ @PolyForm-Noncommercial-1.0.0@, PolyForm Noncommercial License 1.0.0, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | PolyForm_Small_Business_1_0_0 -- ^ @PolyForm-Small-Business-1.0.0@, PolyForm Small Business License 1.0.0, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | PostgreSQL -- ^ @PostgreSQL@, PostgreSQL License
-    | PPL -- ^ @PPL@, Peer Production License, SPDX License List 3.25, SPDX License List 3.26
-    | PSF_2_0 -- ^ @PSF-2.0@, Python Software Foundation License 2.0, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Psfrag -- ^ @psfrag@, psfrag License
-    | Psutils -- ^ @psutils@, psutils License
-    | Python_2_0_1 -- ^ @Python-2.0.1@, Python License 2.0.1, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Python_2_0 -- ^ @Python-2.0@, Python License 2.0
-    | Python_ldap -- ^ @python-ldap@, Python ldap License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Qhull -- ^ @Qhull@, Qhull License
-    | QPL_1_0_INRIA_2004 -- ^ @QPL-1.0-INRIA-2004@, Q Public License 1.0 - INRIA 2004 variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | QPL_1_0 -- ^ @QPL-1.0@, Q Public License 1.0
-    | Radvd -- ^ @radvd@, radvd License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Rdisc -- ^ @Rdisc@, Rdisc License
-    | RHeCos_1_1 -- ^ @RHeCos-1.1@, Red Hat eCos Public License v1.1
-    | RPL_1_1 -- ^ @RPL-1.1@, Reciprocal Public License 1.1
-    | RPL_1_5 -- ^ @RPL-1.5@, Reciprocal Public License 1.5
-    | RPSL_1_0 -- ^ @RPSL-1.0@, RealNetworks Public Source License v1.0
-    | RSA_MD -- ^ @RSA-MD@, RSA Message-Digest License
-    | RSCPL -- ^ @RSCPL@, Ricoh Source Code Public License
-    | Ruby_pty -- ^ @Ruby-pty@, Ruby pty extension license, SPDX License List 3.25, SPDX License List 3.26
-    | Ruby -- ^ @Ruby@, Ruby License
-    | SAX_PD_2_0 -- ^ @SAX-PD-2.0@, Sax Public Domain Notice 2.0, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | SAX_PD -- ^ @SAX-PD@, Sax Public Domain Notice
-    | Saxpath -- ^ @Saxpath@, Saxpath License
-    | SCEA -- ^ @SCEA@, SCEA Shared Source License
-    | SchemeReport -- ^ @SchemeReport@, Scheme Language Report License, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Sendmail_8_23 -- ^ @Sendmail-8.23@, Sendmail License 8.23, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Sendmail_Open_Source_1_1 -- ^ @Sendmail-Open-Source-1.1@, Sendmail Open Source License v1.1, SPDX License List 3.26
-    | Sendmail -- ^ @Sendmail@, Sendmail License
-    | SGI_B_1_0 -- ^ @SGI-B-1.0@, SGI Free Software License B v1.0
-    | SGI_B_1_1 -- ^ @SGI-B-1.1@, SGI Free Software License B v1.1
-    | SGI_B_2_0 -- ^ @SGI-B-2.0@, SGI Free Software License B v2.0
-    | SGI_OpenGL -- ^ @SGI-OpenGL@, SGI OpenGL License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | SGP4 -- ^ @SGP4@, SGP4 Permission Notice, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | SHL_0_51 -- ^ @SHL-0.51@, Solderpad Hardware License, Version 0.51, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | SHL_0_5 -- ^ @SHL-0.5@, Solderpad Hardware License v0.5, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | SimPL_2_0 -- ^ @SimPL-2.0@, Simple Public License 2.0
-    | SISSL_1_2 -- ^ @SISSL-1.2@, Sun Industry Standards Source License v1.2
-    | SISSL -- ^ @SISSL@, Sun Industry Standards Source License v1.1
-    | Sleepycat -- ^ @Sleepycat@, Sleepycat License
-    | SL -- ^ @SL@, SL License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | SMAIL_GPL -- ^ @SMAIL-GPL@, SMAIL General Public License, SPDX License List 3.26
-    | SMLNJ -- ^ @SMLNJ@, Standard ML of New Jersey License
-    | SMPPL -- ^ @SMPPL@, Secure Messaging Protocol Public License
-    | SNIA -- ^ @SNIA@, SNIA Public License 1.1
-    | Snprintf -- ^ @snprintf@, snprintf License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | SOFA -- ^ @SOFA@, SOFA Software License, SPDX License List 3.26
-    | SoftSurfer -- ^ @softSurfer@, softSurfer License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Soundex -- ^ @Soundex@, Soundex License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Spencer_86 -- ^ @Spencer-86@, Spencer License 86
-    | Spencer_94 -- ^ @Spencer-94@, Spencer License 94
-    | Spencer_99 -- ^ @Spencer-99@, Spencer License 99
-    | SPL_1_0 -- ^ @SPL-1.0@, Sun Public License v1.0
-    | Ssh_keyscan -- ^ @ssh-keyscan@, ssh-keyscan License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | SSH_OpenSSH -- ^ @SSH-OpenSSH@, SSH OpenSSH license, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | SSH_short -- ^ @SSH-short@, SSH short notice, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | SSLeay_standalone -- ^ @SSLeay-standalone@, SSLeay License - standalone, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | SSPL_1_0 -- ^ @SSPL-1.0@, Server Side Public License, v 1, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | SugarCRM_1_1_3 -- ^ @SugarCRM-1.1.3@, SugarCRM Public License v1.1.3
-    | Sun_PPP_2000 -- ^ @Sun-PPP-2000@, Sun PPP License (2000), SPDX License List 3.25, SPDX License List 3.26
-    | Sun_PPP -- ^ @Sun-PPP@, Sun PPP License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | SunPro -- ^ @SunPro@, SunPro License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | SWL -- ^ @SWL@, Scheme Widget Library (SWL) Software License Agreement
-    | Swrule -- ^ @swrule@, swrule License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Symlinks -- ^ @Symlinks@, Symlinks License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | TAPR_OHL_1_0 -- ^ @TAPR-OHL-1.0@, TAPR Open Hardware License v1.0, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | TCL -- ^ @TCL@, TCL/TK License
-    | TCP_wrappers -- ^ @TCP-wrappers@, TCP Wrappers License
-    | TermReadKey -- ^ @TermReadKey@, TermReadKey License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | TGPPL_1_0 -- ^ @TGPPL-1.0@, Transitive Grace Period Public Licence 1.0, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | ThirdEye -- ^ @ThirdEye@, ThirdEye License, SPDX License List 3.26
-    | Threeparttable -- ^ @threeparttable@, threeparttable License, SPDX License List 3.25, SPDX License List 3.26
-    | TMate -- ^ @TMate@, TMate Open Source License
-    | TORQUE_1_1 -- ^ @TORQUE-1.1@, TORQUE v2.5+ Software License v1.1
-    | TOSL -- ^ @TOSL@, Trusster Open Source License
-    | TPDL -- ^ @TPDL@, Time::ParseDate License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | TPL_1_0 -- ^ @TPL-1.0@, THOR Public License 1.0, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | TrustedQSL -- ^ @TrustedQSL@, TrustedQSL License, SPDX License List 3.26
-    | TTWL -- ^ @TTWL@, Text-Tabs+Wrap License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | TTYP0 -- ^ @TTYP0@, TTYP0 License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | TU_Berlin_1_0 -- ^ @TU-Berlin-1.0@, Technische Universitaet Berlin License 1.0, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | TU_Berlin_2_0 -- ^ @TU-Berlin-2.0@, Technische Universitaet Berlin License 2.0, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Ubuntu_font_1_0 -- ^ @Ubuntu-font-1.0@, Ubuntu Font Licence v1.0, SPDX License List 3.25, SPDX License List 3.26
-    | UCAR -- ^ @UCAR@, UCAR License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | UCL_1_0 -- ^ @UCL-1.0@, Upstream Compatibility License v1.0, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Ulem -- ^ @ulem@, ulem License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | UMich_Merit -- ^ @UMich-Merit@, Michigan/Merit Networks License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Unicode_3_0 -- ^ @Unicode-3.0@, Unicode License v3, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Unicode_DFS_2015 -- ^ @Unicode-DFS-2015@, Unicode License Agreement - Data Files and Software (2015)
-    | Unicode_DFS_2016 -- ^ @Unicode-DFS-2016@, Unicode License Agreement - Data Files and Software (2016)
-    | Unicode_TOU -- ^ @Unicode-TOU@, Unicode Terms of Use
-    | UnixCrypt -- ^ @UnixCrypt@, UnixCrypt License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Unlicense_libtelnet -- ^ @Unlicense-libtelnet@, Unlicense - libtelnet variant, SPDX License List 3.26
-    | Unlicense_libwhirlpool -- ^ @Unlicense-libwhirlpool@, Unlicense - libwhirlpool variant, SPDX License List 3.26
-    | Unlicense -- ^ @Unlicense@, The Unlicense
-    | UPL_1_0 -- ^ @UPL-1.0@, Universal Permissive License v1.0
-    | URT_RLE -- ^ @URT-RLE@, Utah Raster Toolkit Run Length Encoded License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Vim -- ^ @Vim@, Vim License
-    | VOSTROM -- ^ @VOSTROM@, VOSTROM Public License for Open Source
-    | VSL_1_0 -- ^ @VSL-1.0@, Vovida Software License v1.0
-    | W3C_19980720 -- ^ @W3C-19980720@, W3C Software Notice and License (1998-07-20)
-    | W3C_20150513 -- ^ @W3C-20150513@, W3C Software Notice and Document License (2015-05-13)
-    | W3C -- ^ @W3C@, W3C Software Notice and License (2002-12-31)
-    | W3m -- ^ @w3m@, w3m License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Watcom_1_0 -- ^ @Watcom-1.0@, Sybase Open Watcom Public License 1.0
-    | Widget_Workshop -- ^ @Widget-Workshop@, Widget Workshop License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Wsuipa -- ^ @Wsuipa@, Wsuipa License
-    | WTFPL -- ^ @WTFPL@, Do What The F*ck You Want To Public License
-    | Wwl -- ^ @wwl@, WWL License, SPDX License List 3.26
-    | X11_distribute_modifications_variant -- ^ @X11-distribute-modifications-variant@, X11 License Distribution Modification Variant, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | X11_swapped -- ^ @X11-swapped@, X11 swapped final paragraphs, SPDX License List 3.25, SPDX License List 3.26
-    | X11 -- ^ @X11@, X11 License
-    | Xdebug_1_03 -- ^ @Xdebug-1.03@, Xdebug License v 1.03, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Xerox -- ^ @Xerox@, Xerox License
-    | Xfig -- ^ @Xfig@, Xfig License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | XFree86_1_1 -- ^ @XFree86-1.1@, XFree86 License 1.1
-    | Xinetd -- ^ @xinetd@, xinetd License
-    | Xkeyboard_config_Zinoviev -- ^ @xkeyboard-config-Zinoviev@, xkeyboard-config Zinoviev License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Xlock -- ^ @xlock@, xlock License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Xnet -- ^ @Xnet@, X.Net License
-    | Xpp -- ^ @xpp@, XPP License
-    | XSkat -- ^ @XSkat@, XSkat License
-    | Xzoom -- ^ @xzoom@, xzoom License, SPDX License List 3.25, SPDX License List 3.26
-    | YPL_1_0 -- ^ @YPL-1.0@, Yahoo! Public License v1.0
-    | YPL_1_1 -- ^ @YPL-1.1@, Yahoo! Public License v1.1
-    | Zed -- ^ @Zed@, Zed License
-    | Zeeff -- ^ @Zeeff@, Zeeff License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26
-    | Zend_2_0 -- ^ @Zend-2.0@, Zend License v2.0
-    | Zimbra_1_3 -- ^ @Zimbra-1.3@, Zimbra Public License v1.3
-    | Zimbra_1_4 -- ^ @Zimbra-1.4@, Zimbra Public License v1.4
-    | Zlib_acknowledgement -- ^ @zlib-acknowledgement@, zlib/libpng License with Acknowledgement
-    | Zlib -- ^ @Zlib@, zlib License
-    | ZPL_1_1 -- ^ @ZPL-1.1@, Zope Public License 1.1
-    | ZPL_2_0 -- ^ @ZPL-2.0@, Zope Public License 2.0
-    | ZPL_2_1 -- ^ @ZPL-2.1@, Zope Public License 2.1
-  deriving (Eq, Ord, Enum, Bounded, Show, Read, Data)
-
-instance Binary LicenseId where
-    -- Word16 is encoded in big endianness
-    -- https://github.com/kolmodin/binary/blob/master/src/Data/Binary/Class.hs#L220-LL227
-    put = Binary.putWord16be . fromIntegral . fromEnum
-    get = do
-        i <- Binary.getWord16be
-        if i > fromIntegral (fromEnum (maxBound :: LicenseId))
-        then fail "Too large LicenseId tag"
-        else return (toEnum (fromIntegral i))
-
--- note: remember to bump version each time the definition changes
-instance Structured LicenseId where
-    structure p = set typeVersion 307 $ nominalStructure p
-
-instance Pretty LicenseId where
-    pretty = Disp.text . licenseId
-
--- |
--- >>> eitherParsec "BSD-3-Clause" :: Either String LicenseId
--- Right BSD_3_Clause
---
--- >>> eitherParsec "BSD3" :: Either String LicenseId
--- Left "...Unknown SPDX license identifier: 'BSD3' Do you mean BSD-3-Clause?"
---
-instance Parsec LicenseId where
-    parsec = do
-        n <- some $ P.satisfy $ \c -> isAsciiAlphaNum c || c == '-' || c == '.'
-        v <- askCabalSpecVersion
-        maybe (fail $ "Unknown SPDX license identifier: '" ++  n ++ "' " ++ licenseIdMigrationMessage n) return $
-            mkLicenseId (cabalSpecVersionToSPDXListVersion v) n
-
-instance NFData LicenseId where
-    rnf l = l `seq` ()
-
--- | Help message for migrating from non-SPDX license identifiers.
---
--- Old 'License' is almost SPDX, except for 'BSD2', 'BSD3'. This function
--- suggests SPDX variant:
---
--- >>> licenseIdMigrationMessage "BSD3"
--- "Do you mean BSD-3-Clause?"
---
--- Also 'OtherLicense', 'AllRightsReserved', and 'PublicDomain' aren't
--- valid SPDX identifiers
---
--- >>> traverse_ (print . licenseIdMigrationMessage) [ "OtherLicense", "AllRightsReserved", "PublicDomain" ]
--- "SPDX license list contains plenty of licenses. See https://spdx.org/licenses/. Also they can be combined into complex expressions with AND and OR."
--- "You can use NONE as a value of license field."
--- "Public Domain is a complex matter. See https://wiki.spdx.org/view/Legal_Team/Decisions/Dealing_with_Public_Domain_within_SPDX_Files. Consider using a proper license."
---
--- SPDX License list version 3.0 introduced "-only" and "-or-later" variants for GNU family of licenses.
--- See <https://spdx.org/news/news/2018/01/license-list-30-released>
--- >>> licenseIdMigrationMessage "GPL-2.0"
--- "SPDX license list 3.0 deprecated suffixless variants of GNU family of licenses. Use GPL-2.0-only or GPL-2.0-or-later."
---
--- For other common licenses their old license format coincides with the SPDX identifiers:
---
--- >>> traverse eitherParsec ["GPL-2.0-only", "GPL-3.0-only", "LGPL-2.1-only", "MIT", "ISC", "MPL-2.0", "Apache-2.0"] :: Either String [LicenseId]
--- Right [GPL_2_0_only,GPL_3_0_only,LGPL_2_1_only,MIT,ISC,MPL_2_0,Apache_2_0]
---
-licenseIdMigrationMessage :: String -> String
-licenseIdMigrationMessage = go where
-    go l | gnuVariant l    = "SPDX license list 3.0 deprecated suffixless variants of GNU family of licenses. Use " ++ l ++ "-only or " ++ l ++ "-or-later."
-    go "BSD3"              = "Do you mean BSD-3-Clause?"
-    go "BSD2"              = "Do you mean BSD-2-Clause?"
-    go "AllRightsReserved" = "You can use NONE as a value of license field."
-    go "OtherLicense"      = "SPDX license list contains plenty of licenses. See https://spdx.org/licenses/. Also they can be combined into complex expressions with AND and OR."
-    go "PublicDomain"      = "Public Domain is a complex matter. See https://wiki.spdx.org/view/Legal_Team/Decisions/Dealing_with_Public_Domain_within_SPDX_Files. Consider using a proper license."
-
-    -- otherwise, we don't know
-    go _ = ""
-
-    gnuVariant = flip elem ["GPL-2.0", "GPL-3.0", "LGPL-2.1", "LGPL-3.0", "AGPL-3.0" ]
-
--------------------------------------------------------------------------------
--- License Data
--------------------------------------------------------------------------------
-
--- | License SPDX identifier, e.g. @"BSD-3-Clause"@.
-licenseId :: LicenseId -> String
-licenseId N_0BSD = "0BSD"
-licenseId N_3D_Slicer_1_0 = "3D-Slicer-1.0"
-licenseId AAL = "AAL"
-licenseId Abstyles = "Abstyles"
-licenseId AdaCore_doc = "AdaCore-doc"
-licenseId Adobe_2006 = "Adobe-2006"
-licenseId Adobe_Display_PostScript = "Adobe-Display-PostScript"
-licenseId Adobe_Glyph = "Adobe-Glyph"
-licenseId Adobe_Utopia = "Adobe-Utopia"
-licenseId ADSL = "ADSL"
-licenseId AFL_1_1 = "AFL-1.1"
-licenseId AFL_1_2 = "AFL-1.2"
-licenseId AFL_2_0 = "AFL-2.0"
-licenseId AFL_2_1 = "AFL-2.1"
-licenseId AFL_3_0 = "AFL-3.0"
-licenseId Afmparse = "Afmparse"
-licenseId AGPL_1_0 = "AGPL-1.0"
-licenseId AGPL_1_0_only = "AGPL-1.0-only"
-licenseId AGPL_1_0_or_later = "AGPL-1.0-or-later"
-licenseId AGPL_3_0_only = "AGPL-3.0-only"
-licenseId AGPL_3_0_or_later = "AGPL-3.0-or-later"
-licenseId Aladdin = "Aladdin"
-licenseId AMD_newlib = "AMD-newlib"
-licenseId AMDPLPA = "AMDPLPA"
-licenseId AML_glslang = "AML-glslang"
-licenseId AML = "AML"
-licenseId AMPAS = "AMPAS"
-licenseId ANTLR_PD_fallback = "ANTLR-PD-fallback"
-licenseId ANTLR_PD = "ANTLR-PD"
-licenseId Any_OSI_perl_modules = "any-OSI-perl-modules"
-licenseId Any_OSI = "any-OSI"
-licenseId Apache_1_0 = "Apache-1.0"
-licenseId Apache_1_1 = "Apache-1.1"
-licenseId Apache_2_0 = "Apache-2.0"
-licenseId APAFML = "APAFML"
-licenseId APL_1_0 = "APL-1.0"
-licenseId App_s2p = "App-s2p"
-licenseId APSL_1_0 = "APSL-1.0"
-licenseId APSL_1_1 = "APSL-1.1"
-licenseId APSL_1_2 = "APSL-1.2"
-licenseId APSL_2_0 = "APSL-2.0"
-licenseId Arphic_1999 = "Arphic-1999"
-licenseId Artistic_1_0_cl8 = "Artistic-1.0-cl8"
-licenseId Artistic_1_0_Perl = "Artistic-1.0-Perl"
-licenseId Artistic_1_0 = "Artistic-1.0"
-licenseId Artistic_2_0 = "Artistic-2.0"
-licenseId Artistic_dist = "Artistic-dist"
-licenseId Aspell_RU = "Aspell-RU"
-licenseId ASWF_Digital_Assets_1_0 = "ASWF-Digital-Assets-1.0"
-licenseId ASWF_Digital_Assets_1_1 = "ASWF-Digital-Assets-1.1"
-licenseId Baekmuk = "Baekmuk"
-licenseId Bahyph = "Bahyph"
-licenseId Barr = "Barr"
-licenseId Bcrypt_Solar_Designer = "bcrypt-Solar-Designer"
-licenseId Beerware = "Beerware"
-licenseId Bitstream_Charter = "Bitstream-Charter"
-licenseId Bitstream_Vera = "Bitstream-Vera"
-licenseId BitTorrent_1_0 = "BitTorrent-1.0"
-licenseId BitTorrent_1_1 = "BitTorrent-1.1"
-licenseId Blessing = "blessing"
-licenseId BlueOak_1_0_0 = "BlueOak-1.0.0"
-licenseId Boehm_GC_without_fee = "Boehm-GC-without-fee"
-licenseId Boehm_GC = "Boehm-GC"
-licenseId Borceux = "Borceux"
-licenseId Brian_Gladman_2_Clause = "Brian-Gladman-2-Clause"
-licenseId Brian_Gladman_3_Clause = "Brian-Gladman-3-Clause"
-licenseId BSD_1_Clause = "BSD-1-Clause"
-licenseId BSD_2_Clause_FreeBSD = "BSD-2-Clause-FreeBSD"
-licenseId BSD_2_Clause_NetBSD = "BSD-2-Clause-NetBSD"
-licenseId BSD_2_Clause_Darwin = "BSD-2-Clause-Darwin"
-licenseId BSD_2_Clause_first_lines = "BSD-2-Clause-first-lines"
-licenseId BSD_2_Clause_Patent = "BSD-2-Clause-Patent"
-licenseId BSD_2_Clause_pkgconf_disclaimer = "BSD-2-Clause-pkgconf-disclaimer"
-licenseId BSD_2_Clause_Views = "BSD-2-Clause-Views"
-licenseId BSD_2_Clause = "BSD-2-Clause"
-licenseId BSD_3_Clause_acpica = "BSD-3-Clause-acpica"
-licenseId BSD_3_Clause_Attribution = "BSD-3-Clause-Attribution"
-licenseId BSD_3_Clause_Clear = "BSD-3-Clause-Clear"
-licenseId BSD_3_Clause_flex = "BSD-3-Clause-flex"
-licenseId BSD_3_Clause_HP = "BSD-3-Clause-HP"
-licenseId BSD_3_Clause_LBNL = "BSD-3-Clause-LBNL"
-licenseId BSD_3_Clause_Modification = "BSD-3-Clause-Modification"
-licenseId BSD_3_Clause_No_Military_License = "BSD-3-Clause-No-Military-License"
-licenseId BSD_3_Clause_No_Nuclear_License_2014 = "BSD-3-Clause-No-Nuclear-License-2014"
-licenseId BSD_3_Clause_No_Nuclear_License = "BSD-3-Clause-No-Nuclear-License"
-licenseId BSD_3_Clause_No_Nuclear_Warranty = "BSD-3-Clause-No-Nuclear-Warranty"
-licenseId BSD_3_Clause_Open_MPI = "BSD-3-Clause-Open-MPI"
-licenseId BSD_3_Clause_Sun = "BSD-3-Clause-Sun"
-licenseId BSD_3_Clause = "BSD-3-Clause"
-licenseId BSD_4_Clause_Shortened = "BSD-4-Clause-Shortened"
-licenseId BSD_4_Clause_UC = "BSD-4-Clause-UC"
-licenseId BSD_4_Clause = "BSD-4-Clause"
-licenseId BSD_4_3RENO = "BSD-4.3RENO"
-licenseId BSD_4_3TAHOE = "BSD-4.3TAHOE"
-licenseId BSD_Advertising_Acknowledgement = "BSD-Advertising-Acknowledgement"
-licenseId BSD_Attribution_HPND_disclaimer = "BSD-Attribution-HPND-disclaimer"
-licenseId BSD_Inferno_Nettverk = "BSD-Inferno-Nettverk"
-licenseId BSD_Protection = "BSD-Protection"
-licenseId BSD_Source_beginning_file = "BSD-Source-beginning-file"
-licenseId BSD_Source_Code = "BSD-Source-Code"
-licenseId BSD_Systemics_W3Works = "BSD-Systemics-W3Works"
-licenseId BSD_Systemics = "BSD-Systemics"
-licenseId BSL_1_0 = "BSL-1.0"
-licenseId Bzip2_1_0_5 = "bzip2-1.0.5"
-licenseId BUSL_1_1 = "BUSL-1.1"
-licenseId Bzip2_1_0_6 = "bzip2-1.0.6"
-licenseId C_UDA_1_0 = "C-UDA-1.0"
-licenseId CAL_1_0_Combined_Work_Exception = "CAL-1.0-Combined-Work-Exception"
-licenseId CAL_1_0 = "CAL-1.0"
-licenseId Caldera_no_preamble = "Caldera-no-preamble"
-licenseId Caldera = "Caldera"
-licenseId Catharon = "Catharon"
-licenseId CATOSL_1_1 = "CATOSL-1.1"
-licenseId CC_BY_1_0 = "CC-BY-1.0"
-licenseId CC_BY_2_0 = "CC-BY-2.0"
-licenseId CC_BY_2_5_AU = "CC-BY-2.5-AU"
-licenseId CC_BY_2_5 = "CC-BY-2.5"
-licenseId CC_BY_3_0_AT = "CC-BY-3.0-AT"
-licenseId CC_BY_3_0_AU = "CC-BY-3.0-AU"
-licenseId CC_BY_3_0_DE = "CC-BY-3.0-DE"
-licenseId CC_BY_3_0_IGO = "CC-BY-3.0-IGO"
-licenseId CC_BY_3_0_NL = "CC-BY-3.0-NL"
-licenseId CC_BY_3_0_US = "CC-BY-3.0-US"
-licenseId CC_BY_3_0 = "CC-BY-3.0"
-licenseId CC_BY_4_0 = "CC-BY-4.0"
-licenseId CC_BY_NC_1_0 = "CC-BY-NC-1.0"
-licenseId CC_BY_NC_2_0 = "CC-BY-NC-2.0"
-licenseId CC_BY_NC_2_5 = "CC-BY-NC-2.5"
-licenseId CC_BY_NC_3_0_DE = "CC-BY-NC-3.0-DE"
-licenseId CC_BY_NC_3_0 = "CC-BY-NC-3.0"
-licenseId CC_BY_NC_4_0 = "CC-BY-NC-4.0"
-licenseId CC_BY_NC_ND_1_0 = "CC-BY-NC-ND-1.0"
-licenseId CC_BY_NC_ND_2_0 = "CC-BY-NC-ND-2.0"
-licenseId CC_BY_NC_ND_2_5 = "CC-BY-NC-ND-2.5"
-licenseId CC_BY_NC_ND_3_0_DE = "CC-BY-NC-ND-3.0-DE"
-licenseId CC_BY_NC_ND_3_0_IGO = "CC-BY-NC-ND-3.0-IGO"
-licenseId CC_BY_NC_ND_3_0 = "CC-BY-NC-ND-3.0"
-licenseId CC_BY_NC_ND_4_0 = "CC-BY-NC-ND-4.0"
-licenseId CC_BY_NC_SA_1_0 = "CC-BY-NC-SA-1.0"
-licenseId CC_BY_NC_SA_2_0_DE = "CC-BY-NC-SA-2.0-DE"
-licenseId CC_BY_NC_SA_2_0_FR = "CC-BY-NC-SA-2.0-FR"
-licenseId CC_BY_NC_SA_2_0_UK = "CC-BY-NC-SA-2.0-UK"
-licenseId CC_BY_NC_SA_2_0 = "CC-BY-NC-SA-2.0"
-licenseId CC_BY_NC_SA_2_5 = "CC-BY-NC-SA-2.5"
-licenseId CC_BY_NC_SA_3_0_DE = "CC-BY-NC-SA-3.0-DE"
-licenseId CC_BY_NC_SA_3_0_IGO = "CC-BY-NC-SA-3.0-IGO"
-licenseId CC_BY_NC_SA_3_0 = "CC-BY-NC-SA-3.0"
-licenseId CC_BY_NC_SA_4_0 = "CC-BY-NC-SA-4.0"
-licenseId CC_BY_ND_1_0 = "CC-BY-ND-1.0"
-licenseId CC_BY_ND_2_0 = "CC-BY-ND-2.0"
-licenseId CC_BY_ND_2_5 = "CC-BY-ND-2.5"
-licenseId CC_BY_ND_3_0_DE = "CC-BY-ND-3.0-DE"
-licenseId CC_BY_ND_3_0 = "CC-BY-ND-3.0"
-licenseId CC_BY_ND_4_0 = "CC-BY-ND-4.0"
-licenseId CC_BY_SA_1_0 = "CC-BY-SA-1.0"
-licenseId CC_BY_SA_2_0_UK = "CC-BY-SA-2.0-UK"
-licenseId CC_BY_SA_2_0 = "CC-BY-SA-2.0"
-licenseId CC_BY_SA_2_1_JP = "CC-BY-SA-2.1-JP"
-licenseId CC_BY_SA_2_5 = "CC-BY-SA-2.5"
-licenseId CC_BY_SA_3_0_AT = "CC-BY-SA-3.0-AT"
-licenseId CC_BY_SA_3_0_DE = "CC-BY-SA-3.0-DE"
-licenseId CC_BY_SA_3_0_IGO = "CC-BY-SA-3.0-IGO"
-licenseId CC_BY_SA_3_0 = "CC-BY-SA-3.0"
-licenseId CC_BY_SA_4_0 = "CC-BY-SA-4.0"
-licenseId CC_PDDC = "CC-PDDC"
-licenseId CC_PDM_1_0 = "CC-PDM-1.0"
-licenseId CC_SA_1_0 = "CC-SA-1.0"
-licenseId CC0_1_0 = "CC0-1.0"
-licenseId CDDL_1_0 = "CDDL-1.0"
-licenseId CDDL_1_1 = "CDDL-1.1"
-licenseId CDL_1_0 = "CDL-1.0"
-licenseId CDLA_Permissive_1_0 = "CDLA-Permissive-1.0"
-licenseId CDLA_Permissive_2_0 = "CDLA-Permissive-2.0"
-licenseId CDLA_Sharing_1_0 = "CDLA-Sharing-1.0"
-licenseId CECILL_1_0 = "CECILL-1.0"
-licenseId CECILL_1_1 = "CECILL-1.1"
-licenseId CECILL_2_0 = "CECILL-2.0"
-licenseId CECILL_2_1 = "CECILL-2.1"
-licenseId CECILL_B = "CECILL-B"
-licenseId CECILL_C = "CECILL-C"
-licenseId CERN_OHL_1_1 = "CERN-OHL-1.1"
-licenseId CERN_OHL_1_2 = "CERN-OHL-1.2"
-licenseId CERN_OHL_P_2_0 = "CERN-OHL-P-2.0"
-licenseId CERN_OHL_S_2_0 = "CERN-OHL-S-2.0"
-licenseId CERN_OHL_W_2_0 = "CERN-OHL-W-2.0"
-licenseId CFITSIO = "CFITSIO"
-licenseId Check_cvs = "check-cvs"
-licenseId Checkmk = "checkmk"
-licenseId ClArtistic = "ClArtistic"
-licenseId Clips = "Clips"
-licenseId CMU_Mach_nodoc = "CMU-Mach-nodoc"
-licenseId CMU_Mach = "CMU-Mach"
-licenseId CNRI_Jython = "CNRI-Jython"
-licenseId CNRI_Python_GPL_Compatible = "CNRI-Python-GPL-Compatible"
-licenseId CNRI_Python = "CNRI-Python"
-licenseId COIL_1_0 = "COIL-1.0"
-licenseId Community_Spec_1_0 = "Community-Spec-1.0"
-licenseId Condor_1_1 = "Condor-1.1"
-licenseId Copyleft_next_0_3_0 = "copyleft-next-0.3.0"
-licenseId Copyleft_next_0_3_1 = "copyleft-next-0.3.1"
-licenseId Cornell_Lossless_JPEG = "Cornell-Lossless-JPEG"
-licenseId CPAL_1_0 = "CPAL-1.0"
-licenseId CPL_1_0 = "CPL-1.0"
-licenseId CPOL_1_02 = "CPOL-1.02"
-licenseId Cronyx = "Cronyx"
-licenseId Crossword = "Crossword"
-licenseId CryptoSwift = "CryptoSwift"
-licenseId CrystalStacker = "CrystalStacker"
-licenseId CUA_OPL_1_0 = "CUA-OPL-1.0"
-licenseId Cube = "Cube"
-licenseId Curl = "curl"
-licenseId Cve_tou = "cve-tou"
-licenseId D_FSL_1_0 = "D-FSL-1.0"
-licenseId DEC_3_Clause = "DEC-3-Clause"
-licenseId Diffmark = "diffmark"
-licenseId DL_DE_BY_2_0 = "DL-DE-BY-2.0"
-licenseId DL_DE_ZERO_2_0 = "DL-DE-ZERO-2.0"
-licenseId DocBook_DTD = "DocBook-DTD"
-licenseId DocBook_Schema = "DocBook-Schema"
-licenseId DocBook_Stylesheet = "DocBook-Stylesheet"
-licenseId DocBook_XML = "DocBook-XML"
-licenseId DOC = "DOC"
-licenseId Dotseqn = "Dotseqn"
-licenseId DRL_1_0 = "DRL-1.0"
-licenseId DRL_1_1 = "DRL-1.1"
-licenseId DSDP = "DSDP"
-licenseId Dtoa = "dtoa"
-licenseId Dvipdfm = "dvipdfm"
-licenseId ECL_1_0 = "ECL-1.0"
-licenseId ECL_2_0 = "ECL-2.0"
-licenseId EFL_1_0 = "EFL-1.0"
-licenseId EFL_2_0 = "EFL-2.0"
-licenseId EGenix = "eGenix"
-licenseId Elastic_2_0 = "Elastic-2.0"
-licenseId Entessa = "Entessa"
-licenseId EPICS = "EPICS"
-licenseId EPL_1_0 = "EPL-1.0"
-licenseId EPL_2_0 = "EPL-2.0"
-licenseId ErlPL_1_1 = "ErlPL-1.1"
-licenseId Etalab_2_0 = "etalab-2.0"
-licenseId EUDatagrid = "EUDatagrid"
-licenseId EUPL_1_0 = "EUPL-1.0"
-licenseId EUPL_1_1 = "EUPL-1.1"
-licenseId EUPL_1_2 = "EUPL-1.2"
-licenseId Eurosym = "Eurosym"
-licenseId Fair = "Fair"
-licenseId FBM = "FBM"
-licenseId FDK_AAC = "FDK-AAC"
-licenseId Ferguson_Twofish = "Ferguson-Twofish"
-licenseId Frameworx_1_0 = "Frameworx-1.0"
-licenseId FreeBSD_DOC = "FreeBSD-DOC"
-licenseId FreeImage = "FreeImage"
-licenseId FSFAP_no_warranty_disclaimer = "FSFAP-no-warranty-disclaimer"
-licenseId FSFAP = "FSFAP"
-licenseId FSFULLRSD = "FSFULLRSD"
-licenseId FSFULLRWD = "FSFULLRWD"
-licenseId FSFULLR = "FSFULLR"
-licenseId FSFUL = "FSFUL"
-licenseId FSL_1_1_ALv2 = "FSL-1.1-ALv2"
-licenseId FSL_1_1_MIT = "FSL-1.1-MIT"
-licenseId FTL = "FTL"
-licenseId Furuseth = "Furuseth"
-licenseId Fwlw = "fwlw"
-licenseId Game_Programming_Gems = "Game-Programming-Gems"
-licenseId GCR_docs = "GCR-docs"
-licenseId GD = "GD"
-licenseId Generic_xts = "generic-xts"
-licenseId GFDL_1_1_invariants_only = "GFDL-1.1-invariants-only"
-licenseId GFDL_1_1_invariants_or_later = "GFDL-1.1-invariants-or-later"
-licenseId GFDL_1_1_no_invariants_only = "GFDL-1.1-no-invariants-only"
-licenseId GFDL_1_1_no_invariants_or_later = "GFDL-1.1-no-invariants-or-later"
-licenseId GFDL_1_1_only = "GFDL-1.1-only"
-licenseId GFDL_1_1_or_later = "GFDL-1.1-or-later"
-licenseId GFDL_1_2_invariants_only = "GFDL-1.2-invariants-only"
-licenseId GFDL_1_2_invariants_or_later = "GFDL-1.2-invariants-or-later"
-licenseId GFDL_1_2_no_invariants_only = "GFDL-1.2-no-invariants-only"
-licenseId GFDL_1_2_no_invariants_or_later = "GFDL-1.2-no-invariants-or-later"
-licenseId GFDL_1_2_only = "GFDL-1.2-only"
-licenseId GFDL_1_2_or_later = "GFDL-1.2-or-later"
-licenseId GFDL_1_3_invariants_only = "GFDL-1.3-invariants-only"
-licenseId GFDL_1_3_invariants_or_later = "GFDL-1.3-invariants-or-later"
-licenseId GFDL_1_3_no_invariants_only = "GFDL-1.3-no-invariants-only"
-licenseId GFDL_1_3_no_invariants_or_later = "GFDL-1.3-no-invariants-or-later"
-licenseId GFDL_1_3_only = "GFDL-1.3-only"
-licenseId GFDL_1_3_or_later = "GFDL-1.3-or-later"
-licenseId Giftware = "Giftware"
-licenseId GL2PS = "GL2PS"
-licenseId Glide = "Glide"
-licenseId Glulxe = "Glulxe"
-licenseId GLWTPL = "GLWTPL"
-licenseId Gnuplot = "gnuplot"
-licenseId GPL_1_0_only = "GPL-1.0-only"
-licenseId GPL_1_0_or_later = "GPL-1.0-or-later"
-licenseId GPL_2_0_only = "GPL-2.0-only"
-licenseId GPL_2_0_or_later = "GPL-2.0-or-later"
-licenseId GPL_3_0_only = "GPL-3.0-only"
-licenseId GPL_3_0_or_later = "GPL-3.0-or-later"
-licenseId Graphics_Gems = "Graphics-Gems"
-licenseId GSOAP_1_3b = "gSOAP-1.3b"
-licenseId Gtkbook = "gtkbook"
-licenseId Gutmann = "Gutmann"
-licenseId HaskellReport = "HaskellReport"
-licenseId HDF5 = "HDF5"
-licenseId Hdparm = "hdparm"
-licenseId HIDAPI = "HIDAPI"
-licenseId Hippocratic_2_1 = "Hippocratic-2.1"
-licenseId HP_1986 = "HP-1986"
-licenseId HP_1989 = "HP-1989"
-licenseId HPND_DEC = "HPND-DEC"
-licenseId HPND_doc_sell = "HPND-doc-sell"
-licenseId HPND_doc = "HPND-doc"
-licenseId HPND_export_US_acknowledgement = "HPND-export-US-acknowledgement"
-licenseId HPND_export_US_modify = "HPND-export-US-modify"
-licenseId HPND_export_US = "HPND-export-US"
-licenseId HPND_export2_US = "HPND-export2-US"
-licenseId HPND_Fenneberg_Livingston = "HPND-Fenneberg-Livingston"
-licenseId HPND_INRIA_IMAG = "HPND-INRIA-IMAG"
-licenseId HPND_Intel = "HPND-Intel"
-licenseId HPND_Kevlin_Henney = "HPND-Kevlin-Henney"
-licenseId HPND_Markus_Kuhn = "HPND-Markus-Kuhn"
-licenseId HPND_merchantability_variant = "HPND-merchantability-variant"
-licenseId HPND_MIT_disclaimer = "HPND-MIT-disclaimer"
-licenseId HPND_Netrek = "HPND-Netrek"
-licenseId HPND_Pbmplus = "HPND-Pbmplus"
-licenseId HPND_sell_MIT_disclaimer_xserver = "HPND-sell-MIT-disclaimer-xserver"
-licenseId HPND_sell_regexpr = "HPND-sell-regexpr"
-licenseId HPND_sell_variant_MIT_disclaimer_rev = "HPND-sell-variant-MIT-disclaimer-rev"
-licenseId HPND_sell_variant_MIT_disclaimer = "HPND-sell-variant-MIT-disclaimer"
-licenseId HPND_sell_variant = "HPND-sell-variant"
-licenseId HPND_UC_export_US = "HPND-UC-export-US"
-licenseId HPND_UC = "HPND-UC"
-licenseId HPND = "HPND"
-licenseId HTMLTIDY = "HTMLTIDY"
-licenseId IBM_pibs = "IBM-pibs"
-licenseId ICU = "ICU"
-licenseId IEC_Code_Components_EULA = "IEC-Code-Components-EULA"
-licenseId IJG_short = "IJG-short"
-licenseId IJG = "IJG"
-licenseId ImageMagick = "ImageMagick"
-licenseId IMatix = "iMatix"
-licenseId Imlib2 = "Imlib2"
-licenseId Info_ZIP = "Info-ZIP"
-licenseId Inner_Net_2_0 = "Inner-Net-2.0"
-licenseId InnoSetup = "InnoSetup"
-licenseId Intel_ACPI = "Intel-ACPI"
-licenseId Intel = "Intel"
-licenseId Interbase_1_0 = "Interbase-1.0"
-licenseId IPA = "IPA"
-licenseId IPL_1_0 = "IPL-1.0"
-licenseId ISC_Veillard = "ISC-Veillard"
-licenseId ISC = "ISC"
-licenseId Jam = "Jam"
-licenseId JasPer_2_0 = "JasPer-2.0"
-licenseId Jove = "jove"
-licenseId JPL_image = "JPL-image"
-licenseId JPNIC = "JPNIC"
-licenseId JSON = "JSON"
-licenseId Kastrup = "Kastrup"
-licenseId Kazlib = "Kazlib"
-licenseId Knuth_CTAN = "Knuth-CTAN"
-licenseId LAL_1_2 = "LAL-1.2"
-licenseId LAL_1_3 = "LAL-1.3"
-licenseId Latex2e_translated_notice = "Latex2e-translated-notice"
-licenseId Latex2e = "Latex2e"
-licenseId Leptonica = "Leptonica"
-licenseId LGPL_2_0_only = "LGPL-2.0-only"
-licenseId LGPL_2_0_or_later = "LGPL-2.0-or-later"
-licenseId LGPL_2_1_only = "LGPL-2.1-only"
-licenseId LGPL_2_1_or_later = "LGPL-2.1-or-later"
-licenseId LGPL_3_0_only = "LGPL-3.0-only"
-licenseId LGPL_3_0_or_later = "LGPL-3.0-or-later"
-licenseId LGPLLR = "LGPLLR"
-licenseId Libpng_1_6_35 = "libpng-1.6.35"
-licenseId Libpng_2_0 = "libpng-2.0"
-licenseId Libpng = "Libpng"
-licenseId Libselinux_1_0 = "libselinux-1.0"
-licenseId Libtiff = "libtiff"
-licenseId Libutil_David_Nugent = "libutil-David-Nugent"
-licenseId LiLiQ_P_1_1 = "LiLiQ-P-1.1"
-licenseId LiLiQ_R_1_1 = "LiLiQ-R-1.1"
-licenseId LiLiQ_Rplus_1_1 = "LiLiQ-Rplus-1.1"
-licenseId Linux_man_pages_1_para = "Linux-man-pages-1-para"
-licenseId Linux_man_pages_copyleft_2_para = "Linux-man-pages-copyleft-2-para"
-licenseId Linux_man_pages_copyleft_var = "Linux-man-pages-copyleft-var"
-licenseId Linux_man_pages_copyleft = "Linux-man-pages-copyleft"
-licenseId Linux_OpenIB = "Linux-OpenIB"
-licenseId LOOP = "LOOP"
-licenseId LPD_document = "LPD-document"
-licenseId LPL_1_02 = "LPL-1.02"
-licenseId LPL_1_0 = "LPL-1.0"
-licenseId LPPL_1_0 = "LPPL-1.0"
-licenseId LPPL_1_1 = "LPPL-1.1"
-licenseId LPPL_1_2 = "LPPL-1.2"
-licenseId LPPL_1_3a = "LPPL-1.3a"
-licenseId LPPL_1_3c = "LPPL-1.3c"
-licenseId Lsof = "lsof"
-licenseId Lucida_Bitmap_Fonts = "Lucida-Bitmap-Fonts"
-licenseId LZMA_SDK_9_11_to_9_20 = "LZMA-SDK-9.11-to-9.20"
-licenseId LZMA_SDK_9_22 = "LZMA-SDK-9.22"
-licenseId Mackerras_3_Clause_acknowledgment = "Mackerras-3-Clause-acknowledgment"
-licenseId Mackerras_3_Clause = "Mackerras-3-Clause"
-licenseId Magaz = "magaz"
-licenseId Mailprio = "mailprio"
-licenseId MakeIndex = "MakeIndex"
-licenseId Man2html = "man2html"
-licenseId Martin_Birgmeier = "Martin-Birgmeier"
-licenseId McPhee_slideshow = "McPhee-slideshow"
-licenseId Metamail = "metamail"
-licenseId Minpack = "Minpack"
-licenseId MIPS = "MIPS"
-licenseId MirOS = "MirOS"
-licenseId MIT_0 = "MIT-0"
-licenseId MIT_advertising = "MIT-advertising"
-licenseId MIT_Click = "MIT-Click"
-licenseId MIT_CMU = "MIT-CMU"
-licenseId MIT_enna = "MIT-enna"
-licenseId MIT_feh = "MIT-feh"
-licenseId MIT_Festival = "MIT-Festival"
-licenseId MIT_Khronos_old = "MIT-Khronos-old"
-licenseId MIT_Modern_Variant = "MIT-Modern-Variant"
-licenseId MIT_open_group = "MIT-open-group"
-licenseId MIT_testregex = "MIT-testregex"
-licenseId MIT_Wu = "MIT-Wu"
-licenseId MITNFA = "MITNFA"
-licenseId MIT = "MIT"
-licenseId MMIXware = "MMIXware"
-licenseId Motosoto = "Motosoto"
-licenseId MPEG_SSG = "MPEG-SSG"
-licenseId Mpi_permissive = "mpi-permissive"
-licenseId Mpich2 = "mpich2"
-licenseId MPL_1_0 = "MPL-1.0"
-licenseId MPL_1_1 = "MPL-1.1"
-licenseId MPL_2_0_no_copyleft_exception = "MPL-2.0-no-copyleft-exception"
-licenseId MPL_2_0 = "MPL-2.0"
-licenseId Mplus = "mplus"
-licenseId MS_LPL = "MS-LPL"
-licenseId MS_PL = "MS-PL"
-licenseId MS_RL = "MS-RL"
-licenseId MTLL = "MTLL"
-licenseId MulanPSL_1_0 = "MulanPSL-1.0"
-licenseId MulanPSL_2_0 = "MulanPSL-2.0"
-licenseId Multics = "Multics"
-licenseId Mup = "Mup"
-licenseId NAIST_2003 = "NAIST-2003"
-licenseId NASA_1_3 = "NASA-1.3"
-licenseId Naumen = "Naumen"
-licenseId NBPL_1_0 = "NBPL-1.0"
-licenseId NCBI_PD = "NCBI-PD"
-licenseId NCGL_UK_2_0 = "NCGL-UK-2.0"
-licenseId NCL = "NCL"
-licenseId NCSA = "NCSA"
-licenseId Net_SNMP = "Net-SNMP"
-licenseId NetCDF = "NetCDF"
-licenseId Newsletr = "Newsletr"
-licenseId NGPL = "NGPL"
-licenseId Ngrep = "ngrep"
-licenseId NICTA_1_0 = "NICTA-1.0"
-licenseId NIST_PD_fallback = "NIST-PD-fallback"
-licenseId NIST_PD = "NIST-PD"
-licenseId NIST_Software = "NIST-Software"
-licenseId NLOD_1_0 = "NLOD-1.0"
-licenseId NLOD_2_0 = "NLOD-2.0"
-licenseId NLPL = "NLPL"
-licenseId Nokia = "Nokia"
-licenseId NOSL = "NOSL"
-licenseId Noweb = "Noweb"
-licenseId NPL_1_0 = "NPL-1.0"
-licenseId NPL_1_1 = "NPL-1.1"
-licenseId NPOSL_3_0 = "NPOSL-3.0"
-licenseId NRL = "NRL"
-licenseId NTIA_PD = "NTIA-PD"
-licenseId NTP_0 = "NTP-0"
-licenseId NTP = "NTP"
-licenseId O_UDA_1_0 = "O-UDA-1.0"
-licenseId OAR = "OAR"
-licenseId OCCT_PL = "OCCT-PL"
-licenseId OCLC_2_0 = "OCLC-2.0"
-licenseId ODbL_1_0 = "ODbL-1.0"
-licenseId ODC_By_1_0 = "ODC-By-1.0"
-licenseId OFFIS = "OFFIS"
-licenseId OFL_1_0_no_RFN = "OFL-1.0-no-RFN"
-licenseId OFL_1_0_RFN = "OFL-1.0-RFN"
-licenseId OFL_1_0 = "OFL-1.0"
-licenseId OFL_1_1_no_RFN = "OFL-1.1-no-RFN"
-licenseId OFL_1_1_RFN = "OFL-1.1-RFN"
-licenseId OFL_1_1 = "OFL-1.1"
-licenseId OGC_1_0 = "OGC-1.0"
-licenseId OGDL_Taiwan_1_0 = "OGDL-Taiwan-1.0"
-licenseId OGL_Canada_2_0 = "OGL-Canada-2.0"
-licenseId OGL_UK_1_0 = "OGL-UK-1.0"
-licenseId OGL_UK_2_0 = "OGL-UK-2.0"
-licenseId OGL_UK_3_0 = "OGL-UK-3.0"
-licenseId OGTSL = "OGTSL"
-licenseId OLDAP_1_1 = "OLDAP-1.1"
-licenseId OLDAP_1_2 = "OLDAP-1.2"
-licenseId OLDAP_1_3 = "OLDAP-1.3"
-licenseId OLDAP_1_4 = "OLDAP-1.4"
-licenseId OLDAP_2_0_1 = "OLDAP-2.0.1"
-licenseId OLDAP_2_0 = "OLDAP-2.0"
-licenseId OLDAP_2_1 = "OLDAP-2.1"
-licenseId OLDAP_2_2_1 = "OLDAP-2.2.1"
-licenseId OLDAP_2_2_2 = "OLDAP-2.2.2"
-licenseId OLDAP_2_2 = "OLDAP-2.2"
-licenseId OLDAP_2_3 = "OLDAP-2.3"
-licenseId OLDAP_2_4 = "OLDAP-2.4"
-licenseId OLDAP_2_5 = "OLDAP-2.5"
-licenseId OLDAP_2_6 = "OLDAP-2.6"
-licenseId OLDAP_2_7 = "OLDAP-2.7"
-licenseId OLDAP_2_8 = "OLDAP-2.8"
-licenseId OLFL_1_3 = "OLFL-1.3"
-licenseId OML = "OML"
-licenseId OpenPBS_2_3 = "OpenPBS-2.3"
-licenseId OpenSSL_standalone = "OpenSSL-standalone"
-licenseId OpenSSL = "OpenSSL"
-licenseId OpenVision = "OpenVision"
-licenseId OPL_1_0 = "OPL-1.0"
-licenseId OPL_UK_3_0 = "OPL-UK-3.0"
-licenseId OPUBL_1_0 = "OPUBL-1.0"
-licenseId OSET_PL_2_1 = "OSET-PL-2.1"
-licenseId OSL_1_0 = "OSL-1.0"
-licenseId OSL_1_1 = "OSL-1.1"
-licenseId OSL_2_0 = "OSL-2.0"
-licenseId OSL_2_1 = "OSL-2.1"
-licenseId OSL_3_0 = "OSL-3.0"
-licenseId PADL = "PADL"
-licenseId Parity_6_0_0 = "Parity-6.0.0"
-licenseId Parity_7_0_0 = "Parity-7.0.0"
-licenseId PDDL_1_0 = "PDDL-1.0"
-licenseId PHP_3_01 = "PHP-3.01"
-licenseId PHP_3_0 = "PHP-3.0"
-licenseId Pixar = "Pixar"
-licenseId Pkgconf = "pkgconf"
-licenseId Plexus = "Plexus"
-licenseId Pnmstitch = "pnmstitch"
-licenseId PolyForm_Noncommercial_1_0_0 = "PolyForm-Noncommercial-1.0.0"
-licenseId PolyForm_Small_Business_1_0_0 = "PolyForm-Small-Business-1.0.0"
-licenseId PostgreSQL = "PostgreSQL"
-licenseId PPL = "PPL"
-licenseId PSF_2_0 = "PSF-2.0"
-licenseId Psfrag = "psfrag"
-licenseId Psutils = "psutils"
-licenseId Python_2_0_1 = "Python-2.0.1"
-licenseId Python_2_0 = "Python-2.0"
-licenseId Python_ldap = "python-ldap"
-licenseId Qhull = "Qhull"
-licenseId QPL_1_0_INRIA_2004 = "QPL-1.0-INRIA-2004"
-licenseId QPL_1_0 = "QPL-1.0"
-licenseId Radvd = "radvd"
-licenseId Rdisc = "Rdisc"
-licenseId RHeCos_1_1 = "RHeCos-1.1"
-licenseId RPL_1_1 = "RPL-1.1"
-licenseId RPL_1_5 = "RPL-1.5"
-licenseId RPSL_1_0 = "RPSL-1.0"
-licenseId RSA_MD = "RSA-MD"
-licenseId RSCPL = "RSCPL"
-licenseId Ruby_pty = "Ruby-pty"
-licenseId Ruby = "Ruby"
-licenseId SAX_PD_2_0 = "SAX-PD-2.0"
-licenseId SAX_PD = "SAX-PD"
-licenseId Saxpath = "Saxpath"
-licenseId SCEA = "SCEA"
-licenseId SchemeReport = "SchemeReport"
-licenseId Sendmail_8_23 = "Sendmail-8.23"
-licenseId Sendmail_Open_Source_1_1 = "Sendmail-Open-Source-1.1"
-licenseId Sendmail = "Sendmail"
-licenseId SGI_B_1_0 = "SGI-B-1.0"
-licenseId SGI_B_1_1 = "SGI-B-1.1"
-licenseId SGI_B_2_0 = "SGI-B-2.0"
-licenseId SGI_OpenGL = "SGI-OpenGL"
-licenseId SGP4 = "SGP4"
-licenseId SHL_0_51 = "SHL-0.51"
-licenseId SHL_0_5 = "SHL-0.5"
-licenseId SimPL_2_0 = "SimPL-2.0"
-licenseId SISSL_1_2 = "SISSL-1.2"
-licenseId SISSL = "SISSL"
-licenseId Sleepycat = "Sleepycat"
-licenseId SL = "SL"
-licenseId SMAIL_GPL = "SMAIL-GPL"
-licenseId SMLNJ = "SMLNJ"
-licenseId SMPPL = "SMPPL"
-licenseId SNIA = "SNIA"
-licenseId Snprintf = "snprintf"
-licenseId SOFA = "SOFA"
-licenseId SoftSurfer = "softSurfer"
-licenseId Soundex = "Soundex"
-licenseId Spencer_86 = "Spencer-86"
-licenseId Spencer_94 = "Spencer-94"
-licenseId Spencer_99 = "Spencer-99"
-licenseId SPL_1_0 = "SPL-1.0"
-licenseId Ssh_keyscan = "ssh-keyscan"
-licenseId SSH_OpenSSH = "SSH-OpenSSH"
-licenseId SSH_short = "SSH-short"
-licenseId SSLeay_standalone = "SSLeay-standalone"
-licenseId SSPL_1_0 = "SSPL-1.0"
-licenseId SugarCRM_1_1_3 = "SugarCRM-1.1.3"
-licenseId Sun_PPP_2000 = "Sun-PPP-2000"
-licenseId Sun_PPP = "Sun-PPP"
-licenseId SunPro = "SunPro"
-licenseId SWL = "SWL"
-licenseId Swrule = "swrule"
-licenseId Symlinks = "Symlinks"
-licenseId TAPR_OHL_1_0 = "TAPR-OHL-1.0"
-licenseId TCL = "TCL"
-licenseId TCP_wrappers = "TCP-wrappers"
-licenseId TermReadKey = "TermReadKey"
-licenseId TGPPL_1_0 = "TGPPL-1.0"
-licenseId ThirdEye = "ThirdEye"
-licenseId Threeparttable = "threeparttable"
-licenseId TMate = "TMate"
-licenseId TORQUE_1_1 = "TORQUE-1.1"
-licenseId TOSL = "TOSL"
-licenseId TPDL = "TPDL"
-licenseId TPL_1_0 = "TPL-1.0"
-licenseId TrustedQSL = "TrustedQSL"
-licenseId TTWL = "TTWL"
-licenseId TTYP0 = "TTYP0"
-licenseId TU_Berlin_1_0 = "TU-Berlin-1.0"
-licenseId TU_Berlin_2_0 = "TU-Berlin-2.0"
-licenseId Ubuntu_font_1_0 = "Ubuntu-font-1.0"
-licenseId UCAR = "UCAR"
-licenseId UCL_1_0 = "UCL-1.0"
-licenseId Ulem = "ulem"
-licenseId UMich_Merit = "UMich-Merit"
-licenseId Unicode_3_0 = "Unicode-3.0"
-licenseId Unicode_DFS_2015 = "Unicode-DFS-2015"
-licenseId Unicode_DFS_2016 = "Unicode-DFS-2016"
-licenseId Unicode_TOU = "Unicode-TOU"
-licenseId UnixCrypt = "UnixCrypt"
-licenseId Unlicense_libtelnet = "Unlicense-libtelnet"
-licenseId Unlicense_libwhirlpool = "Unlicense-libwhirlpool"
-licenseId Unlicense = "Unlicense"
-licenseId UPL_1_0 = "UPL-1.0"
-licenseId URT_RLE = "URT-RLE"
-licenseId Vim = "Vim"
-licenseId VOSTROM = "VOSTROM"
-licenseId VSL_1_0 = "VSL-1.0"
-licenseId W3C_19980720 = "W3C-19980720"
-licenseId W3C_20150513 = "W3C-20150513"
-licenseId W3C = "W3C"
-licenseId W3m = "w3m"
-licenseId Watcom_1_0 = "Watcom-1.0"
-licenseId Widget_Workshop = "Widget-Workshop"
-licenseId Wsuipa = "Wsuipa"
-licenseId WTFPL = "WTFPL"
-licenseId Wwl = "wwl"
-licenseId X11_distribute_modifications_variant = "X11-distribute-modifications-variant"
-licenseId X11_swapped = "X11-swapped"
-licenseId X11 = "X11"
-licenseId Xdebug_1_03 = "Xdebug-1.03"
-licenseId Xerox = "Xerox"
-licenseId Xfig = "Xfig"
-licenseId XFree86_1_1 = "XFree86-1.1"
-licenseId Xinetd = "xinetd"
-licenseId Xkeyboard_config_Zinoviev = "xkeyboard-config-Zinoviev"
-licenseId Xlock = "xlock"
-licenseId Xnet = "Xnet"
-licenseId Xpp = "xpp"
-licenseId XSkat = "XSkat"
-licenseId Xzoom = "xzoom"
-licenseId YPL_1_0 = "YPL-1.0"
-licenseId YPL_1_1 = "YPL-1.1"
-licenseId Zed = "Zed"
-licenseId Zeeff = "Zeeff"
-licenseId Zend_2_0 = "Zend-2.0"
-licenseId Zimbra_1_3 = "Zimbra-1.3"
-licenseId Zimbra_1_4 = "Zimbra-1.4"
-licenseId Zlib_acknowledgement = "zlib-acknowledgement"
-licenseId Zlib = "Zlib"
-licenseId ZPL_1_1 = "ZPL-1.1"
-licenseId ZPL_2_0 = "ZPL-2.0"
-licenseId ZPL_2_1 = "ZPL-2.1"
-
--- | License name, e.g. @"GNU General Public License v2.0 only"@
-licenseName :: LicenseId -> String
-licenseName N_0BSD = "BSD Zero Clause License"
-licenseName N_3D_Slicer_1_0 = "3D Slicer License v1.0"
-licenseName AAL = "Attribution Assurance License"
-licenseName Abstyles = "Abstyles License"
-licenseName AdaCore_doc = "AdaCore Doc License"
-licenseName Adobe_2006 = "Adobe Systems Incorporated Source Code License Agreement"
-licenseName Adobe_Display_PostScript = "Adobe Display PostScript License"
-licenseName Adobe_Glyph = "Adobe Glyph List License"
-licenseName Adobe_Utopia = "Adobe Utopia Font License"
-licenseName ADSL = "Amazon Digital Services License"
-licenseName AFL_1_1 = "Academic Free License v1.1"
-licenseName AFL_1_2 = "Academic Free License v1.2"
-licenseName AFL_2_0 = "Academic Free License v2.0"
-licenseName AFL_2_1 = "Academic Free License v2.1"
-licenseName AFL_3_0 = "Academic Free License v3.0"
-licenseName Afmparse = "Afmparse License"
-licenseName AGPL_1_0 = "Affero General Public License v1.0"
-licenseName AGPL_1_0_only = "Affero General Public License v1.0 only"
-licenseName AGPL_1_0_or_later = "Affero General Public License v1.0 or later"
-licenseName AGPL_3_0_only = "GNU Affero General Public License v3.0 only"
-licenseName AGPL_3_0_or_later = "GNU Affero General Public License v3.0 or later"
-licenseName Aladdin = "Aladdin Free Public License"
-licenseName AMD_newlib = "AMD newlib License"
-licenseName AMDPLPA = "AMD's plpa_map.c License"
-licenseName AML_glslang = "AML glslang variant License"
-licenseName AML = "Apple MIT License"
-licenseName AMPAS = "Academy of Motion Picture Arts and Sciences BSD"
-licenseName ANTLR_PD_fallback = "ANTLR Software Rights Notice with license fallback"
-licenseName ANTLR_PD = "ANTLR Software Rights Notice"
-licenseName Any_OSI_perl_modules = "Any OSI License - Perl Modules"
-licenseName Any_OSI = "Any OSI License"
-licenseName Apache_1_0 = "Apache License 1.0"
-licenseName Apache_1_1 = "Apache License 1.1"
-licenseName Apache_2_0 = "Apache License 2.0"
-licenseName APAFML = "Adobe Postscript AFM License"
-licenseName APL_1_0 = "Adaptive Public License 1.0"
-licenseName App_s2p = "App::s2p License"
-licenseName APSL_1_0 = "Apple Public Source License 1.0"
-licenseName APSL_1_1 = "Apple Public Source License 1.1"
-licenseName APSL_1_2 = "Apple Public Source License 1.2"
-licenseName APSL_2_0 = "Apple Public Source License 2.0"
-licenseName Arphic_1999 = "Arphic Public License"
-licenseName Artistic_1_0_cl8 = "Artistic License 1.0 w/clause 8"
-licenseName Artistic_1_0_Perl = "Artistic License 1.0 (Perl)"
-licenseName Artistic_1_0 = "Artistic License 1.0"
-licenseName Artistic_2_0 = "Artistic License 2.0"
-licenseName Artistic_dist = "Artistic License 1.0 (dist)"
-licenseName Aspell_RU = "Aspell Russian License"
-licenseName ASWF_Digital_Assets_1_0 = "ASWF Digital Assets License version 1.0"
-licenseName ASWF_Digital_Assets_1_1 = "ASWF Digital Assets License 1.1"
-licenseName Baekmuk = "Baekmuk License"
-licenseName Bahyph = "Bahyph License"
-licenseName Barr = "Barr License"
-licenseName Bcrypt_Solar_Designer = "bcrypt Solar Designer License"
-licenseName Beerware = "Beerware License"
-licenseName Bitstream_Charter = "Bitstream Charter Font License"
-licenseName Bitstream_Vera = "Bitstream Vera Font License"
-licenseName BitTorrent_1_0 = "BitTorrent Open Source License v1.0"
-licenseName BitTorrent_1_1 = "BitTorrent Open Source License v1.1"
-licenseName Blessing = "SQLite Blessing"
-licenseName BlueOak_1_0_0 = "Blue Oak Model License 1.0.0"
-licenseName Boehm_GC_without_fee = "Boehm-Demers-Weiser GC License (without fee)"
-licenseName Boehm_GC = "Boehm-Demers-Weiser GC License"
-licenseName Borceux = "Borceux license"
-licenseName Brian_Gladman_2_Clause = "Brian Gladman 2-Clause License"
-licenseName Brian_Gladman_3_Clause = "Brian Gladman 3-Clause License"
-licenseName BSD_1_Clause = "BSD 1-Clause License"
-licenseName BSD_2_Clause_FreeBSD = "BSD 2-Clause FreeBSD License"
-licenseName BSD_2_Clause_NetBSD = "BSD 2-Clause NetBSD License"
-licenseName BSD_2_Clause_Darwin = "BSD 2-Clause - Ian Darwin variant"
-licenseName BSD_2_Clause_first_lines = "BSD 2-Clause - first lines requirement"
-licenseName BSD_2_Clause_Patent = "BSD-2-Clause Plus Patent License"
-licenseName BSD_2_Clause_pkgconf_disclaimer = "BSD 2-Clause pkgconf disclaimer variant"
-licenseName BSD_2_Clause_Views = "BSD 2-Clause with views sentence"
-licenseName BSD_2_Clause = "BSD 2-Clause \"Simplified\" License"
-licenseName BSD_3_Clause_acpica = "BSD 3-Clause acpica variant"
-licenseName BSD_3_Clause_Attribution = "BSD with attribution"
-licenseName BSD_3_Clause_Clear = "BSD 3-Clause Clear License"
-licenseName BSD_3_Clause_flex = "BSD 3-Clause Flex variant"
-licenseName BSD_3_Clause_HP = "Hewlett-Packard BSD variant license"
-licenseName BSD_3_Clause_LBNL = "Lawrence Berkeley National Labs BSD variant license"
-licenseName BSD_3_Clause_Modification = "BSD 3-Clause Modification"
-licenseName BSD_3_Clause_No_Military_License = "BSD 3-Clause No Military License"
-licenseName BSD_3_Clause_No_Nuclear_License_2014 = "BSD 3-Clause No Nuclear License 2014"
-licenseName BSD_3_Clause_No_Nuclear_License = "BSD 3-Clause No Nuclear License"
-licenseName BSD_3_Clause_No_Nuclear_Warranty = "BSD 3-Clause No Nuclear Warranty"
-licenseName BSD_3_Clause_Open_MPI = "BSD 3-Clause Open MPI variant"
-licenseName BSD_3_Clause_Sun = "BSD 3-Clause Sun Microsystems"
-licenseName BSD_3_Clause = "BSD 3-Clause \"New\" or \"Revised\" License"
-licenseName BSD_4_Clause_Shortened = "BSD 4 Clause Shortened"
-licenseName BSD_4_Clause_UC = "BSD-4-Clause (University of California-Specific)"
-licenseName BSD_4_Clause = "BSD 4-Clause \"Original\" or \"Old\" License"
-licenseName BSD_4_3RENO = "BSD 4.3 RENO License"
-licenseName BSD_4_3TAHOE = "BSD 4.3 TAHOE License"
-licenseName BSD_Advertising_Acknowledgement = "BSD Advertising Acknowledgement License"
-licenseName BSD_Attribution_HPND_disclaimer = "BSD with Attribution and HPND disclaimer"
-licenseName BSD_Inferno_Nettverk = "BSD-Inferno-Nettverk"
-licenseName BSD_Protection = "BSD Protection License"
-licenseName BSD_Source_beginning_file = "BSD Source Code Attribution - beginning of file variant"
-licenseName BSD_Source_Code = "BSD Source Code Attribution"
-licenseName BSD_Systemics_W3Works = "Systemics W3Works BSD variant license"
-licenseName BSD_Systemics = "Systemics BSD variant license"
-licenseName BSL_1_0 = "Boost Software License 1.0"
-licenseName Bzip2_1_0_5 = "bzip2 and libbzip2 License v1.0.5"
-licenseName BUSL_1_1 = "Business Source License 1.1"
-licenseName Bzip2_1_0_6 = "bzip2 and libbzip2 License v1.0.6"
-licenseName C_UDA_1_0 = "Computational Use of Data Agreement v1.0"
-licenseName CAL_1_0_Combined_Work_Exception = "Cryptographic Autonomy License 1.0 (Combined Work Exception)"
-licenseName CAL_1_0 = "Cryptographic Autonomy License 1.0"
-licenseName Caldera_no_preamble = "Caldera License (without preamble)"
-licenseName Caldera = "Caldera License"
-licenseName Catharon = "Catharon License"
-licenseName CATOSL_1_1 = "Computer Associates Trusted Open Source License 1.1"
-licenseName CC_BY_1_0 = "Creative Commons Attribution 1.0 Generic"
-licenseName CC_BY_2_0 = "Creative Commons Attribution 2.0 Generic"
-licenseName CC_BY_2_5_AU = "Creative Commons Attribution 2.5 Australia"
-licenseName CC_BY_2_5 = "Creative Commons Attribution 2.5 Generic"
-licenseName CC_BY_3_0_AT = "Creative Commons Attribution 3.0 Austria"
-licenseName CC_BY_3_0_AU = "Creative Commons Attribution 3.0 Australia"
-licenseName CC_BY_3_0_DE = "Creative Commons Attribution 3.0 Germany"
-licenseName CC_BY_3_0_IGO = "Creative Commons Attribution 3.0 IGO"
-licenseName CC_BY_3_0_NL = "Creative Commons Attribution 3.0 Netherlands"
-licenseName CC_BY_3_0_US = "Creative Commons Attribution 3.0 United States"
-licenseName CC_BY_3_0 = "Creative Commons Attribution 3.0 Unported"
-licenseName CC_BY_4_0 = "Creative Commons Attribution 4.0 International"
-licenseName CC_BY_NC_1_0 = "Creative Commons Attribution Non Commercial 1.0 Generic"
-licenseName CC_BY_NC_2_0 = "Creative Commons Attribution Non Commercial 2.0 Generic"
-licenseName CC_BY_NC_2_5 = "Creative Commons Attribution Non Commercial 2.5 Generic"
-licenseName CC_BY_NC_3_0_DE = "Creative Commons Attribution Non Commercial 3.0 Germany"
-licenseName CC_BY_NC_3_0 = "Creative Commons Attribution Non Commercial 3.0 Unported"
-licenseName CC_BY_NC_4_0 = "Creative Commons Attribution Non Commercial 4.0 International"
-licenseName CC_BY_NC_ND_1_0 = "Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic"
-licenseName CC_BY_NC_ND_2_0 = "Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic"
-licenseName CC_BY_NC_ND_2_5 = "Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic"
-licenseName CC_BY_NC_ND_3_0_DE = "Creative Commons Attribution Non Commercial No Derivatives 3.0 Germany"
-licenseName CC_BY_NC_ND_3_0_IGO = "Creative Commons Attribution Non Commercial No Derivatives 3.0 IGO"
-licenseName CC_BY_NC_ND_3_0 = "Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported"
-licenseName CC_BY_NC_ND_4_0 = "Creative Commons Attribution Non Commercial No Derivatives 4.0 International"
-licenseName CC_BY_NC_SA_1_0 = "Creative Commons Attribution Non Commercial Share Alike 1.0 Generic"
-licenseName CC_BY_NC_SA_2_0_DE = "Creative Commons Attribution Non Commercial Share Alike 2.0 Germany"
-licenseName CC_BY_NC_SA_2_0_FR = "Creative Commons Attribution-NonCommercial-ShareAlike 2.0 France"
-licenseName CC_BY_NC_SA_2_0_UK = "Creative Commons Attribution Non Commercial Share Alike 2.0 England and Wales"
-licenseName CC_BY_NC_SA_2_0 = "Creative Commons Attribution Non Commercial Share Alike 2.0 Generic"
-licenseName CC_BY_NC_SA_2_5 = "Creative Commons Attribution Non Commercial Share Alike 2.5 Generic"
-licenseName CC_BY_NC_SA_3_0_DE = "Creative Commons Attribution Non Commercial Share Alike 3.0 Germany"
-licenseName CC_BY_NC_SA_3_0_IGO = "Creative Commons Attribution Non Commercial Share Alike 3.0 IGO"
-licenseName CC_BY_NC_SA_3_0 = "Creative Commons Attribution Non Commercial Share Alike 3.0 Unported"
-licenseName CC_BY_NC_SA_4_0 = "Creative Commons Attribution Non Commercial Share Alike 4.0 International"
-licenseName CC_BY_ND_1_0 = "Creative Commons Attribution No Derivatives 1.0 Generic"
-licenseName CC_BY_ND_2_0 = "Creative Commons Attribution No Derivatives 2.0 Generic"
-licenseName CC_BY_ND_2_5 = "Creative Commons Attribution No Derivatives 2.5 Generic"
-licenseName CC_BY_ND_3_0_DE = "Creative Commons Attribution No Derivatives 3.0 Germany"
-licenseName CC_BY_ND_3_0 = "Creative Commons Attribution No Derivatives 3.0 Unported"
-licenseName CC_BY_ND_4_0 = "Creative Commons Attribution No Derivatives 4.0 International"
-licenseName CC_BY_SA_1_0 = "Creative Commons Attribution Share Alike 1.0 Generic"
-licenseName CC_BY_SA_2_0_UK = "Creative Commons Attribution Share Alike 2.0 England and Wales"
-licenseName CC_BY_SA_2_0 = "Creative Commons Attribution Share Alike 2.0 Generic"
-licenseName CC_BY_SA_2_1_JP = "Creative Commons Attribution Share Alike 2.1 Japan"
-licenseName CC_BY_SA_2_5 = "Creative Commons Attribution Share Alike 2.5 Generic"
-licenseName CC_BY_SA_3_0_AT = "Creative Commons Attribution Share Alike 3.0 Austria"
-licenseName CC_BY_SA_3_0_DE = "Creative Commons Attribution Share Alike 3.0 Germany"
-licenseName CC_BY_SA_3_0_IGO = "Creative Commons Attribution-ShareAlike 3.0 IGO"
-licenseName CC_BY_SA_3_0 = "Creative Commons Attribution Share Alike 3.0 Unported"
-licenseName CC_BY_SA_4_0 = "Creative Commons Attribution Share Alike 4.0 International"
-licenseName CC_PDDC = "Creative Commons Public Domain Dedication and Certification"
-licenseName CC_PDM_1_0 = "Creative    Commons Public Domain Mark 1.0 Universal"
-licenseName CC_SA_1_0 = "Creative Commons Share Alike 1.0 Generic"
-licenseName CC0_1_0 = "Creative Commons Zero v1.0 Universal"
-licenseName CDDL_1_0 = "Common Development and Distribution License 1.0"
-licenseName CDDL_1_1 = "Common Development and Distribution License 1.1"
-licenseName CDL_1_0 = "Common Documentation License 1.0"
-licenseName CDLA_Permissive_1_0 = "Community Data License Agreement Permissive 1.0"
-licenseName CDLA_Permissive_2_0 = "Community Data License Agreement Permissive 2.0"
-licenseName CDLA_Sharing_1_0 = "Community Data License Agreement Sharing 1.0"
-licenseName CECILL_1_0 = "CeCILL Free Software License Agreement v1.0"
-licenseName CECILL_1_1 = "CeCILL Free Software License Agreement v1.1"
-licenseName CECILL_2_0 = "CeCILL Free Software License Agreement v2.0"
-licenseName CECILL_2_1 = "CeCILL Free Software License Agreement v2.1"
-licenseName CECILL_B = "CeCILL-B Free Software License Agreement"
-licenseName CECILL_C = "CeCILL-C Free Software License Agreement"
-licenseName CERN_OHL_1_1 = "CERN Open Hardware Licence v1.1"
-licenseName CERN_OHL_1_2 = "CERN Open Hardware Licence v1.2"
-licenseName CERN_OHL_P_2_0 = "CERN Open Hardware Licence Version 2 - Permissive"
-licenseName CERN_OHL_S_2_0 = "CERN Open Hardware Licence Version 2 - Strongly Reciprocal"
-licenseName CERN_OHL_W_2_0 = "CERN Open Hardware Licence Version 2 - Weakly Reciprocal"
-licenseName CFITSIO = "CFITSIO License"
-licenseName Check_cvs = "check-cvs License"
-licenseName Checkmk = "Checkmk License"
-licenseName ClArtistic = "Clarified Artistic License"
-licenseName Clips = "Clips License"
-licenseName CMU_Mach_nodoc = "CMU    Mach - no notices-in-documentation variant"
-licenseName CMU_Mach = "CMU Mach License"
-licenseName CNRI_Jython = "CNRI Jython License"
-licenseName CNRI_Python_GPL_Compatible = "CNRI Python Open Source GPL Compatible License Agreement"
-licenseName CNRI_Python = "CNRI Python License"
-licenseName COIL_1_0 = "Copyfree Open Innovation License"
-licenseName Community_Spec_1_0 = "Community Specification License 1.0"
-licenseName Condor_1_1 = "Condor Public License v1.1"
-licenseName Copyleft_next_0_3_0 = "copyleft-next 0.3.0"
-licenseName Copyleft_next_0_3_1 = "copyleft-next 0.3.1"
-licenseName Cornell_Lossless_JPEG = "Cornell Lossless JPEG License"
-licenseName CPAL_1_0 = "Common Public Attribution License 1.0"
-licenseName CPL_1_0 = "Common Public License 1.0"
-licenseName CPOL_1_02 = "Code Project Open License 1.02"
-licenseName Cronyx = "Cronyx License"
-licenseName Crossword = "Crossword License"
-licenseName CryptoSwift = "CryptoSwift License"
-licenseName CrystalStacker = "CrystalStacker License"
-licenseName CUA_OPL_1_0 = "CUA Office Public License v1.0"
-licenseName Cube = "Cube License"
-licenseName Curl = "curl License"
-licenseName Cve_tou = "Common Vulnerability Enumeration ToU License"
-licenseName D_FSL_1_0 = "Deutsche Freie Software Lizenz"
-licenseName DEC_3_Clause = "DEC 3-Clause License"
-licenseName Diffmark = "diffmark license"
-licenseName DL_DE_BY_2_0 = "Data licence Germany \8211 attribution \8211 version 2.0"
-licenseName DL_DE_ZERO_2_0 = "Data licence Germany \8211 zero \8211 version 2.0"
-licenseName DocBook_DTD = "DocBook DTD License"
-licenseName DocBook_Schema = "DocBook Schema License"
-licenseName DocBook_Stylesheet = "DocBook Stylesheet License"
-licenseName DocBook_XML = "DocBook XML License"
-licenseName DOC = "DOC License"
-licenseName Dotseqn = "Dotseqn License"
-licenseName DRL_1_0 = "Detection Rule License 1.0"
-licenseName DRL_1_1 = "Detection Rule License 1.1"
-licenseName DSDP = "DSDP License"
-licenseName Dtoa = "David M. Gay dtoa License"
-licenseName Dvipdfm = "dvipdfm License"
-licenseName ECL_1_0 = "Educational Community License v1.0"
-licenseName ECL_2_0 = "Educational Community License v2.0"
-licenseName EFL_1_0 = "Eiffel Forum License v1.0"
-licenseName EFL_2_0 = "Eiffel Forum License v2.0"
-licenseName EGenix = "eGenix.com Public License 1.1.0"
-licenseName Elastic_2_0 = "Elastic License 2.0"
-licenseName Entessa = "Entessa Public License v1.0"
-licenseName EPICS = "EPICS Open License"
-licenseName EPL_1_0 = "Eclipse Public License 1.0"
-licenseName EPL_2_0 = "Eclipse Public License 2.0"
-licenseName ErlPL_1_1 = "Erlang Public License v1.1"
-licenseName Etalab_2_0 = "Etalab Open License 2.0"
-licenseName EUDatagrid = "EU DataGrid Software License"
-licenseName EUPL_1_0 = "European Union Public License 1.0"
-licenseName EUPL_1_1 = "European Union Public License 1.1"
-licenseName EUPL_1_2 = "European Union Public License 1.2"
-licenseName Eurosym = "Eurosym License"
-licenseName Fair = "Fair License"
-licenseName FBM = "Fuzzy Bitmap License"
-licenseName FDK_AAC = "Fraunhofer FDK AAC Codec Library"
-licenseName Ferguson_Twofish = "Ferguson Twofish License"
-licenseName Frameworx_1_0 = "Frameworx Open License 1.0"
-licenseName FreeBSD_DOC = "FreeBSD Documentation License"
-licenseName FreeImage = "FreeImage Public License v1.0"
-licenseName FSFAP_no_warranty_disclaimer = "FSF All Permissive License (without Warranty)"
-licenseName FSFAP = "FSF All Permissive License"
-licenseName FSFULLRSD = "FSF Unlimited License (with License Retention and Short Disclaimer)"
-licenseName FSFULLRWD = "FSF Unlimited License (With License Retention and Warranty Disclaimer)"
-licenseName FSFULLR = "FSF Unlimited License (with License Retention)"
-licenseName FSFUL = "FSF Unlimited License"
-licenseName FSL_1_1_ALv2 = "Functional Source License, Version 1.1, ALv2 Future License"
-licenseName FSL_1_1_MIT = "Functional Source License, Version 1.1, MIT Future License"
-licenseName FTL = "Freetype Project License"
-licenseName Furuseth = "Furuseth License"
-licenseName Fwlw = "fwlw License"
-licenseName Game_Programming_Gems = "Game Programming Gems License"
-licenseName GCR_docs = "Gnome GCR Documentation License"
-licenseName GD = "GD License"
-licenseName Generic_xts = "Generic XTS License"
-licenseName GFDL_1_1_invariants_only = "GNU Free Documentation License v1.1 only - invariants"
-licenseName GFDL_1_1_invariants_or_later = "GNU Free Documentation License v1.1 or later - invariants"
-licenseName GFDL_1_1_no_invariants_only = "GNU Free Documentation License v1.1 only - no invariants"
-licenseName GFDL_1_1_no_invariants_or_later = "GNU Free Documentation License v1.1 or later - no invariants"
-licenseName GFDL_1_1_only = "GNU Free Documentation License v1.1 only"
-licenseName GFDL_1_1_or_later = "GNU Free Documentation License v1.1 or later"
-licenseName GFDL_1_2_invariants_only = "GNU Free Documentation License v1.2 only - invariants"
-licenseName GFDL_1_2_invariants_or_later = "GNU Free Documentation License v1.2 or later - invariants"
-licenseName GFDL_1_2_no_invariants_only = "GNU Free Documentation License v1.2 only - no invariants"
-licenseName GFDL_1_2_no_invariants_or_later = "GNU Free Documentation License v1.2 or later - no invariants"
-licenseName GFDL_1_2_only = "GNU Free Documentation License v1.2 only"
-licenseName GFDL_1_2_or_later = "GNU Free Documentation License v1.2 or later"
-licenseName GFDL_1_3_invariants_only = "GNU Free Documentation License v1.3 only - invariants"
-licenseName GFDL_1_3_invariants_or_later = "GNU Free Documentation License v1.3 or later - invariants"
-licenseName GFDL_1_3_no_invariants_only = "GNU Free Documentation License v1.3 only - no invariants"
-licenseName GFDL_1_3_no_invariants_or_later = "GNU Free Documentation License v1.3 or later - no invariants"
-licenseName GFDL_1_3_only = "GNU Free Documentation License v1.3 only"
-licenseName GFDL_1_3_or_later = "GNU Free Documentation License v1.3 or later"
-licenseName Giftware = "Giftware License"
-licenseName GL2PS = "GL2PS License"
-licenseName Glide = "3dfx Glide License"
-licenseName Glulxe = "Glulxe License"
-licenseName GLWTPL = "Good Luck With That Public License"
-licenseName Gnuplot = "gnuplot License"
-licenseName GPL_1_0_only = "GNU General Public License v1.0 only"
-licenseName GPL_1_0_or_later = "GNU General Public License v1.0 or later"
-licenseName GPL_2_0_only = "GNU General Public License v2.0 only"
-licenseName GPL_2_0_or_later = "GNU General Public License v2.0 or later"
-licenseName GPL_3_0_only = "GNU General Public License v3.0 only"
-licenseName GPL_3_0_or_later = "GNU General Public License v3.0 or later"
-licenseName Graphics_Gems = "Graphics Gems License"
-licenseName GSOAP_1_3b = "gSOAP Public License v1.3b"
-licenseName Gtkbook = "gtkbook License"
-licenseName Gutmann = "Gutmann License"
-licenseName HaskellReport = "Haskell Language Report License"
-licenseName HDF5 = "HDF5 License"
-licenseName Hdparm = "hdparm License"
-licenseName HIDAPI = "HIDAPI License"
-licenseName Hippocratic_2_1 = "Hippocratic License 2.1"
-licenseName HP_1986 = "Hewlett-Packard 1986 License"
-licenseName HP_1989 = "Hewlett-Packard 1989 License"
-licenseName HPND_DEC = "Historical Permission Notice and Disclaimer - DEC variant"
-licenseName HPND_doc_sell = "Historical Permission Notice and Disclaimer - documentation sell variant"
-licenseName HPND_doc = "Historical Permission Notice and Disclaimer - documentation variant"
-licenseName HPND_export_US_acknowledgement = "HPND with US Government export control warning and acknowledgment"
-licenseName HPND_export_US_modify = "HPND with US Government export control warning and modification rqmt"
-licenseName HPND_export_US = "HPND with US Government export control warning"
-licenseName HPND_export2_US = "HPND with US Government export control and 2 disclaimers"
-licenseName HPND_Fenneberg_Livingston = "Historical Permission Notice and Disclaimer - Fenneberg-Livingston variant"
-licenseName HPND_INRIA_IMAG = "Historical Permission Notice and Disclaimer    - INRIA-IMAG variant"
-licenseName HPND_Intel = "Historical Permission Notice and Disclaimer - Intel variant"
-licenseName HPND_Kevlin_Henney = "Historical Permission Notice and Disclaimer - Kevlin Henney variant"
-licenseName HPND_Markus_Kuhn = "Historical Permission Notice and Disclaimer - Markus Kuhn variant"
-licenseName HPND_merchantability_variant = "Historical Permission Notice and Disclaimer - merchantability variant"
-licenseName HPND_MIT_disclaimer = "Historical Permission Notice and Disclaimer with MIT disclaimer"
-licenseName HPND_Netrek = "Historical Permission Notice and Disclaimer - Netrek variant"
-licenseName HPND_Pbmplus = "Historical Permission Notice and Disclaimer - Pbmplus variant"
-licenseName HPND_sell_MIT_disclaimer_xserver = "Historical Permission Notice and Disclaimer - sell xserver variant with MIT disclaimer"
-licenseName HPND_sell_regexpr = "Historical Permission Notice and Disclaimer - sell regexpr variant"
-licenseName HPND_sell_variant_MIT_disclaimer_rev = "HPND sell variant with MIT disclaimer - reverse"
-licenseName HPND_sell_variant_MIT_disclaimer = "HPND sell variant with MIT disclaimer"
-licenseName HPND_sell_variant = "Historical Permission Notice and Disclaimer - sell variant"
-licenseName HPND_UC_export_US = "Historical Permission Notice and Disclaimer - University of California, US export warning"
-licenseName HPND_UC = "Historical Permission Notice and Disclaimer - University of California variant"
-licenseName HPND = "Historical Permission Notice and Disclaimer"
-licenseName HTMLTIDY = "HTML Tidy License"
-licenseName IBM_pibs = "IBM PowerPC Initialization and Boot Software"
-licenseName ICU = "ICU License"
-licenseName IEC_Code_Components_EULA = "IEC    Code Components End-user licence agreement"
-licenseName IJG_short = "Independent JPEG Group License - short"
-licenseName IJG = "Independent JPEG Group License"
-licenseName ImageMagick = "ImageMagick License"
-licenseName IMatix = "iMatix Standard Function Library Agreement"
-licenseName Imlib2 = "Imlib2 License"
-licenseName Info_ZIP = "Info-ZIP License"
-licenseName Inner_Net_2_0 = "Inner Net License v2.0"
-licenseName InnoSetup = "Inno Setup License"
-licenseName Intel_ACPI = "Intel ACPI Software License Agreement"
-licenseName Intel = "Intel Open Source License"
-licenseName Interbase_1_0 = "Interbase Public License v1.0"
-licenseName IPA = "IPA Font License"
-licenseName IPL_1_0 = "IBM Public License v1.0"
-licenseName ISC_Veillard = "ISC Veillard variant"
-licenseName ISC = "ISC License"
-licenseName Jam = "Jam License"
-licenseName JasPer_2_0 = "JasPer License"
-licenseName Jove = "Jove License"
-licenseName JPL_image = "JPL Image Use Policy"
-licenseName JPNIC = "Japan Network Information Center License"
-licenseName JSON = "JSON License"
-licenseName Kastrup = "Kastrup License"
-licenseName Kazlib = "Kazlib License"
-licenseName Knuth_CTAN = "Knuth CTAN License"
-licenseName LAL_1_2 = "Licence Art Libre 1.2"
-licenseName LAL_1_3 = "Licence Art Libre 1.3"
-licenseName Latex2e_translated_notice = "Latex2e with translated notice permission"
-licenseName Latex2e = "Latex2e License"
-licenseName Leptonica = "Leptonica License"
-licenseName LGPL_2_0_only = "GNU Library General Public License v2 only"
-licenseName LGPL_2_0_or_later = "GNU Library General Public License v2 or later"
-licenseName LGPL_2_1_only = "GNU Lesser General Public License v2.1 only"
-licenseName LGPL_2_1_or_later = "GNU Lesser General Public License v2.1 or later"
-licenseName LGPL_3_0_only = "GNU Lesser General Public License v3.0 only"
-licenseName LGPL_3_0_or_later = "GNU Lesser General Public License v3.0 or later"
-licenseName LGPLLR = "Lesser General Public License For Linguistic Resources"
-licenseName Libpng_1_6_35 = "PNG Reference Library License v1 (for libpng 0.5 through 1.6.35"
-licenseName Libpng_2_0 = "PNG Reference Library version 2"
-licenseName Libpng = "libpng License"
-licenseName Libselinux_1_0 = "libselinux public domain notice"
-licenseName Libtiff = "libtiff License"
-licenseName Libutil_David_Nugent = "libutil David Nugent License"
-licenseName LiLiQ_P_1_1 = "Licence Libre du Qu\233bec \8211 Permissive version 1.1"
-licenseName LiLiQ_R_1_1 = "Licence Libre du Qu\233bec \8211 R\233ciprocit\233 version 1.1"
-licenseName LiLiQ_Rplus_1_1 = "Licence Libre du Qu\233bec \8211 R\233ciprocit\233 forte version 1.1"
-licenseName Linux_man_pages_1_para = "Linux man-pages - 1 paragraph"
-licenseName Linux_man_pages_copyleft_2_para = "Linux man-pages Copyleft - 2 paragraphs"
-licenseName Linux_man_pages_copyleft_var = "Linux man-pages Copyleft Variant"
-licenseName Linux_man_pages_copyleft = "Linux man-pages Copyleft"
-licenseName Linux_OpenIB = "Linux Kernel Variant of OpenIB.org license"
-licenseName LOOP = "Common Lisp LOOP License"
-licenseName LPD_document = "LPD Documentation License"
-licenseName LPL_1_02 = "Lucent Public License v1.02"
-licenseName LPL_1_0 = "Lucent Public License Version 1.0"
-licenseName LPPL_1_0 = "LaTeX Project Public License v1.0"
-licenseName LPPL_1_1 = "LaTeX Project Public License v1.1"
-licenseName LPPL_1_2 = "LaTeX Project Public License v1.2"
-licenseName LPPL_1_3a = "LaTeX Project Public License v1.3a"
-licenseName LPPL_1_3c = "LaTeX Project Public License v1.3c"
-licenseName Lsof = "lsof License"
-licenseName Lucida_Bitmap_Fonts = "Lucida Bitmap Fonts License"
-licenseName LZMA_SDK_9_11_to_9_20 = "LZMA SDK License (versions 9.11 to 9.20)"
-licenseName LZMA_SDK_9_22 = "LZMA SDK License (versions 9.22 and beyond)"
-licenseName Mackerras_3_Clause_acknowledgment = "Mackerras 3-Clause - acknowledgment variant"
-licenseName Mackerras_3_Clause = "Mackerras 3-Clause License"
-licenseName Magaz = "magaz License"
-licenseName Mailprio = "mailprio License"
-licenseName MakeIndex = "MakeIndex License"
-licenseName Man2html = "man2html License"
-licenseName Martin_Birgmeier = "Martin Birgmeier License"
-licenseName McPhee_slideshow = "McPhee Slideshow License"
-licenseName Metamail = "metamail License"
-licenseName Minpack = "Minpack License"
-licenseName MIPS = "MIPS License"
-licenseName MirOS = "The MirOS Licence"
-licenseName MIT_0 = "MIT No Attribution"
-licenseName MIT_advertising = "Enlightenment License (e16)"
-licenseName MIT_Click = "MIT Click License"
-licenseName MIT_CMU = "CMU License"
-licenseName MIT_enna = "enna License"
-licenseName MIT_feh = "feh License"
-licenseName MIT_Festival = "MIT Festival Variant"
-licenseName MIT_Khronos_old = "MIT Khronos - old variant"
-licenseName MIT_Modern_Variant = "MIT License Modern Variant"
-licenseName MIT_open_group = "MIT Open Group variant"
-licenseName MIT_testregex = "MIT testregex Variant"
-licenseName MIT_Wu = "MIT Tom Wu Variant"
-licenseName MITNFA = "MIT +no-false-attribs license"
-licenseName MIT = "MIT License"
-licenseName MMIXware = "MMIXware License"
-licenseName Motosoto = "Motosoto License"
-licenseName MPEG_SSG = "MPEG Software Simulation"
-licenseName Mpi_permissive = "mpi Permissive License"
-licenseName Mpich2 = "mpich2 License"
-licenseName MPL_1_0 = "Mozilla Public License 1.0"
-licenseName MPL_1_1 = "Mozilla Public License 1.1"
-licenseName MPL_2_0_no_copyleft_exception = "Mozilla Public License 2.0 (no copyleft exception)"
-licenseName MPL_2_0 = "Mozilla Public License 2.0"
-licenseName Mplus = "mplus Font License"
-licenseName MS_LPL = "Microsoft Limited Public License"
-licenseName MS_PL = "Microsoft Public License"
-licenseName MS_RL = "Microsoft Reciprocal License"
-licenseName MTLL = "Matrix Template Library License"
-licenseName MulanPSL_1_0 = "Mulan Permissive Software License, Version 1"
-licenseName MulanPSL_2_0 = "Mulan Permissive Software License, Version 2"
-licenseName Multics = "Multics License"
-licenseName Mup = "Mup License"
-licenseName NAIST_2003 = "Nara Institute of Science and Technology License (2003)"
-licenseName NASA_1_3 = "NASA Open Source Agreement 1.3"
-licenseName Naumen = "Naumen Public License"
-licenseName NBPL_1_0 = "Net Boolean Public License v1"
-licenseName NCBI_PD = "NCBI Public Domain Notice"
-licenseName NCGL_UK_2_0 = "Non-Commercial Government Licence"
-licenseName NCL = "NCL Source Code License"
-licenseName NCSA = "University of Illinois/NCSA Open Source License"
-licenseName Net_SNMP = "Net-SNMP License"
-licenseName NetCDF = "NetCDF license"
-licenseName Newsletr = "Newsletr License"
-licenseName NGPL = "Nethack General Public License"
-licenseName Ngrep = "ngrep License"
-licenseName NICTA_1_0 = "NICTA Public Software License, Version 1.0"
-licenseName NIST_PD_fallback = "NIST Public Domain Notice with license fallback"
-licenseName NIST_PD = "NIST Public Domain Notice"
-licenseName NIST_Software = "NIST Software License"
-licenseName NLOD_1_0 = "Norwegian Licence for Open Government Data (NLOD) 1.0"
-licenseName NLOD_2_0 = "Norwegian Licence for Open Government Data (NLOD) 2.0"
-licenseName NLPL = "No Limit Public License"
-licenseName Nokia = "Nokia Open Source License"
-licenseName NOSL = "Netizen Open Source License"
-licenseName Noweb = "Noweb License"
-licenseName NPL_1_0 = "Netscape Public License v1.0"
-licenseName NPL_1_1 = "Netscape Public License v1.1"
-licenseName NPOSL_3_0 = "Non-Profit Open Software License 3.0"
-licenseName NRL = "NRL License"
-licenseName NTIA_PD = "NTIA Public Domain Notice"
-licenseName NTP_0 = "NTP No Attribution"
-licenseName NTP = "NTP License"
-licenseName O_UDA_1_0 = "Open Use of Data Agreement v1.0"
-licenseName OAR = "OAR License"
-licenseName OCCT_PL = "Open CASCADE Technology Public License"
-licenseName OCLC_2_0 = "OCLC Research Public License 2.0"
-licenseName ODbL_1_0 = "Open Data Commons Open Database License v1.0"
-licenseName ODC_By_1_0 = "Open Data Commons Attribution License v1.0"
-licenseName OFFIS = "OFFIS License"
-licenseName OFL_1_0_no_RFN = "SIL Open Font License 1.0 with no Reserved Font Name"
-licenseName OFL_1_0_RFN = "SIL Open Font License 1.0 with Reserved Font Name"
-licenseName OFL_1_0 = "SIL Open Font License 1.0"
-licenseName OFL_1_1_no_RFN = "SIL Open Font License 1.1 with no Reserved Font Name"
-licenseName OFL_1_1_RFN = "SIL Open Font License 1.1 with Reserved Font Name"
-licenseName OFL_1_1 = "SIL Open Font License 1.1"
-licenseName OGC_1_0 = "OGC Software License, Version 1.0"
-licenseName OGDL_Taiwan_1_0 = "Taiwan Open Government Data License, version 1.0"
-licenseName OGL_Canada_2_0 = "Open Government Licence - Canada"
-licenseName OGL_UK_1_0 = "Open Government Licence v1.0"
-licenseName OGL_UK_2_0 = "Open Government Licence v2.0"
-licenseName OGL_UK_3_0 = "Open Government Licence v3.0"
-licenseName OGTSL = "Open Group Test Suite License"
-licenseName OLDAP_1_1 = "Open LDAP Public License v1.1"
-licenseName OLDAP_1_2 = "Open LDAP Public License v1.2"
-licenseName OLDAP_1_3 = "Open LDAP Public License v1.3"
-licenseName OLDAP_1_4 = "Open LDAP Public License v1.4"
-licenseName OLDAP_2_0_1 = "Open LDAP Public License v2.0.1"
-licenseName OLDAP_2_0 = "Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B)"
-licenseName OLDAP_2_1 = "Open LDAP Public License v2.1"
-licenseName OLDAP_2_2_1 = "Open LDAP Public License v2.2.1"
-licenseName OLDAP_2_2_2 = "Open LDAP Public License 2.2.2"
-licenseName OLDAP_2_2 = "Open LDAP Public License v2.2"
-licenseName OLDAP_2_3 = "Open LDAP Public License v2.3"
-licenseName OLDAP_2_4 = "Open LDAP Public License v2.4"
-licenseName OLDAP_2_5 = "Open LDAP Public License v2.5"
-licenseName OLDAP_2_6 = "Open LDAP Public License v2.6"
-licenseName OLDAP_2_7 = "Open LDAP Public License v2.7"
-licenseName OLDAP_2_8 = "Open LDAP Public License v2.8"
-licenseName OLFL_1_3 = "Open Logistics Foundation License Version 1.3"
-licenseName OML = "Open Market License"
-licenseName OpenPBS_2_3 = "OpenPBS v2.3 Software License"
-licenseName OpenSSL_standalone = "OpenSSL License - standalone"
-licenseName OpenSSL = "OpenSSL License"
-licenseName OpenVision = "OpenVision License"
-licenseName OPL_1_0 = "Open Public License v1.0"
-licenseName OPL_UK_3_0 = "United    Kingdom Open Parliament Licence v3.0"
-licenseName OPUBL_1_0 = "Open Publication License v1.0"
-licenseName OSET_PL_2_1 = "OSET Public License version 2.1"
-licenseName OSL_1_0 = "Open Software License 1.0"
-licenseName OSL_1_1 = "Open Software License 1.1"
-licenseName OSL_2_0 = "Open Software License 2.0"
-licenseName OSL_2_1 = "Open Software License 2.1"
-licenseName OSL_3_0 = "Open Software License 3.0"
-licenseName PADL = "PADL License"
-licenseName Parity_6_0_0 = "The Parity Public License 6.0.0"
-licenseName Parity_7_0_0 = "The Parity Public License 7.0.0"
-licenseName PDDL_1_0 = "Open Data Commons Public Domain Dedication & License 1.0"
-licenseName PHP_3_01 = "PHP License v3.01"
-licenseName PHP_3_0 = "PHP License v3.0"
-licenseName Pixar = "Pixar License"
-licenseName Pkgconf = "pkgconf License"
-licenseName Plexus = "Plexus Classworlds License"
-licenseName Pnmstitch = "pnmstitch License"
-licenseName PolyForm_Noncommercial_1_0_0 = "PolyForm Noncommercial License 1.0.0"
-licenseName PolyForm_Small_Business_1_0_0 = "PolyForm Small Business License 1.0.0"
-licenseName PostgreSQL = "PostgreSQL License"
-licenseName PPL = "Peer Production License"
-licenseName PSF_2_0 = "Python Software Foundation License 2.0"
-licenseName Psfrag = "psfrag License"
-licenseName Psutils = "psutils License"
-licenseName Python_2_0_1 = "Python License 2.0.1"
-licenseName Python_2_0 = "Python License 2.0"
-licenseName Python_ldap = "Python ldap License"
-licenseName Qhull = "Qhull License"
-licenseName QPL_1_0_INRIA_2004 = "Q Public License 1.0 - INRIA 2004 variant"
-licenseName QPL_1_0 = "Q Public License 1.0"
-licenseName Radvd = "radvd License"
-licenseName Rdisc = "Rdisc License"
-licenseName RHeCos_1_1 = "Red Hat eCos Public License v1.1"
-licenseName RPL_1_1 = "Reciprocal Public License 1.1"
-licenseName RPL_1_5 = "Reciprocal Public License 1.5"
-licenseName RPSL_1_0 = "RealNetworks Public Source License v1.0"
-licenseName RSA_MD = "RSA Message-Digest License"
-licenseName RSCPL = "Ricoh Source Code Public License"
-licenseName Ruby_pty = "Ruby pty extension license"
-licenseName Ruby = "Ruby License"
-licenseName SAX_PD_2_0 = "Sax Public Domain Notice 2.0"
-licenseName SAX_PD = "Sax Public Domain Notice"
-licenseName Saxpath = "Saxpath License"
-licenseName SCEA = "SCEA Shared Source License"
-licenseName SchemeReport = "Scheme Language Report License"
-licenseName Sendmail_8_23 = "Sendmail License 8.23"
-licenseName Sendmail_Open_Source_1_1 = "Sendmail Open Source License v1.1"
-licenseName Sendmail = "Sendmail License"
-licenseName SGI_B_1_0 = "SGI Free Software License B v1.0"
-licenseName SGI_B_1_1 = "SGI Free Software License B v1.1"
-licenseName SGI_B_2_0 = "SGI Free Software License B v2.0"
-licenseName SGI_OpenGL = "SGI OpenGL License"
-licenseName SGP4 = "SGP4 Permission Notice"
-licenseName SHL_0_51 = "Solderpad Hardware License, Version 0.51"
-licenseName SHL_0_5 = "Solderpad Hardware License v0.5"
-licenseName SimPL_2_0 = "Simple Public License 2.0"
-licenseName SISSL_1_2 = "Sun Industry Standards Source License v1.2"
-licenseName SISSL = "Sun Industry Standards Source License v1.1"
-licenseName Sleepycat = "Sleepycat License"
-licenseName SL = "SL License"
-licenseName SMAIL_GPL = "SMAIL General Public License"
-licenseName SMLNJ = "Standard ML of New Jersey License"
-licenseName SMPPL = "Secure Messaging Protocol Public License"
-licenseName SNIA = "SNIA Public License 1.1"
-licenseName Snprintf = "snprintf License"
-licenseName SOFA = "SOFA Software License"
-licenseName SoftSurfer = "softSurfer License"
-licenseName Soundex = "Soundex License"
-licenseName Spencer_86 = "Spencer License 86"
-licenseName Spencer_94 = "Spencer License 94"
-licenseName Spencer_99 = "Spencer License 99"
-licenseName SPL_1_0 = "Sun Public License v1.0"
-licenseName Ssh_keyscan = "ssh-keyscan License"
-licenseName SSH_OpenSSH = "SSH OpenSSH license"
-licenseName SSH_short = "SSH short notice"
-licenseName SSLeay_standalone = "SSLeay License - standalone"
-licenseName SSPL_1_0 = "Server Side Public License, v 1"
-licenseName SugarCRM_1_1_3 = "SugarCRM Public License v1.1.3"
-licenseName Sun_PPP_2000 = "Sun PPP License (2000)"
-licenseName Sun_PPP = "Sun PPP License"
-licenseName SunPro = "SunPro License"
-licenseName SWL = "Scheme Widget Library (SWL) Software License Agreement"
-licenseName Swrule = "swrule License"
-licenseName Symlinks = "Symlinks License"
-licenseName TAPR_OHL_1_0 = "TAPR Open Hardware License v1.0"
-licenseName TCL = "TCL/TK License"
-licenseName TCP_wrappers = "TCP Wrappers License"
-licenseName TermReadKey = "TermReadKey License"
-licenseName TGPPL_1_0 = "Transitive Grace Period Public Licence 1.0"
-licenseName ThirdEye = "ThirdEye License"
-licenseName Threeparttable = "threeparttable License"
-licenseName TMate = "TMate Open Source License"
-licenseName TORQUE_1_1 = "TORQUE v2.5+ Software License v1.1"
-licenseName TOSL = "Trusster Open Source License"
-licenseName TPDL = "Time::ParseDate License"
-licenseName TPL_1_0 = "THOR Public License 1.0"
-licenseName TrustedQSL = "TrustedQSL License"
-licenseName TTWL = "Text-Tabs+Wrap License"
-licenseName TTYP0 = "TTYP0 License"
-licenseName TU_Berlin_1_0 = "Technische Universitaet Berlin License 1.0"
-licenseName TU_Berlin_2_0 = "Technische Universitaet Berlin License 2.0"
-licenseName Ubuntu_font_1_0 = "Ubuntu Font Licence v1.0"
-licenseName UCAR = "UCAR License"
-licenseName UCL_1_0 = "Upstream Compatibility License v1.0"
-licenseName Ulem = "ulem License"
-licenseName UMich_Merit = "Michigan/Merit Networks License"
-licenseName Unicode_3_0 = "Unicode License v3"
-licenseName Unicode_DFS_2015 = "Unicode License Agreement - Data Files and Software (2015)"
-licenseName Unicode_DFS_2016 = "Unicode License Agreement - Data Files and Software (2016)"
-licenseName Unicode_TOU = "Unicode Terms of Use"
-licenseName UnixCrypt = "UnixCrypt License"
-licenseName Unlicense_libtelnet = "Unlicense - libtelnet variant"
-licenseName Unlicense_libwhirlpool = "Unlicense - libwhirlpool variant"
-licenseName Unlicense = "The Unlicense"
-licenseName UPL_1_0 = "Universal Permissive License v1.0"
-licenseName URT_RLE = "Utah Raster Toolkit Run Length Encoded License"
-licenseName Vim = "Vim License"
-licenseName VOSTROM = "VOSTROM Public License for Open Source"
-licenseName VSL_1_0 = "Vovida Software License v1.0"
-licenseName W3C_19980720 = "W3C Software Notice and License (1998-07-20)"
-licenseName W3C_20150513 = "W3C Software Notice and Document License (2015-05-13)"
-licenseName W3C = "W3C Software Notice and License (2002-12-31)"
-licenseName W3m = "w3m License"
-licenseName Watcom_1_0 = "Sybase Open Watcom Public License 1.0"
-licenseName Widget_Workshop = "Widget Workshop License"
-licenseName Wsuipa = "Wsuipa License"
-licenseName WTFPL = "Do What The F*ck You Want To Public License"
-licenseName Wwl = "WWL License"
-licenseName X11_distribute_modifications_variant = "X11 License Distribution Modification Variant"
-licenseName X11_swapped = "X11 swapped final paragraphs"
-licenseName X11 = "X11 License"
-licenseName Xdebug_1_03 = "Xdebug License v 1.03"
-licenseName Xerox = "Xerox License"
-licenseName Xfig = "Xfig License"
-licenseName XFree86_1_1 = "XFree86 License 1.1"
-licenseName Xinetd = "xinetd License"
-licenseName Xkeyboard_config_Zinoviev = "xkeyboard-config Zinoviev License"
-licenseName Xlock = "xlock License"
-licenseName Xnet = "X.Net License"
-licenseName Xpp = "XPP License"
-licenseName XSkat = "XSkat License"
-licenseName Xzoom = "xzoom License"
-licenseName YPL_1_0 = "Yahoo! Public License v1.0"
-licenseName YPL_1_1 = "Yahoo! Public License v1.1"
-licenseName Zed = "Zed License"
-licenseName Zeeff = "Zeeff License"
-licenseName Zend_2_0 = "Zend License v2.0"
-licenseName Zimbra_1_3 = "Zimbra Public License v1.3"
-licenseName Zimbra_1_4 = "Zimbra Public License v1.4"
-licenseName Zlib_acknowledgement = "zlib/libpng License with Acknowledgement"
-licenseName Zlib = "zlib License"
-licenseName ZPL_1_1 = "Zope Public License 1.1"
-licenseName ZPL_2_0 = "Zope Public License 2.0"
-licenseName ZPL_2_1 = "Zope Public License 2.1"
-
--- | Whether the license is approved by Open Source Initiative (OSI).
---
--- See <https://opensource.org/licenses/alphabetical>.
-licenseIsOsiApproved :: LicenseId -> Bool
-licenseIsOsiApproved N_0BSD = True
-licenseIsOsiApproved AAL = True
-licenseIsOsiApproved AFL_1_1 = True
-licenseIsOsiApproved AFL_1_2 = True
-licenseIsOsiApproved AFL_2_0 = True
-licenseIsOsiApproved AFL_2_1 = True
-licenseIsOsiApproved AFL_3_0 = True
-licenseIsOsiApproved AGPL_3_0_only = True
-licenseIsOsiApproved AGPL_3_0_or_later = True
-licenseIsOsiApproved Apache_1_1 = True
-licenseIsOsiApproved Apache_2_0 = True
-licenseIsOsiApproved APL_1_0 = True
-licenseIsOsiApproved APSL_1_0 = True
-licenseIsOsiApproved APSL_1_1 = True
-licenseIsOsiApproved APSL_1_2 = True
-licenseIsOsiApproved APSL_2_0 = True
-licenseIsOsiApproved Artistic_1_0_cl8 = True
-licenseIsOsiApproved Artistic_1_0_Perl = True
-licenseIsOsiApproved Artistic_1_0 = True
-licenseIsOsiApproved Artistic_2_0 = True
-licenseIsOsiApproved BlueOak_1_0_0 = True
-licenseIsOsiApproved BSD_1_Clause = True
-licenseIsOsiApproved BSD_2_Clause_Patent = True
-licenseIsOsiApproved BSD_2_Clause = True
-licenseIsOsiApproved BSD_3_Clause_LBNL = True
-licenseIsOsiApproved BSD_3_Clause = True
-licenseIsOsiApproved BSL_1_0 = True
-licenseIsOsiApproved CAL_1_0_Combined_Work_Exception = True
-licenseIsOsiApproved CAL_1_0 = True
-licenseIsOsiApproved CATOSL_1_1 = True
-licenseIsOsiApproved CDDL_1_0 = True
-licenseIsOsiApproved CECILL_2_1 = True
-licenseIsOsiApproved CERN_OHL_P_2_0 = True
-licenseIsOsiApproved CERN_OHL_S_2_0 = True
-licenseIsOsiApproved CERN_OHL_W_2_0 = True
-licenseIsOsiApproved CNRI_Python = True
-licenseIsOsiApproved CPAL_1_0 = True
-licenseIsOsiApproved CPL_1_0 = True
-licenseIsOsiApproved CUA_OPL_1_0 = True
-licenseIsOsiApproved ECL_1_0 = True
-licenseIsOsiApproved ECL_2_0 = True
-licenseIsOsiApproved EFL_1_0 = True
-licenseIsOsiApproved EFL_2_0 = True
-licenseIsOsiApproved Entessa = True
-licenseIsOsiApproved EPL_1_0 = True
-licenseIsOsiApproved EPL_2_0 = True
-licenseIsOsiApproved EUDatagrid = True
-licenseIsOsiApproved EUPL_1_1 = True
-licenseIsOsiApproved EUPL_1_2 = True
-licenseIsOsiApproved Fair = True
-licenseIsOsiApproved Frameworx_1_0 = True
-licenseIsOsiApproved GPL_2_0_only = True
-licenseIsOsiApproved GPL_2_0_or_later = True
-licenseIsOsiApproved GPL_3_0_only = True
-licenseIsOsiApproved GPL_3_0_or_later = True
-licenseIsOsiApproved HPND = True
-licenseIsOsiApproved ICU = True
-licenseIsOsiApproved Intel = True
-licenseIsOsiApproved IPA = True
-licenseIsOsiApproved IPL_1_0 = True
-licenseIsOsiApproved ISC = True
-licenseIsOsiApproved Jam = True
-licenseIsOsiApproved LGPL_2_0_only = True
-licenseIsOsiApproved LGPL_2_0_or_later = True
-licenseIsOsiApproved LGPL_2_1_only = True
-licenseIsOsiApproved LGPL_2_1_or_later = True
-licenseIsOsiApproved LGPL_3_0_only = True
-licenseIsOsiApproved LGPL_3_0_or_later = True
-licenseIsOsiApproved LiLiQ_P_1_1 = True
-licenseIsOsiApproved LiLiQ_R_1_1 = True
-licenseIsOsiApproved LiLiQ_Rplus_1_1 = True
-licenseIsOsiApproved LPL_1_02 = True
-licenseIsOsiApproved LPL_1_0 = True
-licenseIsOsiApproved LPPL_1_3c = True
-licenseIsOsiApproved MirOS = True
-licenseIsOsiApproved MIT_0 = True
-licenseIsOsiApproved MIT_Modern_Variant = True
-licenseIsOsiApproved MIT = True
-licenseIsOsiApproved Motosoto = True
-licenseIsOsiApproved MPL_1_0 = True
-licenseIsOsiApproved MPL_1_1 = True
-licenseIsOsiApproved MPL_2_0_no_copyleft_exception = True
-licenseIsOsiApproved MPL_2_0 = True
-licenseIsOsiApproved MS_PL = True
-licenseIsOsiApproved MS_RL = True
-licenseIsOsiApproved MulanPSL_2_0 = True
-licenseIsOsiApproved Multics = True
-licenseIsOsiApproved NASA_1_3 = True
-licenseIsOsiApproved Naumen = True
-licenseIsOsiApproved NCSA = True
-licenseIsOsiApproved NGPL = True
-licenseIsOsiApproved Nokia = True
-licenseIsOsiApproved NPOSL_3_0 = True
-licenseIsOsiApproved NTP = True
-licenseIsOsiApproved OCLC_2_0 = True
-licenseIsOsiApproved OFL_1_1_no_RFN = True
-licenseIsOsiApproved OFL_1_1_RFN = True
-licenseIsOsiApproved OFL_1_1 = True
-licenseIsOsiApproved OGTSL = True
-licenseIsOsiApproved OLDAP_2_8 = True
-licenseIsOsiApproved OLFL_1_3 = True
-licenseIsOsiApproved OSET_PL_2_1 = True
-licenseIsOsiApproved OSL_1_0 = True
-licenseIsOsiApproved OSL_2_0 = True
-licenseIsOsiApproved OSL_2_1 = True
-licenseIsOsiApproved OSL_3_0 = True
-licenseIsOsiApproved PHP_3_01 = True
-licenseIsOsiApproved PHP_3_0 = True
-licenseIsOsiApproved PostgreSQL = True
-licenseIsOsiApproved Python_2_0 = True
-licenseIsOsiApproved QPL_1_0 = True
-licenseIsOsiApproved RPL_1_1 = True
-licenseIsOsiApproved RPL_1_5 = True
-licenseIsOsiApproved RPSL_1_0 = True
-licenseIsOsiApproved RSCPL = True
-licenseIsOsiApproved SimPL_2_0 = True
-licenseIsOsiApproved SISSL = True
-licenseIsOsiApproved Sleepycat = True
-licenseIsOsiApproved SPL_1_0 = True
-licenseIsOsiApproved UCL_1_0 = True
-licenseIsOsiApproved Unicode_3_0 = True
-licenseIsOsiApproved Unicode_DFS_2016 = True
-licenseIsOsiApproved Unlicense = True
-licenseIsOsiApproved UPL_1_0 = True
-licenseIsOsiApproved VSL_1_0 = True
-licenseIsOsiApproved W3C_20150513 = True
-licenseIsOsiApproved W3C = True
-licenseIsOsiApproved Watcom_1_0 = True
-licenseIsOsiApproved Xnet = True
-licenseIsOsiApproved Zlib = True
-licenseIsOsiApproved ZPL_2_0 = True
-licenseIsOsiApproved ZPL_2_1 = True
-licenseIsOsiApproved _ = False
-
--- | Whether the license is considered libre by Free Software Foundation (FSF).
---
--- See <https://www.gnu.org/licenses/license-list.en.html>
---
--- @since 3.4.0.0
---
-licenseIsFsfLibre :: LicenseId -> Bool
-licenseIsFsfLibre AFL_1_1 = True
-licenseIsFsfLibre AFL_1_2 = True
-licenseIsFsfLibre AFL_2_0 = True
-licenseIsFsfLibre AFL_2_1 = True
-licenseIsFsfLibre AFL_3_0 = True
-licenseIsFsfLibre AGPL_1_0 = True
-licenseIsFsfLibre AGPL_3_0_only = True
-licenseIsFsfLibre AGPL_3_0_or_later = True
-licenseIsFsfLibre Apache_1_0 = True
-licenseIsFsfLibre Apache_1_1 = True
-licenseIsFsfLibre Apache_2_0 = True
-licenseIsFsfLibre APSL_2_0 = True
-licenseIsFsfLibre Artistic_2_0 = True
-licenseIsFsfLibre BitTorrent_1_1 = True
-licenseIsFsfLibre BSD_2_Clause_FreeBSD = True
-licenseIsFsfLibre BSD_2_Clause = True
-licenseIsFsfLibre BSD_3_Clause_Clear = True
-licenseIsFsfLibre BSD_3_Clause = True
-licenseIsFsfLibre BSD_4_Clause = True
-licenseIsFsfLibre BSL_1_0 = True
-licenseIsFsfLibre CC_BY_4_0 = True
-licenseIsFsfLibre CC_BY_SA_4_0 = True
-licenseIsFsfLibre CC0_1_0 = True
-licenseIsFsfLibre CDDL_1_0 = True
-licenseIsFsfLibre CECILL_2_0 = True
-licenseIsFsfLibre CECILL_B = True
-licenseIsFsfLibre CECILL_C = True
-licenseIsFsfLibre ClArtistic = True
-licenseIsFsfLibre Condor_1_1 = True
-licenseIsFsfLibre CPAL_1_0 = True
-licenseIsFsfLibre CPL_1_0 = True
-licenseIsFsfLibre ECL_2_0 = True
-licenseIsFsfLibre EFL_2_0 = True
-licenseIsFsfLibre EPL_1_0 = True
-licenseIsFsfLibre EPL_2_0 = True
-licenseIsFsfLibre EUDatagrid = True
-licenseIsFsfLibre EUPL_1_1 = True
-licenseIsFsfLibre EUPL_1_2 = True
-licenseIsFsfLibre FSFAP = True
-licenseIsFsfLibre FTL = True
-licenseIsFsfLibre GFDL_1_1_only = True
-licenseIsFsfLibre GFDL_1_1_or_later = True
-licenseIsFsfLibre GFDL_1_2_only = True
-licenseIsFsfLibre GFDL_1_2_or_later = True
-licenseIsFsfLibre GFDL_1_3_only = True
-licenseIsFsfLibre GFDL_1_3_or_later = True
-licenseIsFsfLibre Gnuplot = True
-licenseIsFsfLibre GPL_2_0_only = True
-licenseIsFsfLibre GPL_2_0_or_later = True
-licenseIsFsfLibre GPL_3_0_only = True
-licenseIsFsfLibre GPL_3_0_or_later = True
-licenseIsFsfLibre HPND = True
-licenseIsFsfLibre IJG = True
-licenseIsFsfLibre IMatix = True
-licenseIsFsfLibre Imlib2 = True
-licenseIsFsfLibre Intel = True
-licenseIsFsfLibre IPA = True
-licenseIsFsfLibre IPL_1_0 = True
-licenseIsFsfLibre ISC = True
-licenseIsFsfLibre LGPL_2_1_only = True
-licenseIsFsfLibre LGPL_2_1_or_later = True
-licenseIsFsfLibre LGPL_3_0_only = True
-licenseIsFsfLibre LGPL_3_0_or_later = True
-licenseIsFsfLibre LPL_1_02 = True
-licenseIsFsfLibre LPPL_1_2 = True
-licenseIsFsfLibre LPPL_1_3a = True
-licenseIsFsfLibre MIT = True
-licenseIsFsfLibre MPL_1_1 = True
-licenseIsFsfLibre MPL_2_0 = True
-licenseIsFsfLibre MS_PL = True
-licenseIsFsfLibre MS_RL = True
-licenseIsFsfLibre NCSA = True
-licenseIsFsfLibre Nokia = True
-licenseIsFsfLibre NOSL = True
-licenseIsFsfLibre NPL_1_0 = True
-licenseIsFsfLibre NPL_1_1 = True
-licenseIsFsfLibre ODbL_1_0 = True
-licenseIsFsfLibre OFL_1_0 = True
-licenseIsFsfLibre OFL_1_1 = True
-licenseIsFsfLibre OLDAP_2_3 = True
-licenseIsFsfLibre OLDAP_2_7 = True
-licenseIsFsfLibre OpenSSL = True
-licenseIsFsfLibre OSL_1_0 = True
-licenseIsFsfLibre OSL_1_1 = True
-licenseIsFsfLibre OSL_2_0 = True
-licenseIsFsfLibre OSL_2_1 = True
-licenseIsFsfLibre OSL_3_0 = True
-licenseIsFsfLibre PHP_3_01 = True
-licenseIsFsfLibre Python_2_0 = True
-licenseIsFsfLibre QPL_1_0 = True
-licenseIsFsfLibre RPSL_1_0 = True
-licenseIsFsfLibre Ruby = True
-licenseIsFsfLibre SGI_B_2_0 = True
-licenseIsFsfLibre SISSL = True
-licenseIsFsfLibre Sleepycat = True
-licenseIsFsfLibre SMLNJ = True
-licenseIsFsfLibre SPL_1_0 = True
-licenseIsFsfLibre Unlicense = True
-licenseIsFsfLibre UPL_1_0 = True
-licenseIsFsfLibre Vim = True
-licenseIsFsfLibre W3C = True
-licenseIsFsfLibre WTFPL = True
-licenseIsFsfLibre X11 = True
-licenseIsFsfLibre XFree86_1_1 = True
-licenseIsFsfLibre Xinetd = True
-licenseIsFsfLibre YPL_1_1 = True
-licenseIsFsfLibre Zend_2_0 = True
-licenseIsFsfLibre Zimbra_1_3 = True
-licenseIsFsfLibre Zlib = True
-licenseIsFsfLibre ZPL_2_0 = True
-licenseIsFsfLibre ZPL_2_1 = True
-licenseIsFsfLibre _ = False
-
--------------------------------------------------------------------------------
--- Creation
--------------------------------------------------------------------------------
-
-licenseIdList :: LicenseListVersion -> [LicenseId]
-licenseIdList LicenseListVersion_3_0 =
-    [ AGPL_1_0
-    , BSD_2_Clause_FreeBSD
-    , BSD_2_Clause_NetBSD
-    , Bzip2_1_0_5
-    , Net_SNMP
-    ]
-    ++ bulkOfLicenses
-licenseIdList LicenseListVersion_3_2 =
-    [ AGPL_1_0_only
-    , AGPL_1_0_or_later
-    , BSD_2_Clause_FreeBSD
-    , BSD_2_Clause_NetBSD
-    , Bzip2_1_0_5
-    , Linux_OpenIB
-    , MIT_0
-    , Net_SNMP
-    , ODC_By_1_0
-    , TU_Berlin_1_0
-    , TU_Berlin_2_0
-    ]
-    ++ bulkOfLicenses
-licenseIdList LicenseListVersion_3_6 =
-    [ AGPL_1_0_only
-    , AGPL_1_0_or_later
-    , Blessing
-    , BlueOak_1_0_0
-    , BSD_2_Clause_FreeBSD
-    , BSD_2_Clause_NetBSD
-    , BSD_3_Clause_Open_MPI
-    , Bzip2_1_0_5
-    , CC_PDDC
-    , CERN_OHL_1_1
-    , CERN_OHL_1_2
-    , Copyleft_next_0_3_0
-    , Copyleft_next_0_3_1
-    , HPND_sell_variant
-    , JPNIC
-    , Libpng_2_0
-    , Linux_OpenIB
-    , MIT_0
-    , Net_SNMP
-    , ODC_By_1_0
-    , OGL_UK_1_0
-    , OGL_UK_2_0
-    , OGL_UK_3_0
-    , Parity_6_0_0
-    , Sendmail_8_23
-    , SHL_0_51
-    , SHL_0_5
-    , SSPL_1_0
-    , TAPR_OHL_1_0
-    , TU_Berlin_1_0
-    , TU_Berlin_2_0
-    ]
-    ++ bulkOfLicenses
-licenseIdList LicenseListVersion_3_9 =
-    [ AGPL_1_0_only
-    , AGPL_1_0_or_later
-    , Blessing
-    , BlueOak_1_0_0
-    , BSD_2_Clause_FreeBSD
-    , BSD_3_Clause_Open_MPI
-    , Bzip2_1_0_5
-    , CAL_1_0_Combined_Work_Exception
-    , CAL_1_0
-    , CC_PDDC
-    , CERN_OHL_1_1
-    , CERN_OHL_1_2
-    , CERN_OHL_P_2_0
-    , CERN_OHL_S_2_0
-    , CERN_OHL_W_2_0
-    , Copyleft_next_0_3_0
-    , Copyleft_next_0_3_1
-    , Etalab_2_0
-    , Hippocratic_2_1
-    , HPND_sell_variant
-    , JPNIC
-    , Libpng_2_0
-    , Libselinux_1_0
-    , Linux_OpenIB
-    , MIT_0
-    , MulanPSL_1_0
-    , MulanPSL_2_0
-    , NCGL_UK_2_0
-    , Net_SNMP
-    , NTP_0
-    , O_UDA_1_0
-    , ODC_By_1_0
-    , OFL_1_0_no_RFN
-    , OFL_1_0_RFN
-    , OFL_1_1_no_RFN
-    , OFL_1_1_RFN
-    , OGC_1_0
-    , OGL_Canada_2_0
-    , OGL_UK_1_0
-    , OGL_UK_2_0
-    , OGL_UK_3_0
-    , Parity_6_0_0
-    , Parity_7_0_0
-    , PolyForm_Noncommercial_1_0_0
-    , PolyForm_Small_Business_1_0_0
-    , PSF_2_0
-    , Sendmail_8_23
-    , SHL_0_51
-    , SHL_0_5
-    , SSH_OpenSSH
-    , SSH_short
-    , SSPL_1_0
-    , TAPR_OHL_1_0
-    , TU_Berlin_1_0
-    , TU_Berlin_2_0
-    , UCL_1_0
-    ]
-    ++ bulkOfLicenses
-licenseIdList LicenseListVersion_3_10 =
-    [ AGPL_1_0_only
-    , AGPL_1_0_or_later
-    , Blessing
-    , BlueOak_1_0_0
-    , BSD_2_Clause_Views
-    , BSD_3_Clause_Open_MPI
-    , Bzip2_1_0_5
-    , CAL_1_0_Combined_Work_Exception
-    , CAL_1_0
-    , CC_BY_3_0_AT
-    , CC_BY_NC_ND_3_0_IGO
-    , CC_BY_SA_3_0_AT
-    , CC_PDDC
-    , CERN_OHL_1_1
-    , CERN_OHL_1_2
-    , CERN_OHL_P_2_0
-    , CERN_OHL_S_2_0
-    , CERN_OHL_W_2_0
-    , Copyleft_next_0_3_0
-    , Copyleft_next_0_3_1
-    , EPICS
-    , Etalab_2_0
-    , GFDL_1_1_invariants_only
-    , GFDL_1_1_invariants_or_later
-    , GFDL_1_1_no_invariants_only
-    , GFDL_1_1_no_invariants_or_later
-    , GFDL_1_2_invariants_only
-    , GFDL_1_2_invariants_or_later
-    , GFDL_1_2_no_invariants_only
-    , GFDL_1_2_no_invariants_or_later
-    , GFDL_1_3_invariants_only
-    , GFDL_1_3_invariants_or_later
-    , GFDL_1_3_no_invariants_only
-    , GFDL_1_3_no_invariants_or_later
-    , GLWTPL
-    , Hippocratic_2_1
-    , HPND_sell_variant
-    , JPNIC
-    , Libpng_2_0
-    , Libselinux_1_0
-    , Linux_OpenIB
-    , MIT_0
-    , MulanPSL_1_0
-    , MulanPSL_2_0
-    , NCGL_UK_2_0
-    , Net_SNMP
-    , NIST_PD_fallback
-    , NIST_PD
-    , NTP_0
-    , O_UDA_1_0
-    , ODC_By_1_0
-    , OFL_1_0_no_RFN
-    , OFL_1_0_RFN
-    , OFL_1_1_no_RFN
-    , OFL_1_1_RFN
-    , OGC_1_0
-    , OGL_Canada_2_0
-    , OGL_UK_1_0
-    , OGL_UK_2_0
-    , OGL_UK_3_0
-    , Parity_6_0_0
-    , Parity_7_0_0
-    , PolyForm_Noncommercial_1_0_0
-    , PolyForm_Small_Business_1_0_0
-    , PSF_2_0
-    , Sendmail_8_23
-    , SHL_0_51
-    , SHL_0_5
-    , SSH_OpenSSH
-    , SSH_short
-    , SSPL_1_0
-    , TAPR_OHL_1_0
-    , TU_Berlin_1_0
-    , TU_Berlin_2_0
-    , UCL_1_0
-    ]
-    ++ bulkOfLicenses
-licenseIdList LicenseListVersion_3_16 =
-    [ AGPL_1_0_only
-    , AGPL_1_0_or_later
-    , ANTLR_PD_fallback
-    , App_s2p
-    , Blessing
-    , BlueOak_1_0_0
-    , BSD_2_Clause_Views
-    , BSD_3_Clause_Modification
-    , BSD_3_Clause_No_Military_License
-    , BSD_3_Clause_Open_MPI
-    , BSD_4_Clause_Shortened
-    , BUSL_1_1
-    , C_UDA_1_0
-    , CAL_1_0_Combined_Work_Exception
-    , CAL_1_0
-    , CC_BY_2_5_AU
-    , CC_BY_3_0_AT
-    , CC_BY_3_0_DE
-    , CC_BY_3_0_NL
-    , CC_BY_3_0_US
-    , CC_BY_NC_3_0_DE
-    , CC_BY_NC_ND_3_0_DE
-    , CC_BY_NC_ND_3_0_IGO
-    , CC_BY_NC_SA_2_0_FR
-    , CC_BY_NC_SA_2_0_UK
-    , CC_BY_NC_SA_3_0_DE
-    , CC_BY_NC_SA_3_0_IGO
-    , CC_BY_ND_3_0_DE
-    , CC_BY_SA_2_0_UK
-    , CC_BY_SA_2_1_JP
-    , CC_BY_SA_3_0_AT
-    , CC_BY_SA_3_0_DE
-    , CC_PDDC
-    , CDL_1_0
-    , CDLA_Permissive_2_0
-    , CERN_OHL_1_1
-    , CERN_OHL_1_2
-    , CERN_OHL_P_2_0
-    , CERN_OHL_S_2_0
-    , CERN_OHL_W_2_0
-    , COIL_1_0
-    , Community_Spec_1_0
-    , Copyleft_next_0_3_0
-    , Copyleft_next_0_3_1
-    , DL_DE_BY_2_0
-    , DRL_1_0
-    , Elastic_2_0
-    , EPICS
-    , Etalab_2_0
-    , FDK_AAC
-    , FreeBSD_DOC
-    , GD
-    , GFDL_1_1_invariants_only
-    , GFDL_1_1_invariants_or_later
-    , GFDL_1_1_no_invariants_only
-    , GFDL_1_1_no_invariants_or_later
-    , GFDL_1_2_invariants_only
-    , GFDL_1_2_invariants_or_later
-    , GFDL_1_2_no_invariants_only
-    , GFDL_1_2_no_invariants_or_later
-    , GFDL_1_3_invariants_only
-    , GFDL_1_3_invariants_or_later
-    , GFDL_1_3_no_invariants_only
-    , GFDL_1_3_no_invariants_or_later
-    , GLWTPL
-    , Hippocratic_2_1
-    , HPND_sell_variant
-    , HTMLTIDY
-    , Jam
-    , JPNIC
-    , Libpng_2_0
-    , Libselinux_1_0
-    , Linux_man_pages_copyleft
-    , Linux_OpenIB
-    , MIT_0
-    , MIT_Modern_Variant
-    , MIT_open_group
-    , MulanPSL_1_0
-    , MulanPSL_2_0
-    , NAIST_2003
-    , NCGL_UK_2_0
-    , Net_SNMP
-    , NIST_PD_fallback
-    , NIST_PD
-    , NLOD_2_0
-    , NTP_0
-    , O_UDA_1_0
-    , ODC_By_1_0
-    , OFL_1_0_no_RFN
-    , OFL_1_0_RFN
-    , OFL_1_1_no_RFN
-    , OFL_1_1_RFN
-    , OGC_1_0
-    , OGDL_Taiwan_1_0
-    , OGL_Canada_2_0
-    , OGL_UK_1_0
-    , OGL_UK_2_0
-    , OGL_UK_3_0
-    , OPUBL_1_0
-    , Parity_6_0_0
-    , Parity_7_0_0
-    , PolyForm_Noncommercial_1_0_0
-    , PolyForm_Small_Business_1_0_0
-    , PSF_2_0
-    , SchemeReport
-    , Sendmail_8_23
-    , SHL_0_51
-    , SHL_0_5
-    , SSH_OpenSSH
-    , SSH_short
-    , SSPL_1_0
-    , TAPR_OHL_1_0
-    , TU_Berlin_1_0
-    , TU_Berlin_2_0
-    , UCL_1_0
-    , X11_distribute_modifications_variant
-    ]
-    ++ bulkOfLicenses
-licenseIdList LicenseListVersion_3_23 =
-    [ AdaCore_doc
-    , Adobe_Display_PostScript
-    , Adobe_Utopia
-    , AGPL_1_0_only
-    , AGPL_1_0_or_later
-    , AML_glslang
-    , ANTLR_PD_fallback
-    , App_s2p
-    , Arphic_1999
-    , ASWF_Digital_Assets_1_0
-    , ASWF_Digital_Assets_1_1
-    , Baekmuk
-    , Bcrypt_Solar_Designer
-    , Bitstream_Charter
-    , Bitstream_Vera
-    , Blessing
-    , BlueOak_1_0_0
-    , Boehm_GC
-    , Brian_Gladman_2_Clause
-    , Brian_Gladman_3_Clause
-    , BSD_2_Clause_Darwin
-    , BSD_2_Clause_Views
-    , BSD_3_Clause_acpica
-    , BSD_3_Clause_flex
-    , BSD_3_Clause_HP
-    , BSD_3_Clause_Modification
-    , BSD_3_Clause_No_Military_License
-    , BSD_3_Clause_Open_MPI
-    , BSD_3_Clause_Sun
-    , BSD_4_Clause_Shortened
-    , BSD_4_3RENO
-    , BSD_4_3TAHOE
-    , BSD_Advertising_Acknowledgement
-    , BSD_Attribution_HPND_disclaimer
-    , BSD_Inferno_Nettverk
-    , BSD_Source_beginning_file
-    , BSD_Systemics_W3Works
-    , BSD_Systemics
-    , BUSL_1_1
-    , C_UDA_1_0
-    , CAL_1_0_Combined_Work_Exception
-    , CAL_1_0
-    , Caldera_no_preamble
-    , CC_BY_2_5_AU
-    , CC_BY_3_0_AT
-    , CC_BY_3_0_AU
-    , CC_BY_3_0_DE
-    , CC_BY_3_0_IGO
-    , CC_BY_3_0_NL
-    , CC_BY_3_0_US
-    , CC_BY_NC_3_0_DE
-    , CC_BY_NC_ND_3_0_DE
-    , CC_BY_NC_ND_3_0_IGO
-    , CC_BY_NC_SA_2_0_DE
-    , CC_BY_NC_SA_2_0_FR
-    , CC_BY_NC_SA_2_0_UK
-    , CC_BY_NC_SA_3_0_DE
-    , CC_BY_NC_SA_3_0_IGO
-    , CC_BY_ND_3_0_DE
-    , CC_BY_SA_2_0_UK
-    , CC_BY_SA_2_1_JP
-    , CC_BY_SA_3_0_AT
-    , CC_BY_SA_3_0_DE
-    , CC_BY_SA_3_0_IGO
-    , CC_PDDC
-    , CDL_1_0
-    , CDLA_Permissive_2_0
-    , CERN_OHL_1_1
-    , CERN_OHL_1_2
-    , CERN_OHL_P_2_0
-    , CERN_OHL_S_2_0
-    , CERN_OHL_W_2_0
-    , CFITSIO
-    , Check_cvs
-    , Checkmk
-    , Clips
-    , CMU_Mach_nodoc
-    , CMU_Mach
-    , COIL_1_0
-    , Community_Spec_1_0
-    , Copyleft_next_0_3_0
-    , Copyleft_next_0_3_1
-    , Cornell_Lossless_JPEG
-    , Cronyx
-    , DEC_3_Clause
-    , DL_DE_BY_2_0
-    , DL_DE_ZERO_2_0
-    , DRL_1_0
-    , DRL_1_1
-    , Dtoa
-    , Elastic_2_0
-    , EPICS
-    , Etalab_2_0
-    , FBM
-    , FDK_AAC
-    , Ferguson_Twofish
-    , FreeBSD_DOC
-    , FSFAP_no_warranty_disclaimer
-    , FSFULLRWD
-    , Furuseth
-    , Fwlw
-    , GCR_docs
-    , GD
-    , GFDL_1_1_invariants_only
-    , GFDL_1_1_invariants_or_later
-    , GFDL_1_1_no_invariants_only
-    , GFDL_1_1_no_invariants_or_later
-    , GFDL_1_2_invariants_only
-    , GFDL_1_2_invariants_or_later
-    , GFDL_1_2_no_invariants_only
-    , GFDL_1_2_no_invariants_or_later
-    , GFDL_1_3_invariants_only
-    , GFDL_1_3_invariants_or_later
-    , GFDL_1_3_no_invariants_only
-    , GFDL_1_3_no_invariants_or_later
-    , GLWTPL
-    , Graphics_Gems
-    , Gtkbook
-    , Hdparm
-    , Hippocratic_2_1
-    , HP_1986
-    , HP_1989
-    , HPND_DEC
-    , HPND_doc_sell
-    , HPND_doc
-    , HPND_export_US_modify
-    , HPND_export_US
-    , HPND_Fenneberg_Livingston
-    , HPND_INRIA_IMAG
-    , HPND_Kevlin_Henney
-    , HPND_Markus_Kuhn
-    , HPND_MIT_disclaimer
-    , HPND_Pbmplus
-    , HPND_sell_MIT_disclaimer_xserver
-    , HPND_sell_regexpr
-    , HPND_sell_variant_MIT_disclaimer
-    , HPND_sell_variant
-    , HPND_UC
-    , HTMLTIDY
-    , IEC_Code_Components_EULA
-    , IJG_short
-    , Inner_Net_2_0
-    , ISC_Veillard
-    , Jam
-    , JPL_image
-    , JPNIC
-    , Kastrup
-    , Kazlib
-    , Knuth_CTAN
-    , Latex2e_translated_notice
-    , Libpng_2_0
-    , Libselinux_1_0
-    , Libutil_David_Nugent
-    , Linux_man_pages_1_para
-    , Linux_man_pages_copyleft_2_para
-    , Linux_man_pages_copyleft_var
-    , Linux_man_pages_copyleft
-    , Linux_OpenIB
-    , LOOP
-    , LPD_document
-    , Lsof
-    , Lucida_Bitmap_Fonts
-    , LZMA_SDK_9_11_to_9_20
-    , LZMA_SDK_9_22
-    , Mackerras_3_Clause_acknowledgment
-    , Mackerras_3_Clause
-    , Magaz
-    , Mailprio
-    , Martin_Birgmeier
-    , McPhee_slideshow
-    , Metamail
-    , Minpack
-    , MIT_0
-    , MIT_Festival
-    , MIT_Modern_Variant
-    , MIT_open_group
-    , MIT_testregex
-    , MIT_Wu
-    , MMIXware
-    , MPEG_SSG
-    , Mpi_permissive
-    , Mplus
-    , MS_LPL
-    , MulanPSL_1_0
-    , MulanPSL_2_0
-    , NAIST_2003
-    , NCGL_UK_2_0
-    , Net_SNMP
-    , NICTA_1_0
-    , NIST_PD_fallback
-    , NIST_PD
-    , NIST_Software
-    , NLOD_2_0
-    , NTP_0
-    , O_UDA_1_0
-    , ODC_By_1_0
-    , OFFIS
-    , OFL_1_0_no_RFN
-    , OFL_1_0_RFN
-    , OFL_1_1_no_RFN
-    , OFL_1_1_RFN
-    , OGC_1_0
-    , OGDL_Taiwan_1_0
-    , OGL_Canada_2_0
-    , OGL_UK_1_0
-    , OGL_UK_2_0
-    , OGL_UK_3_0
-    , OLFL_1_3
-    , OpenPBS_2_3
-    , OpenSSL_standalone
-    , OpenVision
-    , OPL_UK_3_0
-    , OPUBL_1_0
-    , PADL
-    , Parity_6_0_0
-    , Parity_7_0_0
-    , Pixar
-    , Pnmstitch
-    , PolyForm_Noncommercial_1_0_0
-    , PolyForm_Small_Business_1_0_0
-    , PSF_2_0
-    , Python_2_0_1
-    , Python_ldap
-    , QPL_1_0_INRIA_2004
-    , Radvd
-    , SAX_PD_2_0
-    , SchemeReport
-    , Sendmail_8_23
-    , SGI_OpenGL
-    , SGP4
-    , SHL_0_51
-    , SHL_0_5
-    , SL
-    , Snprintf
-    , SoftSurfer
-    , Soundex
-    , Ssh_keyscan
-    , SSH_OpenSSH
-    , SSH_short
-    , SSLeay_standalone
-    , SSPL_1_0
-    , Sun_PPP
-    , SunPro
-    , Swrule
-    , Symlinks
-    , TAPR_OHL_1_0
-    , TermReadKey
-    , TGPPL_1_0
-    , TPDL
-    , TPL_1_0
-    , TTWL
-    , TTYP0
-    , TU_Berlin_1_0
-    , TU_Berlin_2_0
-    , UCAR
-    , UCL_1_0
-    , Ulem
-    , UMich_Merit
-    , Unicode_3_0
-    , UnixCrypt
-    , URT_RLE
-    , W3m
-    , Widget_Workshop
-    , X11_distribute_modifications_variant
-    , Xdebug_1_03
-    , Xfig
-    , Xkeyboard_config_Zinoviev
-    , Xlock
-    , Zeeff
-    ]
-    ++ bulkOfLicenses
-licenseIdList LicenseListVersion_3_25 =
-    [ N_3D_Slicer_1_0
-    , AdaCore_doc
-    , Adobe_Display_PostScript
-    , Adobe_Utopia
-    , AGPL_1_0_only
-    , AGPL_1_0_or_later
-    , AMD_newlib
-    , AML_glslang
-    , ANTLR_PD_fallback
-    , Any_OSI
-    , App_s2p
-    , Arphic_1999
-    , ASWF_Digital_Assets_1_0
-    , ASWF_Digital_Assets_1_1
-    , Baekmuk
-    , Bcrypt_Solar_Designer
-    , Bitstream_Charter
-    , Bitstream_Vera
-    , Blessing
-    , BlueOak_1_0_0
-    , Boehm_GC
-    , Brian_Gladman_2_Clause
-    , Brian_Gladman_3_Clause
-    , BSD_2_Clause_Darwin
-    , BSD_2_Clause_first_lines
-    , BSD_2_Clause_Views
-    , BSD_3_Clause_acpica
-    , BSD_3_Clause_flex
-    , BSD_3_Clause_HP
-    , BSD_3_Clause_Modification
-    , BSD_3_Clause_No_Military_License
-    , BSD_3_Clause_Open_MPI
-    , BSD_3_Clause_Sun
-    , BSD_4_Clause_Shortened
-    , BSD_4_3RENO
-    , BSD_4_3TAHOE
-    , BSD_Advertising_Acknowledgement
-    , BSD_Attribution_HPND_disclaimer
-    , BSD_Inferno_Nettverk
-    , BSD_Source_beginning_file
-    , BSD_Systemics_W3Works
-    , BSD_Systemics
-    , BUSL_1_1
-    , C_UDA_1_0
-    , CAL_1_0_Combined_Work_Exception
-    , CAL_1_0
-    , Caldera_no_preamble
-    , Catharon
-    , CC_BY_2_5_AU
-    , CC_BY_3_0_AT
-    , CC_BY_3_0_AU
-    , CC_BY_3_0_DE
-    , CC_BY_3_0_IGO
-    , CC_BY_3_0_NL
-    , CC_BY_3_0_US
-    , CC_BY_NC_3_0_DE
-    , CC_BY_NC_ND_3_0_DE
-    , CC_BY_NC_ND_3_0_IGO
-    , CC_BY_NC_SA_2_0_DE
-    , CC_BY_NC_SA_2_0_FR
-    , CC_BY_NC_SA_2_0_UK
-    , CC_BY_NC_SA_3_0_DE
-    , CC_BY_NC_SA_3_0_IGO
-    , CC_BY_ND_3_0_DE
-    , CC_BY_SA_2_0_UK
-    , CC_BY_SA_2_1_JP
-    , CC_BY_SA_3_0_AT
-    , CC_BY_SA_3_0_DE
-    , CC_BY_SA_3_0_IGO
-    , CC_PDDC
-    , CDL_1_0
-    , CDLA_Permissive_2_0
-    , CERN_OHL_1_1
-    , CERN_OHL_1_2
-    , CERN_OHL_P_2_0
-    , CERN_OHL_S_2_0
-    , CERN_OHL_W_2_0
-    , CFITSIO
-    , Check_cvs
-    , Checkmk
-    , Clips
-    , CMU_Mach_nodoc
-    , CMU_Mach
-    , COIL_1_0
-    , Community_Spec_1_0
-    , Copyleft_next_0_3_0
-    , Copyleft_next_0_3_1
-    , Cornell_Lossless_JPEG
-    , Cronyx
-    , Cve_tou
-    , DEC_3_Clause
-    , DL_DE_BY_2_0
-    , DL_DE_ZERO_2_0
-    , DocBook_Schema
-    , DocBook_XML
-    , DRL_1_0
-    , DRL_1_1
-    , Dtoa
-    , Elastic_2_0
-    , EPICS
-    , Etalab_2_0
-    , FBM
-    , FDK_AAC
-    , Ferguson_Twofish
-    , FreeBSD_DOC
-    , FSFAP_no_warranty_disclaimer
-    , FSFULLRWD
-    , Furuseth
-    , Fwlw
-    , GCR_docs
-    , GD
-    , GFDL_1_1_invariants_only
-    , GFDL_1_1_invariants_or_later
-    , GFDL_1_1_no_invariants_only
-    , GFDL_1_1_no_invariants_or_later
-    , GFDL_1_2_invariants_only
-    , GFDL_1_2_invariants_or_later
-    , GFDL_1_2_no_invariants_only
-    , GFDL_1_2_no_invariants_or_later
-    , GFDL_1_3_invariants_only
-    , GFDL_1_3_invariants_or_later
-    , GFDL_1_3_no_invariants_only
-    , GFDL_1_3_no_invariants_or_later
-    , GLWTPL
-    , Graphics_Gems
-    , Gtkbook
-    , Gutmann
-    , Hdparm
-    , HIDAPI
-    , Hippocratic_2_1
-    , HP_1986
-    , HP_1989
-    , HPND_DEC
-    , HPND_doc_sell
-    , HPND_doc
-    , HPND_export_US_acknowledgement
-    , HPND_export_US_modify
-    , HPND_export_US
-    , HPND_export2_US
-    , HPND_Fenneberg_Livingston
-    , HPND_INRIA_IMAG
-    , HPND_Intel
-    , HPND_Kevlin_Henney
-    , HPND_Markus_Kuhn
-    , HPND_merchantability_variant
-    , HPND_MIT_disclaimer
-    , HPND_Netrek
-    , HPND_Pbmplus
-    , HPND_sell_MIT_disclaimer_xserver
-    , HPND_sell_regexpr
-    , HPND_sell_variant_MIT_disclaimer_rev
-    , HPND_sell_variant_MIT_disclaimer
-    , HPND_sell_variant
-    , HPND_UC_export_US
-    , HPND_UC
-    , HTMLTIDY
-    , IEC_Code_Components_EULA
-    , IJG_short
-    , Inner_Net_2_0
-    , ISC_Veillard
-    , Jam
-    , JPL_image
-    , JPNIC
-    , Kastrup
-    , Kazlib
-    , Knuth_CTAN
-    , Latex2e_translated_notice
-    , Libpng_2_0
-    , Libselinux_1_0
-    , Libutil_David_Nugent
-    , Linux_man_pages_1_para
-    , Linux_man_pages_copyleft_2_para
-    , Linux_man_pages_copyleft_var
-    , Linux_man_pages_copyleft
-    , Linux_OpenIB
-    , LOOP
-    , LPD_document
-    , Lsof
-    , Lucida_Bitmap_Fonts
-    , LZMA_SDK_9_11_to_9_20
-    , LZMA_SDK_9_22
-    , Mackerras_3_Clause_acknowledgment
-    , Mackerras_3_Clause
-    , Magaz
-    , Mailprio
-    , Martin_Birgmeier
-    , McPhee_slideshow
-    , Metamail
-    , Minpack
-    , MIT_0
-    , MIT_Festival
-    , MIT_Khronos_old
-    , MIT_Modern_Variant
-    , MIT_open_group
-    , MIT_testregex
-    , MIT_Wu
-    , MMIXware
-    , MPEG_SSG
-    , Mpi_permissive
-    , Mplus
-    , MS_LPL
-    , MulanPSL_1_0
-    , MulanPSL_2_0
-    , NAIST_2003
-    , NCBI_PD
-    , NCGL_UK_2_0
-    , NCL
-    , NICTA_1_0
-    , NIST_PD_fallback
-    , NIST_PD
-    , NIST_Software
-    , NLOD_2_0
-    , NTP_0
-    , O_UDA_1_0
-    , OAR
-    , ODC_By_1_0
-    , OFFIS
-    , OFL_1_0_no_RFN
-    , OFL_1_0_RFN
-    , OFL_1_1_no_RFN
-    , OFL_1_1_RFN
-    , OGC_1_0
-    , OGDL_Taiwan_1_0
-    , OGL_Canada_2_0
-    , OGL_UK_1_0
-    , OGL_UK_2_0
-    , OGL_UK_3_0
-    , OLFL_1_3
-    , OpenPBS_2_3
-    , OpenSSL_standalone
-    , OpenVision
-    , OPL_UK_3_0
-    , OPUBL_1_0
-    , PADL
-    , Parity_6_0_0
-    , Parity_7_0_0
-    , Pixar
-    , Pkgconf
-    , Pnmstitch
-    , PolyForm_Noncommercial_1_0_0
-    , PolyForm_Small_Business_1_0_0
-    , PPL
-    , PSF_2_0
-    , Python_2_0_1
-    , Python_ldap
-    , QPL_1_0_INRIA_2004
-    , Radvd
-    , Ruby_pty
-    , SAX_PD_2_0
-    , SchemeReport
-    , Sendmail_8_23
-    , SGI_OpenGL
-    , SGP4
-    , SHL_0_51
-    , SHL_0_5
-    , SL
-    , Snprintf
-    , SoftSurfer
-    , Soundex
-    , Ssh_keyscan
-    , SSH_OpenSSH
-    , SSH_short
-    , SSLeay_standalone
-    , SSPL_1_0
-    , Sun_PPP_2000
-    , Sun_PPP
-    , SunPro
-    , Swrule
-    , Symlinks
-    , TAPR_OHL_1_0
-    , TermReadKey
-    , TGPPL_1_0
-    , Threeparttable
-    , TPDL
-    , TPL_1_0
-    , TTWL
-    , TTYP0
-    , TU_Berlin_1_0
-    , TU_Berlin_2_0
-    , Ubuntu_font_1_0
-    , UCAR
-    , UCL_1_0
-    , Ulem
-    , UMich_Merit
-    , Unicode_3_0
-    , UnixCrypt
-    , URT_RLE
-    , W3m
-    , Widget_Workshop
-    , X11_distribute_modifications_variant
-    , X11_swapped
-    , Xdebug_1_03
-    , Xfig
-    , Xkeyboard_config_Zinoviev
-    , Xlock
-    , Xzoom
-    , Zeeff
-    ]
-    ++ bulkOfLicenses
-licenseIdList LicenseListVersion_3_26 =
-    [ N_3D_Slicer_1_0
-    , AdaCore_doc
-    , Adobe_Display_PostScript
-    , Adobe_Utopia
-    , AGPL_1_0_only
-    , AGPL_1_0_or_later
-    , AMD_newlib
-    , AML_glslang
-    , ANTLR_PD_fallback
-    , Any_OSI_perl_modules
-    , Any_OSI
-    , App_s2p
-    , Arphic_1999
-    , Artistic_dist
-    , Aspell_RU
-    , ASWF_Digital_Assets_1_0
-    , ASWF_Digital_Assets_1_1
-    , Baekmuk
-    , Bcrypt_Solar_Designer
-    , Bitstream_Charter
-    , Bitstream_Vera
-    , Blessing
-    , BlueOak_1_0_0
-    , Boehm_GC_without_fee
-    , Boehm_GC
-    , Brian_Gladman_2_Clause
-    , Brian_Gladman_3_Clause
-    , BSD_2_Clause_Darwin
-    , BSD_2_Clause_first_lines
-    , BSD_2_Clause_pkgconf_disclaimer
-    , BSD_2_Clause_Views
-    , BSD_3_Clause_acpica
-    , BSD_3_Clause_flex
-    , BSD_3_Clause_HP
-    , BSD_3_Clause_Modification
-    , BSD_3_Clause_No_Military_License
-    , BSD_3_Clause_Open_MPI
-    , BSD_3_Clause_Sun
-    , BSD_4_Clause_Shortened
-    , BSD_4_3RENO
-    , BSD_4_3TAHOE
-    , BSD_Advertising_Acknowledgement
-    , BSD_Attribution_HPND_disclaimer
-    , BSD_Inferno_Nettverk
-    , BSD_Source_beginning_file
-    , BSD_Systemics_W3Works
-    , BSD_Systemics
-    , BUSL_1_1
-    , C_UDA_1_0
-    , CAL_1_0_Combined_Work_Exception
-    , CAL_1_0
-    , Caldera_no_preamble
-    , Catharon
-    , CC_BY_2_5_AU
-    , CC_BY_3_0_AT
-    , CC_BY_3_0_AU
-    , CC_BY_3_0_DE
-    , CC_BY_3_0_IGO
-    , CC_BY_3_0_NL
-    , CC_BY_3_0_US
-    , CC_BY_NC_3_0_DE
-    , CC_BY_NC_ND_3_0_DE
-    , CC_BY_NC_ND_3_0_IGO
-    , CC_BY_NC_SA_2_0_DE
-    , CC_BY_NC_SA_2_0_FR
-    , CC_BY_NC_SA_2_0_UK
-    , CC_BY_NC_SA_3_0_DE
-    , CC_BY_NC_SA_3_0_IGO
-    , CC_BY_ND_3_0_DE
-    , CC_BY_SA_2_0_UK
-    , CC_BY_SA_2_1_JP
-    , CC_BY_SA_3_0_AT
-    , CC_BY_SA_3_0_DE
-    , CC_BY_SA_3_0_IGO
-    , CC_PDDC
-    , CC_PDM_1_0
-    , CC_SA_1_0
-    , CDL_1_0
-    , CDLA_Permissive_2_0
-    , CERN_OHL_1_1
-    , CERN_OHL_1_2
-    , CERN_OHL_P_2_0
-    , CERN_OHL_S_2_0
-    , CERN_OHL_W_2_0
-    , CFITSIO
-    , Check_cvs
-    , Checkmk
-    , Clips
-    , CMU_Mach_nodoc
-    , CMU_Mach
-    , COIL_1_0
-    , Community_Spec_1_0
-    , Copyleft_next_0_3_0
-    , Copyleft_next_0_3_1
-    , Cornell_Lossless_JPEG
-    , Cronyx
-    , CryptoSwift
-    , Cve_tou
-    , DEC_3_Clause
-    , DL_DE_BY_2_0
-    , DL_DE_ZERO_2_0
-    , DocBook_DTD
-    , DocBook_Schema
-    , DocBook_Stylesheet
-    , DocBook_XML
-    , DRL_1_0
-    , DRL_1_1
-    , Dtoa
-    , Elastic_2_0
-    , EPICS
-    , Etalab_2_0
-    , FBM
-    , FDK_AAC
-    , Ferguson_Twofish
-    , FreeBSD_DOC
-    , FSFAP_no_warranty_disclaimer
-    , FSFULLRSD
-    , FSFULLRWD
-    , FSL_1_1_ALv2
-    , FSL_1_1_MIT
-    , Furuseth
-    , Fwlw
-    , Game_Programming_Gems
-    , GCR_docs
-    , GD
-    , Generic_xts
-    , GFDL_1_1_invariants_only
-    , GFDL_1_1_invariants_or_later
-    , GFDL_1_1_no_invariants_only
-    , GFDL_1_1_no_invariants_or_later
-    , GFDL_1_2_invariants_only
-    , GFDL_1_2_invariants_or_later
-    , GFDL_1_2_no_invariants_only
-    , GFDL_1_2_no_invariants_or_later
-    , GFDL_1_3_invariants_only
-    , GFDL_1_3_invariants_or_later
-    , GFDL_1_3_no_invariants_only
-    , GFDL_1_3_no_invariants_or_later
-    , GLWTPL
-    , Graphics_Gems
-    , Gtkbook
-    , Gutmann
-    , HDF5
-    , Hdparm
-    , HIDAPI
-    , Hippocratic_2_1
-    , HP_1986
-    , HP_1989
-    , HPND_DEC
-    , HPND_doc_sell
-    , HPND_doc
-    , HPND_export_US_acknowledgement
-    , HPND_export_US_modify
-    , HPND_export_US
-    , HPND_export2_US
-    , HPND_Fenneberg_Livingston
-    , HPND_INRIA_IMAG
-    , HPND_Intel
-    , HPND_Kevlin_Henney
-    , HPND_Markus_Kuhn
-    , HPND_merchantability_variant
-    , HPND_MIT_disclaimer
-    , HPND_Netrek
-    , HPND_Pbmplus
-    , HPND_sell_MIT_disclaimer_xserver
-    , HPND_sell_regexpr
-    , HPND_sell_variant_MIT_disclaimer_rev
-    , HPND_sell_variant_MIT_disclaimer
-    , HPND_sell_variant
-    , HPND_UC_export_US
-    , HPND_UC
-    , HTMLTIDY
-    , IEC_Code_Components_EULA
-    , IJG_short
-    , Inner_Net_2_0
-    , InnoSetup
-    , ISC_Veillard
-    , Jam
-    , Jove
-    , JPL_image
-    , JPNIC
-    , Kastrup
-    , Kazlib
-    , Knuth_CTAN
-    , Latex2e_translated_notice
-    , Libpng_1_6_35
-    , Libpng_2_0
-    , Libselinux_1_0
-    , Libutil_David_Nugent
-    , Linux_man_pages_1_para
-    , Linux_man_pages_copyleft_2_para
-    , Linux_man_pages_copyleft_var
-    , Linux_man_pages_copyleft
-    , Linux_OpenIB
-    , LOOP
-    , LPD_document
-    , Lsof
-    , Lucida_Bitmap_Fonts
-    , LZMA_SDK_9_11_to_9_20
-    , LZMA_SDK_9_22
-    , Mackerras_3_Clause_acknowledgment
-    , Mackerras_3_Clause
-    , Magaz
-    , Mailprio
-    , Man2html
-    , Martin_Birgmeier
-    , McPhee_slideshow
-    , Metamail
-    , Minpack
-    , MIPS
-    , MIT_0
-    , MIT_Click
-    , MIT_Festival
-    , MIT_Khronos_old
-    , MIT_Modern_Variant
-    , MIT_open_group
-    , MIT_testregex
-    , MIT_Wu
-    , MMIXware
-    , MPEG_SSG
-    , Mpi_permissive
-    , Mplus
-    , MS_LPL
-    , MulanPSL_1_0
-    , MulanPSL_2_0
-    , NAIST_2003
-    , NCBI_PD
-    , NCGL_UK_2_0
-    , NCL
-    , Ngrep
-    , NICTA_1_0
-    , NIST_PD_fallback
-    , NIST_PD
-    , NIST_Software
-    , NLOD_2_0
-    , NTIA_PD
-    , NTP_0
-    , O_UDA_1_0
-    , OAR
-    , ODC_By_1_0
-    , OFFIS
-    , OFL_1_0_no_RFN
-    , OFL_1_0_RFN
-    , OFL_1_1_no_RFN
-    , OFL_1_1_RFN
-    , OGC_1_0
-    , OGDL_Taiwan_1_0
-    , OGL_Canada_2_0
-    , OGL_UK_1_0
-    , OGL_UK_2_0
-    , OGL_UK_3_0
-    , OLFL_1_3
-    , OpenPBS_2_3
-    , OpenSSL_standalone
-    , OpenVision
-    , OPL_UK_3_0
-    , OPUBL_1_0
-    , PADL
-    , Parity_6_0_0
-    , Parity_7_0_0
-    , Pixar
-    , Pkgconf
-    , Pnmstitch
-    , PolyForm_Noncommercial_1_0_0
-    , PolyForm_Small_Business_1_0_0
-    , PPL
-    , PSF_2_0
-    , Python_2_0_1
-    , Python_ldap
-    , QPL_1_0_INRIA_2004
-    , Radvd
-    , Ruby_pty
-    , SAX_PD_2_0
-    , SchemeReport
-    , Sendmail_8_23
-    , Sendmail_Open_Source_1_1
-    , SGI_OpenGL
-    , SGP4
-    , SHL_0_51
-    , SHL_0_5
-    , SL
-    , SMAIL_GPL
-    , Snprintf
-    , SOFA
-    , SoftSurfer
-    , Soundex
-    , Ssh_keyscan
-    , SSH_OpenSSH
-    , SSH_short
-    , SSLeay_standalone
-    , SSPL_1_0
-    , Sun_PPP_2000
-    , Sun_PPP
-    , SunPro
-    , Swrule
-    , Symlinks
-    , TAPR_OHL_1_0
-    , TermReadKey
-    , TGPPL_1_0
-    , ThirdEye
-    , Threeparttable
-    , TPDL
-    , TPL_1_0
-    , TrustedQSL
-    , TTWL
-    , TTYP0
-    , TU_Berlin_1_0
-    , TU_Berlin_2_0
-    , Ubuntu_font_1_0
-    , UCAR
-    , UCL_1_0
-    , Ulem
-    , UMich_Merit
-    , Unicode_3_0
-    , UnixCrypt
-    , Unlicense_libtelnet
-    , Unlicense_libwhirlpool
-    , URT_RLE
-    , W3m
-    , Widget_Workshop
-    , Wwl
-    , X11_distribute_modifications_variant
-    , X11_swapped
-    , Xdebug_1_03
-    , Xfig
-    , Xkeyboard_config_Zinoviev
-    , Xlock
-    , Xzoom
-    , Zeeff
-    ]
-    ++ bulkOfLicenses
-
--- | Create a 'LicenseId' from a 'String'.
-mkLicenseId :: LicenseListVersion -> String -> Maybe LicenseId
-mkLicenseId LicenseListVersion_3_0  s = Map.lookup s stringLookup_3_0
-mkLicenseId LicenseListVersion_3_2  s = Map.lookup s stringLookup_3_2
-mkLicenseId LicenseListVersion_3_6  s = Map.lookup s stringLookup_3_6
-mkLicenseId LicenseListVersion_3_9  s = Map.lookup s stringLookup_3_9
-mkLicenseId LicenseListVersion_3_10 s = Map.lookup s stringLookup_3_10
-mkLicenseId LicenseListVersion_3_16 s = Map.lookup s stringLookup_3_16
-mkLicenseId LicenseListVersion_3_23 s = Map.lookup s stringLookup_3_23
-mkLicenseId LicenseListVersion_3_25 s = Map.lookup s stringLookup_3_25
-mkLicenseId LicenseListVersion_3_26 s = Map.lookup s stringLookup_3_26
-
-stringLookup_3_0 :: Map String LicenseId
-stringLookup_3_0 = Map.fromList $ map (\i -> (licenseId i, i)) $
-    licenseIdList LicenseListVersion_3_0
-
-stringLookup_3_2 :: Map String LicenseId
-stringLookup_3_2 = Map.fromList $ map (\i -> (licenseId i, i)) $
-    licenseIdList LicenseListVersion_3_2
-
-stringLookup_3_6 :: Map String LicenseId
-stringLookup_3_6 = Map.fromList $ map (\i -> (licenseId i, i)) $
-    licenseIdList LicenseListVersion_3_6
-
-stringLookup_3_9 :: Map String LicenseId
-stringLookup_3_9 = Map.fromList $ map (\i -> (licenseId i, i)) $
-    licenseIdList LicenseListVersion_3_9
-
-stringLookup_3_10 :: Map String LicenseId
-stringLookup_3_10 = Map.fromList $ map (\i -> (licenseId i, i)) $
-    licenseIdList LicenseListVersion_3_10
-
-stringLookup_3_16 :: Map String LicenseId
-stringLookup_3_16 = Map.fromList $ map (\i -> (licenseId i, i)) $
-    licenseIdList LicenseListVersion_3_16
-
-stringLookup_3_23 :: Map String LicenseId
-stringLookup_3_23 = Map.fromList $ map (\i -> (licenseId i, i)) $
-    licenseIdList LicenseListVersion_3_23
-
-stringLookup_3_25 :: Map String LicenseId
-stringLookup_3_25 = Map.fromList $ map (\i -> (licenseId i, i)) $
-    licenseIdList LicenseListVersion_3_25
-
-stringLookup_3_26 :: Map String LicenseId
-stringLookup_3_26 = Map.fromList $ map (\i -> (licenseId i, i)) $
-    licenseIdList LicenseListVersion_3_26
+-- | SPDX License identifiers list v3.28
+data LicenseId
+    = N_0BSD -- ^ @0BSD@, BSD Zero Clause License
+    | N_3D_Slicer_1_0 -- ^ @3D-Slicer-1.0@, 3D Slicer License v1.0, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | AAL -- ^ @AAL@, Attribution Assurance License
+    | Abstyles -- ^ @Abstyles@, Abstyles License
+    | AdaCore_doc -- ^ @AdaCore-doc@, AdaCore Doc License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Adobe_2006 -- ^ @Adobe-2006@, Adobe Systems Incorporated Source Code License Agreement
+    | Adobe_Display_PostScript -- ^ @Adobe-Display-PostScript@, Adobe Display PostScript License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Adobe_Glyph -- ^ @Adobe-Glyph@, Adobe Glyph List License
+    | Adobe_Utopia -- ^ @Adobe-Utopia@, Adobe Utopia Font License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | ADSL -- ^ @ADSL@, Amazon Digital Services License
+    | Advanced_Cryptics_Dictionary -- ^ @Advanced-Cryptics-Dictionary@, Advanced Cryptics Dictionary License, SPDX License List 3.28
+    | AFL_1_1 -- ^ @AFL-1.1@, Academic Free License v1.1
+    | AFL_1_2 -- ^ @AFL-1.2@, Academic Free License v1.2
+    | AFL_2_0 -- ^ @AFL-2.0@, Academic Free License v2.0
+    | AFL_2_1 -- ^ @AFL-2.1@, Academic Free License v2.1
+    | AFL_3_0 -- ^ @AFL-3.0@, Academic Free License v3.0
+    | Afmparse -- ^ @Afmparse@, Afmparse License
+    | AGPL_1_0 -- ^ @AGPL-1.0@, Affero General Public License v1.0, SPDX License List 3.0
+    | AGPL_1_0_only -- ^ @AGPL-1.0-only@, Affero General Public License v1.0 only, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | AGPL_1_0_or_later -- ^ @AGPL-1.0-or-later@, Affero General Public License v1.0 or later, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | AGPL_3_0_only -- ^ @AGPL-3.0-only@, GNU Affero General Public License v3.0 only
+    | AGPL_3_0_or_later -- ^ @AGPL-3.0-or-later@, GNU Affero General Public License v3.0 or later
+    | Aladdin -- ^ @Aladdin@, Aladdin Free Public License
+    | ALGLIB_Documentation -- ^ @ALGLIB-Documentation@, ALGLIB Documentation License, SPDX License List 3.28
+    | AMD_newlib -- ^ @AMD-newlib@, AMD newlib License, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | AMDPLPA -- ^ @AMDPLPA@, AMD's plpa_map.c License
+    | AML_glslang -- ^ @AML-glslang@, AML glslang variant License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | AML -- ^ @AML@, Apple MIT License
+    | AMPAS -- ^ @AMPAS@, Academy of Motion Picture Arts and Sciences BSD
+    | ANTLR_PD_fallback -- ^ @ANTLR-PD-fallback@, ANTLR Software Rights Notice with license fallback, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | ANTLR_PD -- ^ @ANTLR-PD@, ANTLR Software Rights Notice
+    | Any_OSI_perl_modules -- ^ @any-OSI-perl-modules@, Any OSI License - Perl Modules, SPDX License List 3.26, SPDX License List 3.28
+    | Any_OSI -- ^ @any-OSI@, Any OSI License, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Apache_1_0 -- ^ @Apache-1.0@, Apache License 1.0
+    | Apache_1_1 -- ^ @Apache-1.1@, Apache License 1.1
+    | Apache_2_0 -- ^ @Apache-2.0@, Apache License 2.0
+    | APAFML -- ^ @APAFML@, Adobe Postscript AFM License
+    | APL_1_0 -- ^ @APL-1.0@, Adaptive Public License 1.0
+    | App_s2p -- ^ @App-s2p@, App::s2p License, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | APSL_1_0 -- ^ @APSL-1.0@, Apple Public Source License 1.0
+    | APSL_1_1 -- ^ @APSL-1.1@, Apple Public Source License 1.1
+    | APSL_1_2 -- ^ @APSL-1.2@, Apple Public Source License 1.2
+    | APSL_2_0 -- ^ @APSL-2.0@, Apple Public Source License 2.0
+    | Arphic_1999 -- ^ @Arphic-1999@, Arphic Public License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Artistic_1_0_cl8 -- ^ @Artistic-1.0-cl8@, Artistic License 1.0 w/clause 8
+    | Artistic_1_0_Perl -- ^ @Artistic-1.0-Perl@, Artistic License 1.0 (Perl)
+    | Artistic_1_0 -- ^ @Artistic-1.0@, Artistic License 1.0
+    | Artistic_2_0 -- ^ @Artistic-2.0@, Artistic License 2.0
+    | Artistic_dist -- ^ @Artistic-dist@, Artistic License 1.0 (dist), SPDX License List 3.26, SPDX License List 3.28
+    | Aspell_RU -- ^ @Aspell-RU@, Aspell Russian License, SPDX License List 3.26, SPDX License List 3.28
+    | ASWF_Digital_Assets_1_0 -- ^ @ASWF-Digital-Assets-1.0@, ASWF Digital Assets License version 1.0, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | ASWF_Digital_Assets_1_1 -- ^ @ASWF-Digital-Assets-1.1@, ASWF Digital Assets License 1.1, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Baekmuk -- ^ @Baekmuk@, Baekmuk License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Bahyph -- ^ @Bahyph@, Bahyph License
+    | Barr -- ^ @Barr@, Barr License
+    | Bcrypt_Solar_Designer -- ^ @bcrypt-Solar-Designer@, bcrypt Solar Designer License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Beerware -- ^ @Beerware@, Beerware License
+    | Bitstream_Charter -- ^ @Bitstream-Charter@, Bitstream Charter Font License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Bitstream_Vera -- ^ @Bitstream-Vera@, Bitstream Vera Font License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | BitTorrent_1_0 -- ^ @BitTorrent-1.0@, BitTorrent Open Source License v1.0
+    | BitTorrent_1_1 -- ^ @BitTorrent-1.1@, BitTorrent Open Source License v1.1
+    | Blessing -- ^ @blessing@, SQLite Blessing, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | BlueOak_1_0_0 -- ^ @BlueOak-1.0.0@, Blue Oak Model License 1.0.0, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Boehm_GC_without_fee -- ^ @Boehm-GC-without-fee@, Boehm-Demers-Weiser GC License (without fee), SPDX License List 3.26, SPDX License List 3.28
+    | Boehm_GC -- ^ @Boehm-GC@, Boehm-Demers-Weiser GC License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | BOLA_1_1 -- ^ @BOLA-1.1@, Buena Onda License Agreement v1.1, SPDX License List 3.28
+    | Borceux -- ^ @Borceux@, Borceux license
+    | Brian_Gladman_2_Clause -- ^ @Brian-Gladman-2-Clause@, Brian Gladman 2-Clause License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Brian_Gladman_3_Clause -- ^ @Brian-Gladman-3-Clause@, Brian Gladman 3-Clause License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | BSD_1_Clause -- ^ @BSD-1-Clause@, BSD 1-Clause License
+    | BSD_2_Clause_FreeBSD -- ^ @BSD-2-Clause-FreeBSD@, BSD 2-Clause FreeBSD License, SPDX License List 3.0, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9
+    | BSD_2_Clause_NetBSD -- ^ @BSD-2-Clause-NetBSD@, BSD 2-Clause NetBSD License, SPDX License List 3.0, SPDX License List 3.2, SPDX License List 3.6
+    | BSD_2_Clause_Darwin -- ^ @BSD-2-Clause-Darwin@, BSD 2-Clause - Ian Darwin variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | BSD_2_Clause_first_lines -- ^ @BSD-2-Clause-first-lines@, BSD 2-Clause - first lines requirement, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | BSD_2_Clause_Patent -- ^ @BSD-2-Clause-Patent@, BSD-2-Clause Plus Patent License
+    | BSD_2_Clause_pkgconf_disclaimer -- ^ @BSD-2-Clause-pkgconf-disclaimer@, BSD 2-Clause pkgconf disclaimer variant, SPDX License List 3.26, SPDX License List 3.28
+    | BSD_2_Clause_Views -- ^ @BSD-2-Clause-Views@, BSD 2-Clause with views sentence, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | BSD_2_Clause -- ^ @BSD-2-Clause@, BSD 2-Clause "Simplified" License
+    | BSD_3_Clause_acpica -- ^ @BSD-3-Clause-acpica@, BSD 3-Clause acpica variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | BSD_3_Clause_Attribution -- ^ @BSD-3-Clause-Attribution@, BSD with attribution
+    | BSD_3_Clause_Clear -- ^ @BSD-3-Clause-Clear@, BSD 3-Clause Clear License
+    | BSD_3_Clause_flex -- ^ @BSD-3-Clause-flex@, BSD 3-Clause Flex variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | BSD_3_Clause_HP -- ^ @BSD-3-Clause-HP@, Hewlett-Packard BSD variant license, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | BSD_3_Clause_LBNL -- ^ @BSD-3-Clause-LBNL@, Lawrence Berkeley National Labs BSD variant license
+    | BSD_3_Clause_Modification -- ^ @BSD-3-Clause-Modification@, BSD 3-Clause Modification, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | BSD_3_Clause_No_Military_License -- ^ @BSD-3-Clause-No-Military-License@, BSD 3-Clause No Military License, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | BSD_3_Clause_No_Nuclear_License_2014 -- ^ @BSD-3-Clause-No-Nuclear-License-2014@, BSD 3-Clause No Nuclear License 2014
+    | BSD_3_Clause_No_Nuclear_License -- ^ @BSD-3-Clause-No-Nuclear-License@, BSD 3-Clause No Nuclear License
+    | BSD_3_Clause_No_Nuclear_Warranty -- ^ @BSD-3-Clause-No-Nuclear-Warranty@, BSD 3-Clause No Nuclear Warranty
+    | BSD_3_Clause_Open_MPI -- ^ @BSD-3-Clause-Open-MPI@, BSD 3-Clause Open MPI variant, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | BSD_3_Clause_Sun -- ^ @BSD-3-Clause-Sun@, BSD 3-Clause Sun Microsystems, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | BSD_3_Clause_Tso -- ^ @BSD-3-Clause-Tso@, BSD 3-Clause Tso variant, SPDX License List 3.28
+    | BSD_3_Clause -- ^ @BSD-3-Clause@, BSD 3-Clause "New" or "Revised" License
+    | BSD_4_Clause_Shortened -- ^ @BSD-4-Clause-Shortened@, BSD 4 Clause Shortened, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | BSD_4_Clause_UC -- ^ @BSD-4-Clause-UC@, BSD-4-Clause (University of California-Specific)
+    | BSD_4_Clause -- ^ @BSD-4-Clause@, BSD 4-Clause "Original" or "Old" License
+    | BSD_4_3RENO -- ^ @BSD-4.3RENO@, BSD 4.3 RENO License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | BSD_4_3TAHOE -- ^ @BSD-4.3TAHOE@, BSD 4.3 TAHOE License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | BSD_Advertising_Acknowledgement -- ^ @BSD-Advertising-Acknowledgement@, BSD Advertising Acknowledgement License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | BSD_Attribution_HPND_disclaimer -- ^ @BSD-Attribution-HPND-disclaimer@, BSD with Attribution and HPND disclaimer, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | BSD_Inferno_Nettverk -- ^ @BSD-Inferno-Nettverk@, BSD-Inferno-Nettverk, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | BSD_Mark_Modifications -- ^ @BSD-Mark-Modifications@, BSD Mark Modifications License, SPDX License List 3.28
+    | BSD_Protection -- ^ @BSD-Protection@, BSD Protection License
+    | BSD_Source_beginning_file -- ^ @BSD-Source-beginning-file@, BSD Source Code Attribution - beginning of file variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | BSD_Source_Code -- ^ @BSD-Source-Code@, BSD Source Code Attribution
+    | BSD_Systemics_W3Works -- ^ @BSD-Systemics-W3Works@, Systemics W3Works BSD variant license, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | BSD_Systemics -- ^ @BSD-Systemics@, Systemics BSD variant license, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | BSL_1_0 -- ^ @BSL-1.0@, Boost Software License 1.0
+    | Bzip2_1_0_5 -- ^ @bzip2-1.0.5@, bzip2 and libbzip2 License v1.0.5, SPDX License List 3.0, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10
+    | Buddy -- ^ @Buddy@, Buddy License, SPDX License List 3.28
+    | BUSL_1_1 -- ^ @BUSL-1.1@, Business Source License 1.1, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Bzip2_1_0_6 -- ^ @bzip2-1.0.6@, bzip2 and libbzip2 License v1.0.6
+    | C_UDA_1_0 -- ^ @C-UDA-1.0@, Computational Use of Data Agreement v1.0, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | CAL_1_0_Combined_Work_Exception -- ^ @CAL-1.0-Combined-Work-Exception@, Cryptographic Autonomy License 1.0 (Combined Work Exception), SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | CAL_1_0 -- ^ @CAL-1.0@, Cryptographic Autonomy License 1.0, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Caldera_no_preamble -- ^ @Caldera-no-preamble@, Caldera License (without preamble), SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Caldera -- ^ @Caldera@, Caldera License
+    | CAPEC_tou -- ^ @CAPEC-tou@, Common Attack    Pattern Enumeration and Classification License, SPDX License List 3.28
+    | Catharon -- ^ @Catharon@, Catharon License, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | CATOSL_1_1 -- ^ @CATOSL-1.1@, Computer Associates Trusted Open Source License 1.1
+    | CC_BY_1_0 -- ^ @CC-BY-1.0@, Creative Commons Attribution 1.0 Generic
+    | CC_BY_2_0 -- ^ @CC-BY-2.0@, Creative Commons Attribution 2.0 Generic
+    | CC_BY_2_5_AU -- ^ @CC-BY-2.5-AU@, Creative Commons Attribution 2.5 Australia, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | CC_BY_2_5 -- ^ @CC-BY-2.5@, Creative Commons Attribution 2.5 Generic
+    | CC_BY_3_0_AT -- ^ @CC-BY-3.0-AT@, Creative Commons Attribution 3.0 Austria, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | CC_BY_3_0_AU -- ^ @CC-BY-3.0-AU@, Creative Commons Attribution 3.0 Australia, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | CC_BY_3_0_DE -- ^ @CC-BY-3.0-DE@, Creative Commons Attribution 3.0 Germany, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | CC_BY_3_0_IGO -- ^ @CC-BY-3.0-IGO@, Creative Commons Attribution 3.0 IGO, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | CC_BY_3_0_NL -- ^ @CC-BY-3.0-NL@, Creative Commons Attribution 3.0 Netherlands, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | CC_BY_3_0_US -- ^ @CC-BY-3.0-US@, Creative Commons Attribution 3.0 United States, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | CC_BY_3_0 -- ^ @CC-BY-3.0@, Creative Commons Attribution 3.0 Unported
+    | CC_BY_4_0 -- ^ @CC-BY-4.0@, Creative Commons Attribution 4.0 International
+    | CC_BY_NC_1_0 -- ^ @CC-BY-NC-1.0@, Creative Commons Attribution Non Commercial 1.0 Generic
+    | CC_BY_NC_2_0 -- ^ @CC-BY-NC-2.0@, Creative Commons Attribution Non Commercial 2.0 Generic
+    | CC_BY_NC_2_5 -- ^ @CC-BY-NC-2.5@, Creative Commons Attribution Non Commercial 2.5 Generic
+    | CC_BY_NC_3_0_DE -- ^ @CC-BY-NC-3.0-DE@, Creative Commons Attribution Non Commercial 3.0 Germany, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | CC_BY_NC_3_0 -- ^ @CC-BY-NC-3.0@, Creative Commons Attribution Non Commercial 3.0 Unported
+    | CC_BY_NC_4_0 -- ^ @CC-BY-NC-4.0@, Creative Commons Attribution Non Commercial 4.0 International
+    | CC_BY_NC_ND_1_0 -- ^ @CC-BY-NC-ND-1.0@, Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic
+    | CC_BY_NC_ND_2_0 -- ^ @CC-BY-NC-ND-2.0@, Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic
+    | CC_BY_NC_ND_2_5 -- ^ @CC-BY-NC-ND-2.5@, Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic
+    | CC_BY_NC_ND_3_0_DE -- ^ @CC-BY-NC-ND-3.0-DE@, Creative Commons Attribution Non Commercial No Derivatives 3.0 Germany, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | CC_BY_NC_ND_3_0_IGO -- ^ @CC-BY-NC-ND-3.0-IGO@, Creative Commons Attribution Non Commercial No Derivatives 3.0 IGO, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | CC_BY_NC_ND_3_0 -- ^ @CC-BY-NC-ND-3.0@, Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported
+    | CC_BY_NC_ND_4_0 -- ^ @CC-BY-NC-ND-4.0@, Creative Commons Attribution Non Commercial No Derivatives 4.0 International
+    | CC_BY_NC_SA_1_0 -- ^ @CC-BY-NC-SA-1.0@, Creative Commons Attribution Non Commercial Share Alike 1.0 Generic
+    | CC_BY_NC_SA_2_0_DE -- ^ @CC-BY-NC-SA-2.0-DE@, Creative Commons Attribution Non Commercial Share Alike 2.0 Germany, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | CC_BY_NC_SA_2_0_FR -- ^ @CC-BY-NC-SA-2.0-FR@, Creative Commons Attribution-NonCommercial-ShareAlike 2.0 France, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | CC_BY_NC_SA_2_0_UK -- ^ @CC-BY-NC-SA-2.0-UK@, Creative Commons Attribution Non Commercial Share Alike 2.0 England and Wales, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | CC_BY_NC_SA_2_0 -- ^ @CC-BY-NC-SA-2.0@, Creative Commons Attribution Non Commercial Share Alike 2.0 Generic
+    | CC_BY_NC_SA_2_5 -- ^ @CC-BY-NC-SA-2.5@, Creative Commons Attribution Non Commercial Share Alike 2.5 Generic
+    | CC_BY_NC_SA_3_0_DE -- ^ @CC-BY-NC-SA-3.0-DE@, Creative Commons Attribution Non Commercial Share Alike 3.0 Germany, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | CC_BY_NC_SA_3_0_IGO -- ^ @CC-BY-NC-SA-3.0-IGO@, Creative Commons Attribution Non Commercial Share Alike 3.0 IGO, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | CC_BY_NC_SA_3_0 -- ^ @CC-BY-NC-SA-3.0@, Creative Commons Attribution Non Commercial Share Alike 3.0 Unported
+    | CC_BY_NC_SA_4_0 -- ^ @CC-BY-NC-SA-4.0@, Creative Commons Attribution Non Commercial Share Alike 4.0 International
+    | CC_BY_ND_1_0 -- ^ @CC-BY-ND-1.0@, Creative Commons Attribution No Derivatives 1.0 Generic
+    | CC_BY_ND_2_0 -- ^ @CC-BY-ND-2.0@, Creative Commons Attribution No Derivatives 2.0 Generic
+    | CC_BY_ND_2_5 -- ^ @CC-BY-ND-2.5@, Creative Commons Attribution No Derivatives 2.5 Generic
+    | CC_BY_ND_3_0_DE -- ^ @CC-BY-ND-3.0-DE@, Creative Commons Attribution No Derivatives 3.0 Germany, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | CC_BY_ND_3_0 -- ^ @CC-BY-ND-3.0@, Creative Commons Attribution No Derivatives 3.0 Unported
+    | CC_BY_ND_4_0 -- ^ @CC-BY-ND-4.0@, Creative Commons Attribution No Derivatives 4.0 International
+    | CC_BY_SA_1_0 -- ^ @CC-BY-SA-1.0@, Creative Commons Attribution Share Alike 1.0 Generic
+    | CC_BY_SA_2_0_UK -- ^ @CC-BY-SA-2.0-UK@, Creative Commons Attribution Share Alike 2.0 England and Wales, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | CC_BY_SA_2_0 -- ^ @CC-BY-SA-2.0@, Creative Commons Attribution Share Alike 2.0 Generic
+    | CC_BY_SA_2_1_JP -- ^ @CC-BY-SA-2.1-JP@, Creative Commons Attribution Share Alike 2.1 Japan, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | CC_BY_SA_2_5 -- ^ @CC-BY-SA-2.5@, Creative Commons Attribution Share Alike 2.5 Generic
+    | CC_BY_SA_3_0_AT -- ^ @CC-BY-SA-3.0-AT@, Creative Commons Attribution Share Alike 3.0 Austria, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | CC_BY_SA_3_0_DE -- ^ @CC-BY-SA-3.0-DE@, Creative Commons Attribution Share Alike 3.0 Germany, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | CC_BY_SA_3_0_IGO -- ^ @CC-BY-SA-3.0-IGO@, Creative Commons Attribution-ShareAlike 3.0 IGO, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | CC_BY_SA_3_0 -- ^ @CC-BY-SA-3.0@, Creative Commons Attribution Share Alike 3.0 Unported
+    | CC_BY_SA_4_0 -- ^ @CC-BY-SA-4.0@, Creative Commons Attribution Share Alike 4.0 International
+    | CC_PDDC -- ^ @CC-PDDC@, Creative Commons Public Domain Dedication and Certification, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | CC_PDM_1_0 -- ^ @CC-PDM-1.0@, Creative    Commons Public Domain Mark 1.0 Universal, SPDX License List 3.26, SPDX License List 3.28
+    | CC_SA_1_0 -- ^ @CC-SA-1.0@, Creative Commons Share Alike 1.0 Generic, SPDX License List 3.26, SPDX License List 3.28
+    | CC0_1_0 -- ^ @CC0-1.0@, Creative Commons Zero v1.0 Universal
+    | CDDL_1_0 -- ^ @CDDL-1.0@, Common Development and Distribution License 1.0
+    | CDDL_1_1 -- ^ @CDDL-1.1@, Common Development and Distribution License 1.1
+    | CDL_1_0 -- ^ @CDL-1.0@, Common Documentation License 1.0, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | CDLA_Permissive_1_0 -- ^ @CDLA-Permissive-1.0@, Community Data License Agreement Permissive 1.0
+    | CDLA_Permissive_2_0 -- ^ @CDLA-Permissive-2.0@, Community Data License Agreement Permissive 2.0, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | CDLA_Sharing_1_0 -- ^ @CDLA-Sharing-1.0@, Community Data License Agreement Sharing 1.0
+    | CECILL_1_0 -- ^ @CECILL-1.0@, CeCILL Free Software License Agreement v1.0
+    | CECILL_1_1 -- ^ @CECILL-1.1@, CeCILL Free Software License Agreement v1.1
+    | CECILL_2_0 -- ^ @CECILL-2.0@, CeCILL Free Software License Agreement v2.0
+    | CECILL_2_1 -- ^ @CECILL-2.1@, CeCILL Free Software License Agreement v2.1
+    | CECILL_B -- ^ @CECILL-B@, CeCILL-B Free Software License Agreement
+    | CECILL_C -- ^ @CECILL-C@, CeCILL-C Free Software License Agreement
+    | CERN_OHL_1_1 -- ^ @CERN-OHL-1.1@, CERN Open Hardware Licence v1.1, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | CERN_OHL_1_2 -- ^ @CERN-OHL-1.2@, CERN Open Hardware Licence v1.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | CERN_OHL_P_2_0 -- ^ @CERN-OHL-P-2.0@, CERN Open Hardware Licence Version 2 - Permissive, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | CERN_OHL_S_2_0 -- ^ @CERN-OHL-S-2.0@, CERN Open Hardware Licence Version 2 - Strongly Reciprocal, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | CERN_OHL_W_2_0 -- ^ @CERN-OHL-W-2.0@, CERN Open Hardware Licence Version 2 - Weakly Reciprocal, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | CFITSIO -- ^ @CFITSIO@, CFITSIO License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Check_cvs -- ^ @check-cvs@, check-cvs License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Checkmk -- ^ @checkmk@, Checkmk License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | ClArtistic -- ^ @ClArtistic@, Clarified Artistic License
+    | Clips -- ^ @Clips@, Clips License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | CMU_Mach_nodoc -- ^ @CMU-Mach-nodoc@, CMU    Mach - no notices-in-documentation variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | CMU_Mach -- ^ @CMU-Mach@, CMU Mach License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | CNRI_Jython -- ^ @CNRI-Jython@, CNRI Jython License
+    | CNRI_Python_GPL_Compatible -- ^ @CNRI-Python-GPL-Compatible@, CNRI Python Open Source GPL Compatible License Agreement
+    | CNRI_Python -- ^ @CNRI-Python@, CNRI Python License
+    | COIL_1_0 -- ^ @COIL-1.0@, Copyfree Open Innovation License, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Community_Spec_1_0 -- ^ @Community-Spec-1.0@, Community Specification License 1.0, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Condor_1_1 -- ^ @Condor-1.1@, Condor Public License v1.1
+    | Copyleft_next_0_3_0 -- ^ @copyleft-next-0.3.0@, copyleft-next 0.3.0, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Copyleft_next_0_3_1 -- ^ @copyleft-next-0.3.1@, copyleft-next 0.3.1, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Cornell_Lossless_JPEG -- ^ @Cornell-Lossless-JPEG@, Cornell Lossless JPEG License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | CPAL_1_0 -- ^ @CPAL-1.0@, Common Public Attribution License 1.0
+    | CPL_1_0 -- ^ @CPL-1.0@, Common Public License 1.0
+    | CPOL_1_02 -- ^ @CPOL-1.02@, Code Project Open License 1.02
+    | Cronyx -- ^ @Cronyx@, Cronyx License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Crossword -- ^ @Crossword@, Crossword License
+    | CryptoSwift -- ^ @CryptoSwift@, CryptoSwift License, SPDX License List 3.26, SPDX License List 3.28
+    | CrystalStacker -- ^ @CrystalStacker@, CrystalStacker License
+    | CUA_OPL_1_0 -- ^ @CUA-OPL-1.0@, CUA Office Public License v1.0
+    | Cube -- ^ @Cube@, Cube License
+    | Curl -- ^ @curl@, curl License
+    | Cve_tou -- ^ @cve-tou@, Common Vulnerability Enumeration ToU License, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | D_FSL_1_0 -- ^ @D-FSL-1.0@, Deutsche Freie Software Lizenz
+    | DEC_3_Clause -- ^ @DEC-3-Clause@, DEC 3-Clause License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Diffmark -- ^ @diffmark@, diffmark license
+    | DL_DE_BY_2_0 -- ^ @DL-DE-BY-2.0@, Data licence Germany – attribution – version 2.0, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | DL_DE_ZERO_2_0 -- ^ @DL-DE-ZERO-2.0@, Data licence Germany – zero – version 2.0, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | DocBook_DTD -- ^ @DocBook-DTD@, DocBook DTD License, SPDX License List 3.26, SPDX License List 3.28
+    | DocBook_Schema -- ^ @DocBook-Schema@, DocBook Schema License, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | DocBook_Stylesheet -- ^ @DocBook-Stylesheet@, DocBook Stylesheet License, SPDX License List 3.26, SPDX License List 3.28
+    | DocBook_XML -- ^ @DocBook-XML@, DocBook XML License, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | DOC -- ^ @DOC@, DOC License
+    | Dotseqn -- ^ @Dotseqn@, Dotseqn License
+    | DRL_1_0 -- ^ @DRL-1.0@, Detection Rule License 1.0, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | DRL_1_1 -- ^ @DRL-1.1@, Detection Rule License 1.1, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | DSDP -- ^ @DSDP@, DSDP License
+    | Dtoa -- ^ @dtoa@, David M. Gay dtoa License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Dvipdfm -- ^ @dvipdfm@, dvipdfm License
+    | ECL_1_0 -- ^ @ECL-1.0@, Educational Community License v1.0
+    | ECL_2_0 -- ^ @ECL-2.0@, Educational Community License v2.0
+    | EFL_1_0 -- ^ @EFL-1.0@, Eiffel Forum License v1.0
+    | EFL_2_0 -- ^ @EFL-2.0@, Eiffel Forum License v2.0
+    | EGenix -- ^ @eGenix@, eGenix.com Public License 1.1.0
+    | Elastic_2_0 -- ^ @Elastic-2.0@, Elastic License 2.0, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Entessa -- ^ @Entessa@, Entessa Public License v1.0
+    | EPICS -- ^ @EPICS@, EPICS Open License, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | EPL_1_0 -- ^ @EPL-1.0@, Eclipse Public License 1.0
+    | EPL_2_0 -- ^ @EPL-2.0@, Eclipse Public License 2.0
+    | ErlPL_1_1 -- ^ @ErlPL-1.1@, Erlang Public License v1.1
+    | ESA_PL_permissive_2_4 -- ^ @ESA-PL-permissive-2.4@, European Space Agency Public License – v2.4 – Permissive (Type 3), SPDX License List 3.28
+    | ESA_PL_strong_copyleft_2_4 -- ^ @ESA-PL-strong-copyleft-2.4@, European Space Agency Public License (ESA-PL) - V2.4 - Strong Copyleft (Type 1), SPDX License List 3.28
+    | ESA_PL_weak_copyleft_2_4 -- ^ @ESA-PL-weak-copyleft-2.4@, European Space Agency Public License – v2.4 – Weak Copyleft (Type 2), SPDX License List 3.28
+    | Etalab_2_0 -- ^ @etalab-2.0@, Etalab Open License 2.0, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | EUDatagrid -- ^ @EUDatagrid@, EU DataGrid Software License
+    | EUPL_1_0 -- ^ @EUPL-1.0@, European Union Public License 1.0
+    | EUPL_1_1 -- ^ @EUPL-1.1@, European Union Public License 1.1
+    | EUPL_1_2 -- ^ @EUPL-1.2@, European Union Public License 1.2
+    | Eurosym -- ^ @Eurosym@, Eurosym License
+    | Fair -- ^ @Fair@, Fair License
+    | FBM -- ^ @FBM@, Fuzzy Bitmap License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | FDK_AAC -- ^ @FDK-AAC@, Fraunhofer FDK AAC Codec Library, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Ferguson_Twofish -- ^ @Ferguson-Twofish@, Ferguson Twofish License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Frameworx_1_0 -- ^ @Frameworx-1.0@, Frameworx Open License 1.0
+    | FreeBSD_DOC -- ^ @FreeBSD-DOC@, FreeBSD Documentation License, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | FreeImage -- ^ @FreeImage@, FreeImage Public License v1.0
+    | FSFAP_no_warranty_disclaimer -- ^ @FSFAP-no-warranty-disclaimer@, FSF All Permissive License (without Warranty), SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | FSFAP -- ^ @FSFAP@, FSF All Permissive License
+    | FSFULLRSD -- ^ @FSFULLRSD@, FSF Unlimited License (with License Retention and Short Disclaimer), SPDX License List 3.26, SPDX License List 3.28
+    | FSFULLRWD -- ^ @FSFULLRWD@, FSF Unlimited License (With License Retention and Warranty Disclaimer), SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | FSFULLR -- ^ @FSFULLR@, FSF Unlimited License (with License Retention)
+    | FSFUL -- ^ @FSFUL@, FSF Unlimited License
+    | FSL_1_1_ALv2 -- ^ @FSL-1.1-ALv2@, Functional Source License, Version 1.1, ALv2 Future License, SPDX License List 3.26, SPDX License List 3.28
+    | FSL_1_1_MIT -- ^ @FSL-1.1-MIT@, Functional Source License, Version 1.1, MIT Future License, SPDX License List 3.26, SPDX License List 3.28
+    | FTL -- ^ @FTL@, Freetype Project License
+    | Furuseth -- ^ @Furuseth@, Furuseth License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Fwlw -- ^ @fwlw@, fwlw License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Game_Programming_Gems -- ^ @Game-Programming-Gems@, Game Programming Gems License, SPDX License List 3.26, SPDX License List 3.28
+    | GCR_docs -- ^ @GCR-docs@, Gnome GCR Documentation License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | GD -- ^ @GD@, GD License, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Generic_xts -- ^ @generic-xts@, Generic XTS License, SPDX License List 3.26, SPDX License List 3.28
+    | GFDL_1_1_invariants_only -- ^ @GFDL-1.1-invariants-only@, GNU Free Documentation License v1.1 only - invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | GFDL_1_1_invariants_or_later -- ^ @GFDL-1.1-invariants-or-later@, GNU Free Documentation License v1.1 or later - invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | GFDL_1_1_no_invariants_only -- ^ @GFDL-1.1-no-invariants-only@, GNU Free Documentation License v1.1 only - no invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | GFDL_1_1_no_invariants_or_later -- ^ @GFDL-1.1-no-invariants-or-later@, GNU Free Documentation License v1.1 or later - no invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | GFDL_1_1_only -- ^ @GFDL-1.1-only@, GNU Free Documentation License v1.1 only
+    | GFDL_1_1_or_later -- ^ @GFDL-1.1-or-later@, GNU Free Documentation License v1.1 or later
+    | GFDL_1_2_invariants_only -- ^ @GFDL-1.2-invariants-only@, GNU Free Documentation License v1.2 only - invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | GFDL_1_2_invariants_or_later -- ^ @GFDL-1.2-invariants-or-later@, GNU Free Documentation License v1.2 or later - invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | GFDL_1_2_no_invariants_only -- ^ @GFDL-1.2-no-invariants-only@, GNU Free Documentation License v1.2 only - no invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | GFDL_1_2_no_invariants_or_later -- ^ @GFDL-1.2-no-invariants-or-later@, GNU Free Documentation License v1.2 or later - no invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | GFDL_1_2_only -- ^ @GFDL-1.2-only@, GNU Free Documentation License v1.2 only
+    | GFDL_1_2_or_later -- ^ @GFDL-1.2-or-later@, GNU Free Documentation License v1.2 or later
+    | GFDL_1_3_invariants_only -- ^ @GFDL-1.3-invariants-only@, GNU Free Documentation License v1.3 only - invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | GFDL_1_3_invariants_or_later -- ^ @GFDL-1.3-invariants-or-later@, GNU Free Documentation License v1.3 or later - invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | GFDL_1_3_no_invariants_only -- ^ @GFDL-1.3-no-invariants-only@, GNU Free Documentation License v1.3 only - no invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | GFDL_1_3_no_invariants_or_later -- ^ @GFDL-1.3-no-invariants-or-later@, GNU Free Documentation License v1.3 or later - no invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | GFDL_1_3_only -- ^ @GFDL-1.3-only@, GNU Free Documentation License v1.3 only
+    | GFDL_1_3_or_later -- ^ @GFDL-1.3-or-later@, GNU Free Documentation License v1.3 or later
+    | Giftware -- ^ @Giftware@, Giftware License
+    | GL2PS -- ^ @GL2PS@, GL2PS License
+    | Glide -- ^ @Glide@, 3dfx Glide License
+    | Glulxe -- ^ @Glulxe@, Glulxe License
+    | GLWTPL -- ^ @GLWTPL@, Good Luck With That Public License, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Gnuplot -- ^ @gnuplot@, gnuplot License
+    | GPL_1_0_only -- ^ @GPL-1.0-only@, GNU General Public License v1.0 only
+    | GPL_1_0_or_later -- ^ @GPL-1.0-or-later@, GNU General Public License v1.0 or later
+    | GPL_2_0_only -- ^ @GPL-2.0-only@, GNU General Public License v2.0 only
+    | GPL_2_0_or_later -- ^ @GPL-2.0-or-later@, GNU General Public License v2.0 or later
+    | GPL_3_0_only -- ^ @GPL-3.0-only@, GNU General Public License v3.0 only
+    | GPL_3_0_or_later -- ^ @GPL-3.0-or-later@, GNU General Public License v3.0 or later
+    | Graphics_Gems -- ^ @Graphics-Gems@, Graphics Gems License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | GSOAP_1_3b -- ^ @gSOAP-1.3b@, gSOAP Public License v1.3b
+    | Gtkbook -- ^ @gtkbook@, gtkbook License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Gutmann -- ^ @Gutmann@, Gutmann License, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | HaskellReport -- ^ @HaskellReport@, Haskell Language Report License
+    | HDF5 -- ^ @HDF5@, HDF5 License, SPDX License List 3.26, SPDX License List 3.28
+    | Hdparm -- ^ @hdparm@, hdparm License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | HIDAPI -- ^ @HIDAPI@, HIDAPI License, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Hippocratic_2_1 -- ^ @Hippocratic-2.1@, Hippocratic License 2.1, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | HP_1986 -- ^ @HP-1986@, Hewlett-Packard 1986 License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | HP_1989 -- ^ @HP-1989@, Hewlett-Packard 1989 License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | HPND_DEC -- ^ @HPND-DEC@, Historical Permission Notice and Disclaimer - DEC variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | HPND_doc_sell -- ^ @HPND-doc-sell@, Historical Permission Notice and Disclaimer - documentation sell variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | HPND_doc -- ^ @HPND-doc@, Historical Permission Notice and Disclaimer - documentation variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | HPND_export_US_acknowledgement -- ^ @HPND-export-US-acknowledgement@, HPND with US Government export control warning and acknowledgment, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | HPND_export_US_modify -- ^ @HPND-export-US-modify@, HPND with US Government export control warning and modification rqmt, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | HPND_export_US -- ^ @HPND-export-US@, HPND with US Government export control warning, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | HPND_export2_US -- ^ @HPND-export2-US@, HPND with US Government export control and 2 disclaimers, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | HPND_Fenneberg_Livingston -- ^ @HPND-Fenneberg-Livingston@, Historical Permission Notice and Disclaimer - Fenneberg-Livingston variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | HPND_INRIA_IMAG -- ^ @HPND-INRIA-IMAG@, Historical Permission Notice and Disclaimer    - INRIA-IMAG variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | HPND_Intel -- ^ @HPND-Intel@, Historical Permission Notice and Disclaimer - Intel variant, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | HPND_Kevlin_Henney -- ^ @HPND-Kevlin-Henney@, Historical Permission Notice and Disclaimer - Kevlin Henney variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | HPND_Markus_Kuhn -- ^ @HPND-Markus-Kuhn@, Historical Permission Notice and Disclaimer - Markus Kuhn variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | HPND_merchantability_variant -- ^ @HPND-merchantability-variant@, Historical Permission Notice and Disclaimer - merchantability variant, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | HPND_MIT_disclaimer -- ^ @HPND-MIT-disclaimer@, Historical Permission Notice and Disclaimer with MIT disclaimer, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | HPND_Netrek -- ^ @HPND-Netrek@, Historical Permission Notice and Disclaimer - Netrek variant, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | HPND_Pbmplus -- ^ @HPND-Pbmplus@, Historical Permission Notice and Disclaimer - Pbmplus variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | HPND_sell_MIT_disclaimer_xserver -- ^ @HPND-sell-MIT-disclaimer-xserver@, Historical Permission Notice and Disclaimer - sell xserver variant with MIT disclaimer, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | HPND_sell_regexpr -- ^ @HPND-sell-regexpr@, Historical Permission Notice and Disclaimer - sell regexpr variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | HPND_sell_variant_critical_systems -- ^ @HPND-sell-variant-critical-systems@, HPND - sell variant with safety critical systems clause, SPDX License List 3.28
+    | HPND_sell_variant_MIT_disclaimer_rev -- ^ @HPND-sell-variant-MIT-disclaimer-rev@, HPND sell variant with MIT disclaimer - reverse, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | HPND_sell_variant_MIT_disclaimer -- ^ @HPND-sell-variant-MIT-disclaimer@, HPND sell variant with MIT disclaimer, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | HPND_sell_variant -- ^ @HPND-sell-variant@, Historical Permission Notice and Disclaimer - sell variant, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | HPND_SMC -- ^ @HPND-SMC@, Historical Permission Notice and Disclaimer - SMC variant, SPDX License List 3.28
+    | HPND_UC_export_US -- ^ @HPND-UC-export-US@, Historical Permission Notice and Disclaimer - University of California, US export warning, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | HPND_UC -- ^ @HPND-UC@, Historical Permission Notice and Disclaimer - University of California variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | HPND -- ^ @HPND@, Historical Permission Notice and Disclaimer
+    | HTMLTIDY -- ^ @HTMLTIDY@, HTML Tidy License, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Hyphen_bulgarian -- ^ @hyphen-bulgarian@, hyphen-bulgarian License, SPDX License List 3.28
+    | IBM_pibs -- ^ @IBM-pibs@, IBM PowerPC Initialization and Boot Software
+    | ICU -- ^ @ICU@, ICU License
+    | IEC_Code_Components_EULA -- ^ @IEC-Code-Components-EULA@, IEC    Code Components End-user licence agreement, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | IJG_short -- ^ @IJG-short@, Independent JPEG Group License - short, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | IJG -- ^ @IJG@, Independent JPEG Group License
+    | ImageMagick -- ^ @ImageMagick@, ImageMagick License
+    | IMatix -- ^ @iMatix@, iMatix Standard Function Library Agreement
+    | Imlib2 -- ^ @Imlib2@, Imlib2 License
+    | Info_ZIP -- ^ @Info-ZIP@, Info-ZIP License
+    | Inner_Net_2_0 -- ^ @Inner-Net-2.0@, Inner Net License v2.0, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | InnoSetup -- ^ @InnoSetup@, Inno Setup License, SPDX License List 3.26, SPDX License List 3.28
+    | Intel_ACPI -- ^ @Intel-ACPI@, Intel ACPI Software License Agreement
+    | Intel -- ^ @Intel@, Intel Open Source License
+    | Interbase_1_0 -- ^ @Interbase-1.0@, Interbase Public License v1.0
+    | IPA -- ^ @IPA@, IPA Font License
+    | IPL_1_0 -- ^ @IPL-1.0@, IBM Public License v1.0
+    | ISC_Veillard -- ^ @ISC-Veillard@, ISC Veillard variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | ISC -- ^ @ISC@, ISC License
+    | ISO_permission -- ^ @ISO-permission@, ISO permission notice, SPDX License List 3.28
+    | Jam -- ^ @Jam@, Jam License, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | JasPer_2_0 -- ^ @JasPer-2.0@, JasPer License
+    | Jove -- ^ @jove@, Jove License, SPDX License List 3.26, SPDX License List 3.28
+    | JPL_image -- ^ @JPL-image@, JPL Image Use Policy, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | JPNIC -- ^ @JPNIC@, Japan Network Information Center License, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | JSON -- ^ @JSON@, JSON License
+    | Kastrup -- ^ @Kastrup@, Kastrup License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Kazlib -- ^ @Kazlib@, Kazlib License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Knuth_CTAN -- ^ @Knuth-CTAN@, Knuth CTAN License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | LAL_1_2 -- ^ @LAL-1.2@, Licence Art Libre 1.2
+    | LAL_1_3 -- ^ @LAL-1.3@, Licence Art Libre 1.3
+    | Latex2e_translated_notice -- ^ @Latex2e-translated-notice@, Latex2e with translated notice permission, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Latex2e -- ^ @Latex2e@, Latex2e License
+    | Leptonica -- ^ @Leptonica@, Leptonica License
+    | LGPL_2_0_only -- ^ @LGPL-2.0-only@, GNU Library General Public License v2 only
+    | LGPL_2_0_or_later -- ^ @LGPL-2.0-or-later@, GNU Library General Public License v2 or later
+    | LGPL_2_1_only -- ^ @LGPL-2.1-only@, GNU Lesser General Public License v2.1 only
+    | LGPL_2_1_or_later -- ^ @LGPL-2.1-or-later@, GNU Lesser General Public License v2.1 or later
+    | LGPL_3_0_only -- ^ @LGPL-3.0-only@, GNU Lesser General Public License v3.0 only
+    | LGPL_3_0_or_later -- ^ @LGPL-3.0-or-later@, GNU Lesser General Public License v3.0 or later
+    | LGPLLR -- ^ @LGPLLR@, Lesser General Public License For Linguistic Resources
+    | Libpng_1_6_35 -- ^ @libpng-1.6.35@, PNG Reference Library License v1 (for libpng 0.5 through 1.6.35), SPDX License List 3.26, SPDX License List 3.28
+    | Libpng_2_0 -- ^ @libpng-2.0@, PNG Reference Library version 2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Libpng -- ^ @Libpng@, libpng License
+    | Libselinux_1_0 -- ^ @libselinux-1.0@, libselinux public domain notice, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Libtiff -- ^ @libtiff@, libtiff License
+    | Libutil_David_Nugent -- ^ @libutil-David-Nugent@, libutil David Nugent License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | LiLiQ_P_1_1 -- ^ @LiLiQ-P-1.1@, Licence Libre du Québec – Permissive version 1.1
+    | LiLiQ_R_1_1 -- ^ @LiLiQ-R-1.1@, Licence Libre du Québec – Réciprocité version 1.1
+    | LiLiQ_Rplus_1_1 -- ^ @LiLiQ-Rplus-1.1@, Licence Libre du Québec – Réciprocité forte version 1.1
+    | Linux_man_pages_1_para -- ^ @Linux-man-pages-1-para@, Linux man-pages - 1 paragraph, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Linux_man_pages_copyleft_2_para -- ^ @Linux-man-pages-copyleft-2-para@, Linux man-pages Copyleft - 2 paragraphs, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Linux_man_pages_copyleft_var -- ^ @Linux-man-pages-copyleft-var@, Linux man-pages Copyleft Variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Linux_man_pages_copyleft -- ^ @Linux-man-pages-copyleft@, Linux man-pages Copyleft, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Linux_OpenIB -- ^ @Linux-OpenIB@, Linux Kernel Variant of OpenIB.org license, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | LOOP -- ^ @LOOP@, Common Lisp LOOP License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | LPD_document -- ^ @LPD-document@, LPD Documentation License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | LPL_1_02 -- ^ @LPL-1.02@, Lucent Public License v1.02
+    | LPL_1_0 -- ^ @LPL-1.0@, Lucent Public License Version 1.0
+    | LPPL_1_0 -- ^ @LPPL-1.0@, LaTeX Project Public License v1.0
+    | LPPL_1_1 -- ^ @LPPL-1.1@, LaTeX Project Public License v1.1
+    | LPPL_1_2 -- ^ @LPPL-1.2@, LaTeX Project Public License v1.2
+    | LPPL_1_3a -- ^ @LPPL-1.3a@, LaTeX Project Public License v1.3a
+    | LPPL_1_3c -- ^ @LPPL-1.3c@, LaTeX Project Public License v1.3c
+    | Lsof -- ^ @lsof@, lsof License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Lucida_Bitmap_Fonts -- ^ @Lucida-Bitmap-Fonts@, Lucida Bitmap Fonts License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | LZMA_SDK_9_11_to_9_20 -- ^ @LZMA-SDK-9.11-to-9.20@, LZMA SDK License (versions 9.11 to 9.20), SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | LZMA_SDK_9_22 -- ^ @LZMA-SDK-9.22@, LZMA SDK License (versions 9.22 and beyond), SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Mackerras_3_Clause_acknowledgment -- ^ @Mackerras-3-Clause-acknowledgment@, Mackerras 3-Clause - acknowledgment variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Mackerras_3_Clause -- ^ @Mackerras-3-Clause@, Mackerras 3-Clause License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Magaz -- ^ @magaz@, magaz License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Mailprio -- ^ @mailprio@, mailprio License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | MakeIndex -- ^ @MakeIndex@, MakeIndex License
+    | Man2html -- ^ @man2html@, man2html License, SPDX License List 3.26, SPDX License List 3.28
+    | Martin_Birgmeier -- ^ @Martin-Birgmeier@, Martin Birgmeier License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | McPhee_slideshow -- ^ @McPhee-slideshow@, McPhee Slideshow License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Metamail -- ^ @metamail@, metamail License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Minpack -- ^ @Minpack@, Minpack License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | MIPS -- ^ @MIPS@, MIPS License, SPDX License List 3.26, SPDX License List 3.28
+    | MirOS -- ^ @MirOS@, The MirOS Licence
+    | MIT_0 -- ^ @MIT-0@, MIT No Attribution, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | MIT_advertising -- ^ @MIT-advertising@, Enlightenment License (e16)
+    | MIT_Click -- ^ @MIT-Click@, MIT Click License, SPDX License List 3.26, SPDX License List 3.28
+    | MIT_CMU -- ^ @MIT-CMU@, CMU License
+    | MIT_enna -- ^ @MIT-enna@, enna License
+    | MIT_feh -- ^ @MIT-feh@, feh License
+    | MIT_Festival -- ^ @MIT-Festival@, MIT Festival Variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | MIT_Khronos_old -- ^ @MIT-Khronos-old@, MIT Khronos - old variant, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | MIT_Modern_Variant -- ^ @MIT-Modern-Variant@, MIT License Modern Variant, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | MIT_open_group -- ^ @MIT-open-group@, MIT Open Group variant, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | MIT_STK -- ^ @MIT-STK@, MIT-STK License, SPDX License List 3.28
+    | MIT_testregex -- ^ @MIT-testregex@, MIT testregex Variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | MIT_Wu -- ^ @MIT-Wu@, MIT Tom Wu Variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | MITNFA -- ^ @MITNFA@, MIT +no-false-attribs license
+    | MIT -- ^ @MIT@, MIT License
+    | MMIXware -- ^ @MMIXware@, MMIXware License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | MMPL_1_0_1 -- ^ @MMPL-1.0.1@, Minecraft Mod Public License v1.0.1, SPDX License List 3.28
+    | Motosoto -- ^ @Motosoto@, Motosoto License
+    | MPEG_SSG -- ^ @MPEG-SSG@, MPEG Software Simulation, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Mpi_permissive -- ^ @mpi-permissive@, mpi Permissive License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Mpich2 -- ^ @mpich2@, mpich2 License
+    | MPL_1_0 -- ^ @MPL-1.0@, Mozilla Public License 1.0
+    | MPL_1_1 -- ^ @MPL-1.1@, Mozilla Public License 1.1
+    | MPL_2_0_no_copyleft_exception -- ^ @MPL-2.0-no-copyleft-exception@, Mozilla Public License 2.0 (no copyleft exception)
+    | MPL_2_0 -- ^ @MPL-2.0@, Mozilla Public License 2.0
+    | Mplus -- ^ @mplus@, mplus Font License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | MS_LPL -- ^ @MS-LPL@, Microsoft Limited Public License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | MS_PL -- ^ @MS-PL@, Microsoft Public License
+    | MS_RL -- ^ @MS-RL@, Microsoft Reciprocal License
+    | MTLL -- ^ @MTLL@, Matrix Template Library License
+    | MulanPSL_1_0 -- ^ @MulanPSL-1.0@, Mulan Permissive Software License, Version 1, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | MulanPSL_2_0 -- ^ @MulanPSL-2.0@, Mulan Permissive Software License, Version 2, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Multics -- ^ @Multics@, Multics License
+    | Mup -- ^ @Mup@, Mup License
+    | NAIST_2003 -- ^ @NAIST-2003@, Nara Institute of Science and Technology License (2003), SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | NASA_1_3 -- ^ @NASA-1.3@, NASA Open Source Agreement 1.3
+    | Naumen -- ^ @Naumen@, Naumen Public License
+    | NBPL_1_0 -- ^ @NBPL-1.0@, Net Boolean Public License v1
+    | NCBI_PD -- ^ @NCBI-PD@, NCBI Public Domain Notice, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | NCGL_UK_2_0 -- ^ @NCGL-UK-2.0@, Non-Commercial Government Licence, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | NCL -- ^ @NCL@, NCL Source Code License, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | NCSA -- ^ @NCSA@, University of Illinois/NCSA Open Source License
+    | Net_SNMP -- ^ @Net-SNMP@, Net-SNMP License, SPDX License List 3.0, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23
+    | NetCDF -- ^ @NetCDF@, NetCDF license
+    | Newsletr -- ^ @Newsletr@, Newsletr License
+    | NGPL -- ^ @NGPL@, Nethack General Public License
+    | Ngrep -- ^ @ngrep@, ngrep License, SPDX License List 3.26, SPDX License List 3.28
+    | NICTA_1_0 -- ^ @NICTA-1.0@, NICTA Public Software License, Version 1.0, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | NIST_PD_fallback -- ^ @NIST-PD-fallback@, NIST Public Domain Notice with license fallback, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | NIST_PD_TNT -- ^ @NIST-PD-TNT@, NIST    Public Domain Notice TNT variant, SPDX License List 3.28
+    | NIST_PD -- ^ @NIST-PD@, NIST Public Domain Notice, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | NIST_Software -- ^ @NIST-Software@, NIST Software License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | NLOD_1_0 -- ^ @NLOD-1.0@, Norwegian Licence for Open Government Data (NLOD) 1.0
+    | NLOD_2_0 -- ^ @NLOD-2.0@, Norwegian Licence for Open Government Data (NLOD) 2.0, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | NLPL -- ^ @NLPL@, No Limit Public License
+    | Nokia -- ^ @Nokia@, Nokia Open Source License
+    | NOSL -- ^ @NOSL@, Netizen Open Source License
+    | Noweb -- ^ @Noweb@, Noweb License
+    | NPL_1_0 -- ^ @NPL-1.0@, Netscape Public License v1.0
+    | NPL_1_1 -- ^ @NPL-1.1@, Netscape Public License v1.1
+    | NPOSL_3_0 -- ^ @NPOSL-3.0@, Non-Profit Open Software License 3.0
+    | NRL -- ^ @NRL@, NRL License
+    | NTIA_PD -- ^ @NTIA-PD@, NTIA Public Domain Notice, SPDX License List 3.26, SPDX License List 3.28
+    | NTP_0 -- ^ @NTP-0@, NTP No Attribution, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | NTP -- ^ @NTP@, NTP License
+    | O_UDA_1_0 -- ^ @O-UDA-1.0@, Open Use of Data Agreement v1.0, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | OAR -- ^ @OAR@, OAR License, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | OCCT_PL -- ^ @OCCT-PL@, Open CASCADE Technology Public License
+    | OCLC_2_0 -- ^ @OCLC-2.0@, OCLC Research Public License 2.0
+    | ODbL_1_0 -- ^ @ODbL-1.0@, Open Data Commons Open Database License v1.0
+    | ODC_By_1_0 -- ^ @ODC-By-1.0@, Open Data Commons Attribution License v1.0, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | OFFIS -- ^ @OFFIS@, OFFIS License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | OFL_1_0_no_RFN -- ^ @OFL-1.0-no-RFN@, SIL Open Font License 1.0 with no Reserved Font Name, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | OFL_1_0_RFN -- ^ @OFL-1.0-RFN@, SIL Open Font License 1.0 with Reserved Font Name, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | OFL_1_0 -- ^ @OFL-1.0@, SIL Open Font License 1.0
+    | OFL_1_1_no_RFN -- ^ @OFL-1.1-no-RFN@, SIL Open Font License 1.1 with no Reserved Font Name, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | OFL_1_1_RFN -- ^ @OFL-1.1-RFN@, SIL Open Font License 1.1 with Reserved Font Name, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | OFL_1_1 -- ^ @OFL-1.1@, SIL Open Font License 1.1
+    | OGC_1_0 -- ^ @OGC-1.0@, OGC Software License, Version 1.0, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | OGDL_Taiwan_1_0 -- ^ @OGDL-Taiwan-1.0@, Taiwan Open Government Data License, version 1.0, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | OGL_Canada_2_0 -- ^ @OGL-Canada-2.0@, Open Government Licence - Canada, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | OGL_UK_1_0 -- ^ @OGL-UK-1.0@, Open Government Licence v1.0, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | OGL_UK_2_0 -- ^ @OGL-UK-2.0@, Open Government Licence v2.0, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | OGL_UK_3_0 -- ^ @OGL-UK-3.0@, Open Government Licence v3.0, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | OGTSL -- ^ @OGTSL@, Open Group Test Suite License
+    | OLDAP_1_1 -- ^ @OLDAP-1.1@, Open LDAP Public License v1.1
+    | OLDAP_1_2 -- ^ @OLDAP-1.2@, Open LDAP Public License v1.2
+    | OLDAP_1_3 -- ^ @OLDAP-1.3@, Open LDAP Public License v1.3
+    | OLDAP_1_4 -- ^ @OLDAP-1.4@, Open LDAP Public License v1.4
+    | OLDAP_2_0_1 -- ^ @OLDAP-2.0.1@, Open LDAP Public License v2.0.1
+    | OLDAP_2_0 -- ^ @OLDAP-2.0@, Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B)
+    | OLDAP_2_1 -- ^ @OLDAP-2.1@, Open LDAP Public License v2.1
+    | OLDAP_2_2_1 -- ^ @OLDAP-2.2.1@, Open LDAP Public License v2.2.1
+    | OLDAP_2_2_2 -- ^ @OLDAP-2.2.2@, Open LDAP Public License 2.2.2
+    | OLDAP_2_2 -- ^ @OLDAP-2.2@, Open LDAP Public License v2.2
+    | OLDAP_2_3 -- ^ @OLDAP-2.3@, Open LDAP Public License v2.3
+    | OLDAP_2_4 -- ^ @OLDAP-2.4@, Open LDAP Public License v2.4
+    | OLDAP_2_5 -- ^ @OLDAP-2.5@, Open LDAP Public License v2.5
+    | OLDAP_2_6 -- ^ @OLDAP-2.6@, Open LDAP Public License v2.6
+    | OLDAP_2_7 -- ^ @OLDAP-2.7@, Open LDAP Public License v2.7
+    | OLDAP_2_8 -- ^ @OLDAP-2.8@, Open LDAP Public License v2.8
+    | OLFL_1_3 -- ^ @OLFL-1.3@, Open Logistics Foundation License Version 1.3, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | OML -- ^ @OML@, Open Market License
+    | OpenMDW_1_0 -- ^ @OpenMDW-1.0@, OpenMDW License Agreement v1.0, SPDX License List 3.28
+    | OpenPBS_2_3 -- ^ @OpenPBS-2.3@, OpenPBS v2.3 Software License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | OpenSSL_standalone -- ^ @OpenSSL-standalone@, OpenSSL License - standalone, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | OpenSSL -- ^ @OpenSSL@, OpenSSL License
+    | OpenVision -- ^ @OpenVision@, OpenVision License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | OPL_1_0 -- ^ @OPL-1.0@, Open Public License v1.0
+    | OPL_UK_3_0 -- ^ @OPL-UK-3.0@, United    Kingdom Open Parliament Licence v3.0, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | OPUBL_1_0 -- ^ @OPUBL-1.0@, Open Publication License v1.0, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | OSC_1_0 -- ^ @OSC-1.0@, OSC License 1.0, SPDX License List 3.28
+    | OSET_PL_2_1 -- ^ @OSET-PL-2.1@, OSET Public License version 2.1
+    | OSL_1_0 -- ^ @OSL-1.0@, Open Software License 1.0
+    | OSL_1_1 -- ^ @OSL-1.1@, Open Software License 1.1
+    | OSL_2_0 -- ^ @OSL-2.0@, Open Software License 2.0
+    | OSL_2_1 -- ^ @OSL-2.1@, Open Software License 2.1
+    | OSL_3_0 -- ^ @OSL-3.0@, Open Software License 3.0
+    | OSSP -- ^ @OSSP@, OSSP License, SPDX License List 3.28
+    | PADL -- ^ @PADL@, PADL License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | ParaType_Free_Font_1_3 -- ^ @ParaType-Free-Font-1.3@, ParaType Free Font Licensing Agreement v1.3, SPDX License List 3.28
+    | Parity_6_0_0 -- ^ @Parity-6.0.0@, The Parity Public License 6.0.0, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Parity_7_0_0 -- ^ @Parity-7.0.0@, The Parity Public License 7.0.0, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | PDDL_1_0 -- ^ @PDDL-1.0@, Open Data Commons Public Domain Dedication & License 1.0
+    | PHP_3_01 -- ^ @PHP-3.01@, PHP License v3.01
+    | PHP_3_0 -- ^ @PHP-3.0@, PHP License v3.0
+    | Pixar -- ^ @Pixar@, Pixar License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Pkgconf -- ^ @pkgconf@, pkgconf License, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Plexus -- ^ @Plexus@, Plexus Classworlds License
+    | Pnmstitch -- ^ @pnmstitch@, pnmstitch License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | PolyForm_Noncommercial_1_0_0 -- ^ @PolyForm-Noncommercial-1.0.0@, PolyForm Noncommercial License 1.0.0, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | PolyForm_Small_Business_1_0_0 -- ^ @PolyForm-Small-Business-1.0.0@, PolyForm Small Business License 1.0.0, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | PostgreSQL -- ^ @PostgreSQL@, PostgreSQL License
+    | PPL -- ^ @PPL@, Peer Production License, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | PSF_2_0 -- ^ @PSF-2.0@, Python Software Foundation License 2.0, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Psfrag -- ^ @psfrag@, psfrag License
+    | Psutils -- ^ @psutils@, psutils License
+    | Python_2_0_1 -- ^ @Python-2.0.1@, Python License 2.0.1, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Python_2_0 -- ^ @Python-2.0@, Python License 2.0
+    | Python_ldap -- ^ @python-ldap@, Python ldap License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Qhull -- ^ @Qhull@, Qhull License
+    | QPL_1_0_INRIA_2004 -- ^ @QPL-1.0-INRIA-2004@, Q Public License 1.0 - INRIA 2004 variant, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | QPL_1_0 -- ^ @QPL-1.0@, Q Public License 1.0
+    | Radvd -- ^ @radvd@, radvd License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Rdisc -- ^ @Rdisc@, Rdisc License
+    | RHeCos_1_1 -- ^ @RHeCos-1.1@, Red Hat eCos Public License v1.1
+    | RPL_1_1 -- ^ @RPL-1.1@, Reciprocal Public License 1.1
+    | RPL_1_5 -- ^ @RPL-1.5@, Reciprocal Public License 1.5
+    | RPSL_1_0 -- ^ @RPSL-1.0@, RealNetworks Public Source License v1.0
+    | RSA_MD -- ^ @RSA-MD@, RSA Message-Digest License
+    | RSCPL -- ^ @RSCPL@, Ricoh Source Code Public License
+    | Ruby_pty -- ^ @Ruby-pty@, Ruby pty extension license, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Ruby -- ^ @Ruby@, Ruby License
+    | SAX_PD_2_0 -- ^ @SAX-PD-2.0@, Sax Public Domain Notice 2.0, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | SAX_PD -- ^ @SAX-PD@, Sax Public Domain Notice
+    | Saxpath -- ^ @Saxpath@, Saxpath License
+    | SCEA -- ^ @SCEA@, SCEA Shared Source License
+    | SchemeReport -- ^ @SchemeReport@, Scheme Language Report License, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Sendmail_8_23 -- ^ @Sendmail-8.23@, Sendmail License 8.23, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Sendmail_Open_Source_1_1 -- ^ @Sendmail-Open-Source-1.1@, Sendmail Open Source License v1.1, SPDX License List 3.26, SPDX License List 3.28
+    | Sendmail -- ^ @Sendmail@, Sendmail License
+    | SGI_B_1_0 -- ^ @SGI-B-1.0@, SGI Free Software License B v1.0
+    | SGI_B_1_1 -- ^ @SGI-B-1.1@, SGI Free Software License B v1.1
+    | SGI_B_2_0 -- ^ @SGI-B-2.0@, SGI Free Software License B v2.0
+    | SGI_OpenGL -- ^ @SGI-OpenGL@, SGI OpenGL License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | SGMLUG_PM -- ^ @SGMLUG-PM@, SGMLUG Parser Materials License, SPDX License List 3.28
+    | SGP4 -- ^ @SGP4@, SGP4 Permission Notice, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | SHL_0_51 -- ^ @SHL-0.51@, Solderpad Hardware License, Version 0.51, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | SHL_0_5 -- ^ @SHL-0.5@, Solderpad Hardware License v0.5, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | SimPL_2_0 -- ^ @SimPL-2.0@, Simple Public License 2.0
+    | SISSL_1_2 -- ^ @SISSL-1.2@, Sun Industry Standards Source License v1.2
+    | SISSL -- ^ @SISSL@, Sun Industry Standards Source License v1.1
+    | Sleepycat -- ^ @Sleepycat@, Sleepycat License
+    | SL -- ^ @SL@, SL License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | SMAIL_GPL -- ^ @SMAIL-GPL@, SMAIL General Public License, SPDX License List 3.26, SPDX License List 3.28
+    | SMLNJ -- ^ @SMLNJ@, Standard ML of New Jersey License
+    | SMPPL -- ^ @SMPPL@, Secure Messaging Protocol Public License
+    | SNIA -- ^ @SNIA@, SNIA Public License 1.1
+    | Snprintf -- ^ @snprintf@, snprintf License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | SOFA -- ^ @SOFA@, SOFA Software License, SPDX License List 3.26, SPDX License List 3.28
+    | SoftSurfer -- ^ @softSurfer@, softSurfer License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Soundex -- ^ @Soundex@, Soundex License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Spencer_86 -- ^ @Spencer-86@, Spencer License 86
+    | Spencer_94 -- ^ @Spencer-94@, Spencer License 94
+    | Spencer_99 -- ^ @Spencer-99@, Spencer License 99
+    | SPL_1_0 -- ^ @SPL-1.0@, Sun Public License v1.0
+    | Ssh_keyscan -- ^ @ssh-keyscan@, ssh-keyscan License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | SSH_OpenSSH -- ^ @SSH-OpenSSH@, SSH OpenSSH license, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | SSH_short -- ^ @SSH-short@, SSH short notice, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | SSLeay_standalone -- ^ @SSLeay-standalone@, SSLeay License - standalone, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | SSPL_1_0 -- ^ @SSPL-1.0@, Server Side Public License, v 1, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | SugarCRM_1_1_3 -- ^ @SugarCRM-1.1.3@, SugarCRM Public License v1.1.3
+    | SUL_1_0 -- ^ @SUL-1.0@, Sustainable Use License v1.0, SPDX License List 3.28
+    | Sun_PPP_2000 -- ^ @Sun-PPP-2000@, Sun PPP License (2000), SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Sun_PPP -- ^ @Sun-PPP@, Sun PPP License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | SunPro -- ^ @SunPro@, SunPro License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | SWL -- ^ @SWL@, Scheme Widget Library (SWL) Software License Agreement
+    | Swrule -- ^ @swrule@, swrule License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Symlinks -- ^ @Symlinks@, Symlinks License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | TAPR_OHL_1_0 -- ^ @TAPR-OHL-1.0@, TAPR Open Hardware License v1.0, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | TCL -- ^ @TCL@, TCL/TK License
+    | TCP_wrappers -- ^ @TCP-wrappers@, TCP Wrappers License
+    | TekHVC -- ^ @TekHVC@, TekHVC License, SPDX License List 3.28
+    | TermReadKey -- ^ @TermReadKey@, TermReadKey License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | TGPPL_1_0 -- ^ @TGPPL-1.0@, Transitive Grace Period Public Licence 1.0, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | ThirdEye -- ^ @ThirdEye@, ThirdEye License, SPDX License List 3.26, SPDX License List 3.28
+    | Threeparttable -- ^ @threeparttable@, threeparttable License, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | TMate -- ^ @TMate@, TMate Open Source License
+    | TORQUE_1_1 -- ^ @TORQUE-1.1@, TORQUE v2.5+ Software License v1.1
+    | TOSL -- ^ @TOSL@, Trusster Open Source License
+    | TPDL -- ^ @TPDL@, Time::ParseDate License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | TPL_1_0 -- ^ @TPL-1.0@, THOR Public License 1.0, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | TrustedQSL -- ^ @TrustedQSL@, TrustedQSL License, SPDX License List 3.26, SPDX License List 3.28
+    | TTWL -- ^ @TTWL@, Text-Tabs+Wrap License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | TTYP0 -- ^ @TTYP0@, TTYP0 License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | TU_Berlin_1_0 -- ^ @TU-Berlin-1.0@, Technische Universitaet Berlin License 1.0, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | TU_Berlin_2_0 -- ^ @TU-Berlin-2.0@, Technische Universitaet Berlin License 2.0, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Ubuntu_font_1_0 -- ^ @Ubuntu-font-1.0@, Ubuntu Font Licence v1.0, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | UCAR -- ^ @UCAR@, UCAR License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | UCL_1_0 -- ^ @UCL-1.0@, Upstream Compatibility License v1.0, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Ulem -- ^ @ulem@, ulem License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | UMich_Merit -- ^ @UMich-Merit@, Michigan/Merit Networks License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Unicode_3_0 -- ^ @Unicode-3.0@, Unicode License v3, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Unicode_DFS_2015 -- ^ @Unicode-DFS-2015@, Unicode License Agreement - Data Files and Software (2015)
+    | Unicode_DFS_2016 -- ^ @Unicode-DFS-2016@, Unicode License Agreement - Data Files and Software (2016)
+    | Unicode_TOU -- ^ @Unicode-TOU@, Unicode Terms of Use
+    | UnixCrypt -- ^ @UnixCrypt@, UnixCrypt License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Unlicense_libtelnet -- ^ @Unlicense-libtelnet@, Unlicense - libtelnet variant, SPDX License List 3.26, SPDX License List 3.28
+    | Unlicense_libwhirlpool -- ^ @Unlicense-libwhirlpool@, Unlicense - libwhirlpool variant, SPDX License List 3.26, SPDX License List 3.28
+    | Unlicense -- ^ @Unlicense@, The Unlicense
+    | UnRAR -- ^ @UnRAR@, UnRAR License, SPDX License List 3.28
+    | UPL_1_0 -- ^ @UPL-1.0@, Universal Permissive License v1.0
+    | URT_RLE -- ^ @URT-RLE@, Utah Raster Toolkit Run Length Encoded License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Vim -- ^ @Vim@, Vim License
+    | Vixie_Cron -- ^ @Vixie-Cron@, Vixie Cron License, SPDX License List 3.28
+    | VOSTROM -- ^ @VOSTROM@, VOSTROM Public License for Open Source
+    | VSL_1_0 -- ^ @VSL-1.0@, Vovida Software License v1.0
+    | W3C_19980720 -- ^ @W3C-19980720@, W3C Software Notice and License (1998-07-20)
+    | W3C_20150513 -- ^ @W3C-20150513@, W3C Software Notice and Document License (2015-05-13)
+    | W3C -- ^ @W3C@, W3C Software Notice and License (2002-12-31)
+    | W3m -- ^ @w3m@, w3m License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Watcom_1_0 -- ^ @Watcom-1.0@, Sybase Open Watcom Public License 1.0
+    | Widget_Workshop -- ^ @Widget-Workshop@, Widget Workshop License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | WordNet -- ^ @WordNet@, WordNet License, SPDX License List 3.28
+    | Wsuipa -- ^ @Wsuipa@, Wsuipa License
+    | WTFNMFPL -- ^ @WTFNMFPL@, Do What The F*ck You Want To But It's Not My Fault Public License, SPDX License List 3.28
+    | WTFPL -- ^ @WTFPL@, Do What The F*ck You Want To Public License
+    | Wwl -- ^ @wwl@, WWL License, SPDX License List 3.26, SPDX License List 3.28
+    | X11_distribute_modifications_variant -- ^ @X11-distribute-modifications-variant@, X11 License Distribution Modification Variant, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | X11_no_permit_persons -- ^ @X11-no-permit-persons@, X11 no permit persons clause, SPDX License List 3.28
+    | X11_swapped -- ^ @X11-swapped@, X11 swapped final paragraphs, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | X11 -- ^ @X11@, X11 License
+    | Xdebug_1_03 -- ^ @Xdebug-1.03@, Xdebug License v 1.03, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Xerox -- ^ @Xerox@, Xerox License
+    | Xfig -- ^ @Xfig@, Xfig License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | XFree86_1_1 -- ^ @XFree86-1.1@, XFree86 License 1.1
+    | Xinetd -- ^ @xinetd@, xinetd License
+    | Xkeyboard_config_Zinoviev -- ^ @xkeyboard-config-Zinoviev@, xkeyboard-config Zinoviev License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Xlock -- ^ @xlock@, xlock License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Xnet -- ^ @Xnet@, X.Net License
+    | Xpp -- ^ @xpp@, XPP License
+    | XSkat -- ^ @XSkat@, XSkat License
+    | Xzoom -- ^ @xzoom@, xzoom License, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | YPL_1_0 -- ^ @YPL-1.0@, Yahoo! Public License v1.0
+    | YPL_1_1 -- ^ @YPL-1.1@, Yahoo! Public License v1.1
+    | Zed -- ^ @Zed@, Zed License
+    | Zeeff -- ^ @Zeeff@, Zeeff License, SPDX License List 3.23, SPDX License List 3.25, SPDX License List 3.26, SPDX License List 3.28
+    | Zend_2_0 -- ^ @Zend-2.0@, Zend License v2.0
+    | Zimbra_1_3 -- ^ @Zimbra-1.3@, Zimbra Public License v1.3
+    | Zimbra_1_4 -- ^ @Zimbra-1.4@, Zimbra Public License v1.4
+    | Zlib_acknowledgement -- ^ @zlib-acknowledgement@, zlib/libpng License with Acknowledgement
+    | Zlib -- ^ @Zlib@, zlib License
+    | ZPL_1_1 -- ^ @ZPL-1.1@, Zope Public License 1.1
+    | ZPL_2_0 -- ^ @ZPL-2.0@, Zope Public License 2.0
+    | ZPL_2_1 -- ^ @ZPL-2.1@, Zope Public License 2.1
+  deriving (Eq, Ord, Enum, Bounded, Show, Read, Data)
+
+instance Binary LicenseId where
+    -- Word16 is encoded in big endianness
+    -- https://github.com/kolmodin/binary/blob/master/src/Data/Binary/Class.hs#L220-LL227
+    put = Binary.putWord16be . fromIntegral . fromEnum
+    get = do
+        i <- Binary.getWord16be
+        if i > fromIntegral (fromEnum (maxBound :: LicenseId))
+        then fail "Too large LicenseId tag"
+        else return (toEnum (fromIntegral i))
+
+-- note: remember to bump version each time the definition changes
+instance Structured LicenseId where
+    structure p = set typeVersion 308 $ nominalStructure p
+
+instance Pretty LicenseId where
+    pretty = Disp.text . licenseId
+
+-- |
+-- >>> eitherParsec "BSD-3-Clause" :: Either String LicenseId
+-- Right BSD_3_Clause
+--
+-- >>> eitherParsec "BSD3" :: Either String LicenseId
+-- Left "...Unknown SPDX license identifier: 'BSD3' Do you mean BSD-3-Clause?"
+--
+instance Parsec LicenseId where
+    parsec = do
+        n <- some $ P.satisfy $ \c -> isAsciiAlphaNum c || c == '-' || c == '.'
+        v <- askCabalSpecVersion
+        maybe (fail $ "Unknown SPDX license identifier: '" ++  n ++ "' " ++ licenseIdMigrationMessage n) return $
+            mkLicenseId (cabalSpecVersionToSPDXListVersion v) n
+
+instance NFData LicenseId where
+    rnf l = l `seq` ()
+
+-- | Help message for migrating from non-SPDX license identifiers.
+--
+-- Old 'License' is almost SPDX, except for 'BSD2', 'BSD3'. This function
+-- suggests SPDX variant:
+--
+-- >>> licenseIdMigrationMessage "BSD3"
+-- "Do you mean BSD-3-Clause?"
+--
+-- Also 'OtherLicense', 'AllRightsReserved', and 'PublicDomain' aren't
+-- valid SPDX identifiers
+--
+-- >>> traverse_ (print . licenseIdMigrationMessage) [ "OtherLicense", "AllRightsReserved", "PublicDomain" ]
+-- "SPDX license list contains plenty of licenses. See https://spdx.org/licenses/. Also they can be combined into complex expressions with AND and OR."
+-- "You can use NONE as a value of license field."
+-- "Public Domain is a complex matter. See https://wiki.spdx.org/view/Legal_Team/Decisions/Dealing_with_Public_Domain_within_SPDX_Files. Consider using a proper license."
+--
+-- SPDX License list version 3.0 introduced "-only" and "-or-later" variants for GNU family of licenses.
+-- See <https://spdx.org/news/news/2018/01/license-list-30-released>
+-- >>> licenseIdMigrationMessage "GPL-2.0"
+-- "SPDX license list 3.0 deprecated suffixless variants of GNU family of licenses. Use GPL-2.0-only or GPL-2.0-or-later."
+--
+-- For other common licenses their old license format coincides with the SPDX identifiers:
+--
+-- >>> traverse eitherParsec ["GPL-2.0-only", "GPL-3.0-only", "LGPL-2.1-only", "MIT", "ISC", "MPL-2.0", "Apache-2.0"] :: Either String [LicenseId]
+-- Right [GPL_2_0_only,GPL_3_0_only,LGPL_2_1_only,MIT,ISC,MPL_2_0,Apache_2_0]
+--
+licenseIdMigrationMessage :: String -> String
+licenseIdMigrationMessage = go where
+    go l | gnuVariant l    = "SPDX license list 3.0 deprecated suffixless variants of GNU family of licenses. Use " ++ l ++ "-only or " ++ l ++ "-or-later."
+    go "BSD3"              = "Do you mean BSD-3-Clause?"
+    go "BSD2"              = "Do you mean BSD-2-Clause?"
+    go "AllRightsReserved" = "You can use NONE as a value of license field."
+    go "OtherLicense"      = "SPDX license list contains plenty of licenses. See https://spdx.org/licenses/. Also they can be combined into complex expressions with AND and OR."
+    go "PublicDomain"      = "Public Domain is a complex matter. See https://wiki.spdx.org/view/Legal_Team/Decisions/Dealing_with_Public_Domain_within_SPDX_Files. Consider using a proper license."
+
+    -- otherwise, we don't know
+    go _ = ""
+
+    gnuVariant = flip elem ["GPL-2.0", "GPL-3.0", "LGPL-2.1", "LGPL-3.0", "AGPL-3.0" ]
+
+-------------------------------------------------------------------------------
+-- License Data
+-------------------------------------------------------------------------------
+
+-- | License SPDX identifier, e.g. @"BSD-3-Clause"@.
+licenseId :: LicenseId -> String
+licenseId N_0BSD = "0BSD"
+licenseId N_3D_Slicer_1_0 = "3D-Slicer-1.0"
+licenseId AAL = "AAL"
+licenseId Abstyles = "Abstyles"
+licenseId AdaCore_doc = "AdaCore-doc"
+licenseId Adobe_2006 = "Adobe-2006"
+licenseId Adobe_Display_PostScript = "Adobe-Display-PostScript"
+licenseId Adobe_Glyph = "Adobe-Glyph"
+licenseId Adobe_Utopia = "Adobe-Utopia"
+licenseId ADSL = "ADSL"
+licenseId Advanced_Cryptics_Dictionary = "Advanced-Cryptics-Dictionary"
+licenseId AFL_1_1 = "AFL-1.1"
+licenseId AFL_1_2 = "AFL-1.2"
+licenseId AFL_2_0 = "AFL-2.0"
+licenseId AFL_2_1 = "AFL-2.1"
+licenseId AFL_3_0 = "AFL-3.0"
+licenseId Afmparse = "Afmparse"
+licenseId AGPL_1_0 = "AGPL-1.0"
+licenseId AGPL_1_0_only = "AGPL-1.0-only"
+licenseId AGPL_1_0_or_later = "AGPL-1.0-or-later"
+licenseId AGPL_3_0_only = "AGPL-3.0-only"
+licenseId AGPL_3_0_or_later = "AGPL-3.0-or-later"
+licenseId Aladdin = "Aladdin"
+licenseId ALGLIB_Documentation = "ALGLIB-Documentation"
+licenseId AMD_newlib = "AMD-newlib"
+licenseId AMDPLPA = "AMDPLPA"
+licenseId AML_glslang = "AML-glslang"
+licenseId AML = "AML"
+licenseId AMPAS = "AMPAS"
+licenseId ANTLR_PD_fallback = "ANTLR-PD-fallback"
+licenseId ANTLR_PD = "ANTLR-PD"
+licenseId Any_OSI_perl_modules = "any-OSI-perl-modules"
+licenseId Any_OSI = "any-OSI"
+licenseId Apache_1_0 = "Apache-1.0"
+licenseId Apache_1_1 = "Apache-1.1"
+licenseId Apache_2_0 = "Apache-2.0"
+licenseId APAFML = "APAFML"
+licenseId APL_1_0 = "APL-1.0"
+licenseId App_s2p = "App-s2p"
+licenseId APSL_1_0 = "APSL-1.0"
+licenseId APSL_1_1 = "APSL-1.1"
+licenseId APSL_1_2 = "APSL-1.2"
+licenseId APSL_2_0 = "APSL-2.0"
+licenseId Arphic_1999 = "Arphic-1999"
+licenseId Artistic_1_0_cl8 = "Artistic-1.0-cl8"
+licenseId Artistic_1_0_Perl = "Artistic-1.0-Perl"
+licenseId Artistic_1_0 = "Artistic-1.0"
+licenseId Artistic_2_0 = "Artistic-2.0"
+licenseId Artistic_dist = "Artistic-dist"
+licenseId Aspell_RU = "Aspell-RU"
+licenseId ASWF_Digital_Assets_1_0 = "ASWF-Digital-Assets-1.0"
+licenseId ASWF_Digital_Assets_1_1 = "ASWF-Digital-Assets-1.1"
+licenseId Baekmuk = "Baekmuk"
+licenseId Bahyph = "Bahyph"
+licenseId Barr = "Barr"
+licenseId Bcrypt_Solar_Designer = "bcrypt-Solar-Designer"
+licenseId Beerware = "Beerware"
+licenseId Bitstream_Charter = "Bitstream-Charter"
+licenseId Bitstream_Vera = "Bitstream-Vera"
+licenseId BitTorrent_1_0 = "BitTorrent-1.0"
+licenseId BitTorrent_1_1 = "BitTorrent-1.1"
+licenseId Blessing = "blessing"
+licenseId BlueOak_1_0_0 = "BlueOak-1.0.0"
+licenseId Boehm_GC_without_fee = "Boehm-GC-without-fee"
+licenseId Boehm_GC = "Boehm-GC"
+licenseId BOLA_1_1 = "BOLA-1.1"
+licenseId Borceux = "Borceux"
+licenseId Brian_Gladman_2_Clause = "Brian-Gladman-2-Clause"
+licenseId Brian_Gladman_3_Clause = "Brian-Gladman-3-Clause"
+licenseId BSD_1_Clause = "BSD-1-Clause"
+licenseId BSD_2_Clause_FreeBSD = "BSD-2-Clause-FreeBSD"
+licenseId BSD_2_Clause_NetBSD = "BSD-2-Clause-NetBSD"
+licenseId BSD_2_Clause_Darwin = "BSD-2-Clause-Darwin"
+licenseId BSD_2_Clause_first_lines = "BSD-2-Clause-first-lines"
+licenseId BSD_2_Clause_Patent = "BSD-2-Clause-Patent"
+licenseId BSD_2_Clause_pkgconf_disclaimer = "BSD-2-Clause-pkgconf-disclaimer"
+licenseId BSD_2_Clause_Views = "BSD-2-Clause-Views"
+licenseId BSD_2_Clause = "BSD-2-Clause"
+licenseId BSD_3_Clause_acpica = "BSD-3-Clause-acpica"
+licenseId BSD_3_Clause_Attribution = "BSD-3-Clause-Attribution"
+licenseId BSD_3_Clause_Clear = "BSD-3-Clause-Clear"
+licenseId BSD_3_Clause_flex = "BSD-3-Clause-flex"
+licenseId BSD_3_Clause_HP = "BSD-3-Clause-HP"
+licenseId BSD_3_Clause_LBNL = "BSD-3-Clause-LBNL"
+licenseId BSD_3_Clause_Modification = "BSD-3-Clause-Modification"
+licenseId BSD_3_Clause_No_Military_License = "BSD-3-Clause-No-Military-License"
+licenseId BSD_3_Clause_No_Nuclear_License_2014 = "BSD-3-Clause-No-Nuclear-License-2014"
+licenseId BSD_3_Clause_No_Nuclear_License = "BSD-3-Clause-No-Nuclear-License"
+licenseId BSD_3_Clause_No_Nuclear_Warranty = "BSD-3-Clause-No-Nuclear-Warranty"
+licenseId BSD_3_Clause_Open_MPI = "BSD-3-Clause-Open-MPI"
+licenseId BSD_3_Clause_Sun = "BSD-3-Clause-Sun"
+licenseId BSD_3_Clause_Tso = "BSD-3-Clause-Tso"
+licenseId BSD_3_Clause = "BSD-3-Clause"
+licenseId BSD_4_Clause_Shortened = "BSD-4-Clause-Shortened"
+licenseId BSD_4_Clause_UC = "BSD-4-Clause-UC"
+licenseId BSD_4_Clause = "BSD-4-Clause"
+licenseId BSD_4_3RENO = "BSD-4.3RENO"
+licenseId BSD_4_3TAHOE = "BSD-4.3TAHOE"
+licenseId BSD_Advertising_Acknowledgement = "BSD-Advertising-Acknowledgement"
+licenseId BSD_Attribution_HPND_disclaimer = "BSD-Attribution-HPND-disclaimer"
+licenseId BSD_Inferno_Nettverk = "BSD-Inferno-Nettverk"
+licenseId BSD_Mark_Modifications = "BSD-Mark-Modifications"
+licenseId BSD_Protection = "BSD-Protection"
+licenseId BSD_Source_beginning_file = "BSD-Source-beginning-file"
+licenseId BSD_Source_Code = "BSD-Source-Code"
+licenseId BSD_Systemics_W3Works = "BSD-Systemics-W3Works"
+licenseId BSD_Systemics = "BSD-Systemics"
+licenseId BSL_1_0 = "BSL-1.0"
+licenseId Bzip2_1_0_5 = "bzip2-1.0.5"
+licenseId Buddy = "Buddy"
+licenseId BUSL_1_1 = "BUSL-1.1"
+licenseId Bzip2_1_0_6 = "bzip2-1.0.6"
+licenseId C_UDA_1_0 = "C-UDA-1.0"
+licenseId CAL_1_0_Combined_Work_Exception = "CAL-1.0-Combined-Work-Exception"
+licenseId CAL_1_0 = "CAL-1.0"
+licenseId Caldera_no_preamble = "Caldera-no-preamble"
+licenseId Caldera = "Caldera"
+licenseId CAPEC_tou = "CAPEC-tou"
+licenseId Catharon = "Catharon"
+licenseId CATOSL_1_1 = "CATOSL-1.1"
+licenseId CC_BY_1_0 = "CC-BY-1.0"
+licenseId CC_BY_2_0 = "CC-BY-2.0"
+licenseId CC_BY_2_5_AU = "CC-BY-2.5-AU"
+licenseId CC_BY_2_5 = "CC-BY-2.5"
+licenseId CC_BY_3_0_AT = "CC-BY-3.0-AT"
+licenseId CC_BY_3_0_AU = "CC-BY-3.0-AU"
+licenseId CC_BY_3_0_DE = "CC-BY-3.0-DE"
+licenseId CC_BY_3_0_IGO = "CC-BY-3.0-IGO"
+licenseId CC_BY_3_0_NL = "CC-BY-3.0-NL"
+licenseId CC_BY_3_0_US = "CC-BY-3.0-US"
+licenseId CC_BY_3_0 = "CC-BY-3.0"
+licenseId CC_BY_4_0 = "CC-BY-4.0"
+licenseId CC_BY_NC_1_0 = "CC-BY-NC-1.0"
+licenseId CC_BY_NC_2_0 = "CC-BY-NC-2.0"
+licenseId CC_BY_NC_2_5 = "CC-BY-NC-2.5"
+licenseId CC_BY_NC_3_0_DE = "CC-BY-NC-3.0-DE"
+licenseId CC_BY_NC_3_0 = "CC-BY-NC-3.0"
+licenseId CC_BY_NC_4_0 = "CC-BY-NC-4.0"
+licenseId CC_BY_NC_ND_1_0 = "CC-BY-NC-ND-1.0"
+licenseId CC_BY_NC_ND_2_0 = "CC-BY-NC-ND-2.0"
+licenseId CC_BY_NC_ND_2_5 = "CC-BY-NC-ND-2.5"
+licenseId CC_BY_NC_ND_3_0_DE = "CC-BY-NC-ND-3.0-DE"
+licenseId CC_BY_NC_ND_3_0_IGO = "CC-BY-NC-ND-3.0-IGO"
+licenseId CC_BY_NC_ND_3_0 = "CC-BY-NC-ND-3.0"
+licenseId CC_BY_NC_ND_4_0 = "CC-BY-NC-ND-4.0"
+licenseId CC_BY_NC_SA_1_0 = "CC-BY-NC-SA-1.0"
+licenseId CC_BY_NC_SA_2_0_DE = "CC-BY-NC-SA-2.0-DE"
+licenseId CC_BY_NC_SA_2_0_FR = "CC-BY-NC-SA-2.0-FR"
+licenseId CC_BY_NC_SA_2_0_UK = "CC-BY-NC-SA-2.0-UK"
+licenseId CC_BY_NC_SA_2_0 = "CC-BY-NC-SA-2.0"
+licenseId CC_BY_NC_SA_2_5 = "CC-BY-NC-SA-2.5"
+licenseId CC_BY_NC_SA_3_0_DE = "CC-BY-NC-SA-3.0-DE"
+licenseId CC_BY_NC_SA_3_0_IGO = "CC-BY-NC-SA-3.0-IGO"
+licenseId CC_BY_NC_SA_3_0 = "CC-BY-NC-SA-3.0"
+licenseId CC_BY_NC_SA_4_0 = "CC-BY-NC-SA-4.0"
+licenseId CC_BY_ND_1_0 = "CC-BY-ND-1.0"
+licenseId CC_BY_ND_2_0 = "CC-BY-ND-2.0"
+licenseId CC_BY_ND_2_5 = "CC-BY-ND-2.5"
+licenseId CC_BY_ND_3_0_DE = "CC-BY-ND-3.0-DE"
+licenseId CC_BY_ND_3_0 = "CC-BY-ND-3.0"
+licenseId CC_BY_ND_4_0 = "CC-BY-ND-4.0"
+licenseId CC_BY_SA_1_0 = "CC-BY-SA-1.0"
+licenseId CC_BY_SA_2_0_UK = "CC-BY-SA-2.0-UK"
+licenseId CC_BY_SA_2_0 = "CC-BY-SA-2.0"
+licenseId CC_BY_SA_2_1_JP = "CC-BY-SA-2.1-JP"
+licenseId CC_BY_SA_2_5 = "CC-BY-SA-2.5"
+licenseId CC_BY_SA_3_0_AT = "CC-BY-SA-3.0-AT"
+licenseId CC_BY_SA_3_0_DE = "CC-BY-SA-3.0-DE"
+licenseId CC_BY_SA_3_0_IGO = "CC-BY-SA-3.0-IGO"
+licenseId CC_BY_SA_3_0 = "CC-BY-SA-3.0"
+licenseId CC_BY_SA_4_0 = "CC-BY-SA-4.0"
+licenseId CC_PDDC = "CC-PDDC"
+licenseId CC_PDM_1_0 = "CC-PDM-1.0"
+licenseId CC_SA_1_0 = "CC-SA-1.0"
+licenseId CC0_1_0 = "CC0-1.0"
+licenseId CDDL_1_0 = "CDDL-1.0"
+licenseId CDDL_1_1 = "CDDL-1.1"
+licenseId CDL_1_0 = "CDL-1.0"
+licenseId CDLA_Permissive_1_0 = "CDLA-Permissive-1.0"
+licenseId CDLA_Permissive_2_0 = "CDLA-Permissive-2.0"
+licenseId CDLA_Sharing_1_0 = "CDLA-Sharing-1.0"
+licenseId CECILL_1_0 = "CECILL-1.0"
+licenseId CECILL_1_1 = "CECILL-1.1"
+licenseId CECILL_2_0 = "CECILL-2.0"
+licenseId CECILL_2_1 = "CECILL-2.1"
+licenseId CECILL_B = "CECILL-B"
+licenseId CECILL_C = "CECILL-C"
+licenseId CERN_OHL_1_1 = "CERN-OHL-1.1"
+licenseId CERN_OHL_1_2 = "CERN-OHL-1.2"
+licenseId CERN_OHL_P_2_0 = "CERN-OHL-P-2.0"
+licenseId CERN_OHL_S_2_0 = "CERN-OHL-S-2.0"
+licenseId CERN_OHL_W_2_0 = "CERN-OHL-W-2.0"
+licenseId CFITSIO = "CFITSIO"
+licenseId Check_cvs = "check-cvs"
+licenseId Checkmk = "checkmk"
+licenseId ClArtistic = "ClArtistic"
+licenseId Clips = "Clips"
+licenseId CMU_Mach_nodoc = "CMU-Mach-nodoc"
+licenseId CMU_Mach = "CMU-Mach"
+licenseId CNRI_Jython = "CNRI-Jython"
+licenseId CNRI_Python_GPL_Compatible = "CNRI-Python-GPL-Compatible"
+licenseId CNRI_Python = "CNRI-Python"
+licenseId COIL_1_0 = "COIL-1.0"
+licenseId Community_Spec_1_0 = "Community-Spec-1.0"
+licenseId Condor_1_1 = "Condor-1.1"
+licenseId Copyleft_next_0_3_0 = "copyleft-next-0.3.0"
+licenseId Copyleft_next_0_3_1 = "copyleft-next-0.3.1"
+licenseId Cornell_Lossless_JPEG = "Cornell-Lossless-JPEG"
+licenseId CPAL_1_0 = "CPAL-1.0"
+licenseId CPL_1_0 = "CPL-1.0"
+licenseId CPOL_1_02 = "CPOL-1.02"
+licenseId Cronyx = "Cronyx"
+licenseId Crossword = "Crossword"
+licenseId CryptoSwift = "CryptoSwift"
+licenseId CrystalStacker = "CrystalStacker"
+licenseId CUA_OPL_1_0 = "CUA-OPL-1.0"
+licenseId Cube = "Cube"
+licenseId Curl = "curl"
+licenseId Cve_tou = "cve-tou"
+licenseId D_FSL_1_0 = "D-FSL-1.0"
+licenseId DEC_3_Clause = "DEC-3-Clause"
+licenseId Diffmark = "diffmark"
+licenseId DL_DE_BY_2_0 = "DL-DE-BY-2.0"
+licenseId DL_DE_ZERO_2_0 = "DL-DE-ZERO-2.0"
+licenseId DocBook_DTD = "DocBook-DTD"
+licenseId DocBook_Schema = "DocBook-Schema"
+licenseId DocBook_Stylesheet = "DocBook-Stylesheet"
+licenseId DocBook_XML = "DocBook-XML"
+licenseId DOC = "DOC"
+licenseId Dotseqn = "Dotseqn"
+licenseId DRL_1_0 = "DRL-1.0"
+licenseId DRL_1_1 = "DRL-1.1"
+licenseId DSDP = "DSDP"
+licenseId Dtoa = "dtoa"
+licenseId Dvipdfm = "dvipdfm"
+licenseId ECL_1_0 = "ECL-1.0"
+licenseId ECL_2_0 = "ECL-2.0"
+licenseId EFL_1_0 = "EFL-1.0"
+licenseId EFL_2_0 = "EFL-2.0"
+licenseId EGenix = "eGenix"
+licenseId Elastic_2_0 = "Elastic-2.0"
+licenseId Entessa = "Entessa"
+licenseId EPICS = "EPICS"
+licenseId EPL_1_0 = "EPL-1.0"
+licenseId EPL_2_0 = "EPL-2.0"
+licenseId ErlPL_1_1 = "ErlPL-1.1"
+licenseId ESA_PL_permissive_2_4 = "ESA-PL-permissive-2.4"
+licenseId ESA_PL_strong_copyleft_2_4 = "ESA-PL-strong-copyleft-2.4"
+licenseId ESA_PL_weak_copyleft_2_4 = "ESA-PL-weak-copyleft-2.4"
+licenseId Etalab_2_0 = "etalab-2.0"
+licenseId EUDatagrid = "EUDatagrid"
+licenseId EUPL_1_0 = "EUPL-1.0"
+licenseId EUPL_1_1 = "EUPL-1.1"
+licenseId EUPL_1_2 = "EUPL-1.2"
+licenseId Eurosym = "Eurosym"
+licenseId Fair = "Fair"
+licenseId FBM = "FBM"
+licenseId FDK_AAC = "FDK-AAC"
+licenseId Ferguson_Twofish = "Ferguson-Twofish"
+licenseId Frameworx_1_0 = "Frameworx-1.0"
+licenseId FreeBSD_DOC = "FreeBSD-DOC"
+licenseId FreeImage = "FreeImage"
+licenseId FSFAP_no_warranty_disclaimer = "FSFAP-no-warranty-disclaimer"
+licenseId FSFAP = "FSFAP"
+licenseId FSFULLRSD = "FSFULLRSD"
+licenseId FSFULLRWD = "FSFULLRWD"
+licenseId FSFULLR = "FSFULLR"
+licenseId FSFUL = "FSFUL"
+licenseId FSL_1_1_ALv2 = "FSL-1.1-ALv2"
+licenseId FSL_1_1_MIT = "FSL-1.1-MIT"
+licenseId FTL = "FTL"
+licenseId Furuseth = "Furuseth"
+licenseId Fwlw = "fwlw"
+licenseId Game_Programming_Gems = "Game-Programming-Gems"
+licenseId GCR_docs = "GCR-docs"
+licenseId GD = "GD"
+licenseId Generic_xts = "generic-xts"
+licenseId GFDL_1_1_invariants_only = "GFDL-1.1-invariants-only"
+licenseId GFDL_1_1_invariants_or_later = "GFDL-1.1-invariants-or-later"
+licenseId GFDL_1_1_no_invariants_only = "GFDL-1.1-no-invariants-only"
+licenseId GFDL_1_1_no_invariants_or_later = "GFDL-1.1-no-invariants-or-later"
+licenseId GFDL_1_1_only = "GFDL-1.1-only"
+licenseId GFDL_1_1_or_later = "GFDL-1.1-or-later"
+licenseId GFDL_1_2_invariants_only = "GFDL-1.2-invariants-only"
+licenseId GFDL_1_2_invariants_or_later = "GFDL-1.2-invariants-or-later"
+licenseId GFDL_1_2_no_invariants_only = "GFDL-1.2-no-invariants-only"
+licenseId GFDL_1_2_no_invariants_or_later = "GFDL-1.2-no-invariants-or-later"
+licenseId GFDL_1_2_only = "GFDL-1.2-only"
+licenseId GFDL_1_2_or_later = "GFDL-1.2-or-later"
+licenseId GFDL_1_3_invariants_only = "GFDL-1.3-invariants-only"
+licenseId GFDL_1_3_invariants_or_later = "GFDL-1.3-invariants-or-later"
+licenseId GFDL_1_3_no_invariants_only = "GFDL-1.3-no-invariants-only"
+licenseId GFDL_1_3_no_invariants_or_later = "GFDL-1.3-no-invariants-or-later"
+licenseId GFDL_1_3_only = "GFDL-1.3-only"
+licenseId GFDL_1_3_or_later = "GFDL-1.3-or-later"
+licenseId Giftware = "Giftware"
+licenseId GL2PS = "GL2PS"
+licenseId Glide = "Glide"
+licenseId Glulxe = "Glulxe"
+licenseId GLWTPL = "GLWTPL"
+licenseId Gnuplot = "gnuplot"
+licenseId GPL_1_0_only = "GPL-1.0-only"
+licenseId GPL_1_0_or_later = "GPL-1.0-or-later"
+licenseId GPL_2_0_only = "GPL-2.0-only"
+licenseId GPL_2_0_or_later = "GPL-2.0-or-later"
+licenseId GPL_3_0_only = "GPL-3.0-only"
+licenseId GPL_3_0_or_later = "GPL-3.0-or-later"
+licenseId Graphics_Gems = "Graphics-Gems"
+licenseId GSOAP_1_3b = "gSOAP-1.3b"
+licenseId Gtkbook = "gtkbook"
+licenseId Gutmann = "Gutmann"
+licenseId HaskellReport = "HaskellReport"
+licenseId HDF5 = "HDF5"
+licenseId Hdparm = "hdparm"
+licenseId HIDAPI = "HIDAPI"
+licenseId Hippocratic_2_1 = "Hippocratic-2.1"
+licenseId HP_1986 = "HP-1986"
+licenseId HP_1989 = "HP-1989"
+licenseId HPND_DEC = "HPND-DEC"
+licenseId HPND_doc_sell = "HPND-doc-sell"
+licenseId HPND_doc = "HPND-doc"
+licenseId HPND_export_US_acknowledgement = "HPND-export-US-acknowledgement"
+licenseId HPND_export_US_modify = "HPND-export-US-modify"
+licenseId HPND_export_US = "HPND-export-US"
+licenseId HPND_export2_US = "HPND-export2-US"
+licenseId HPND_Fenneberg_Livingston = "HPND-Fenneberg-Livingston"
+licenseId HPND_INRIA_IMAG = "HPND-INRIA-IMAG"
+licenseId HPND_Intel = "HPND-Intel"
+licenseId HPND_Kevlin_Henney = "HPND-Kevlin-Henney"
+licenseId HPND_Markus_Kuhn = "HPND-Markus-Kuhn"
+licenseId HPND_merchantability_variant = "HPND-merchantability-variant"
+licenseId HPND_MIT_disclaimer = "HPND-MIT-disclaimer"
+licenseId HPND_Netrek = "HPND-Netrek"
+licenseId HPND_Pbmplus = "HPND-Pbmplus"
+licenseId HPND_sell_MIT_disclaimer_xserver = "HPND-sell-MIT-disclaimer-xserver"
+licenseId HPND_sell_regexpr = "HPND-sell-regexpr"
+licenseId HPND_sell_variant_critical_systems = "HPND-sell-variant-critical-systems"
+licenseId HPND_sell_variant_MIT_disclaimer_rev = "HPND-sell-variant-MIT-disclaimer-rev"
+licenseId HPND_sell_variant_MIT_disclaimer = "HPND-sell-variant-MIT-disclaimer"
+licenseId HPND_sell_variant = "HPND-sell-variant"
+licenseId HPND_SMC = "HPND-SMC"
+licenseId HPND_UC_export_US = "HPND-UC-export-US"
+licenseId HPND_UC = "HPND-UC"
+licenseId HPND = "HPND"
+licenseId HTMLTIDY = "HTMLTIDY"
+licenseId Hyphen_bulgarian = "hyphen-bulgarian"
+licenseId IBM_pibs = "IBM-pibs"
+licenseId ICU = "ICU"
+licenseId IEC_Code_Components_EULA = "IEC-Code-Components-EULA"
+licenseId IJG_short = "IJG-short"
+licenseId IJG = "IJG"
+licenseId ImageMagick = "ImageMagick"
+licenseId IMatix = "iMatix"
+licenseId Imlib2 = "Imlib2"
+licenseId Info_ZIP = "Info-ZIP"
+licenseId Inner_Net_2_0 = "Inner-Net-2.0"
+licenseId InnoSetup = "InnoSetup"
+licenseId Intel_ACPI = "Intel-ACPI"
+licenseId Intel = "Intel"
+licenseId Interbase_1_0 = "Interbase-1.0"
+licenseId IPA = "IPA"
+licenseId IPL_1_0 = "IPL-1.0"
+licenseId ISC_Veillard = "ISC-Veillard"
+licenseId ISC = "ISC"
+licenseId ISO_permission = "ISO-permission"
+licenseId Jam = "Jam"
+licenseId JasPer_2_0 = "JasPer-2.0"
+licenseId Jove = "jove"
+licenseId JPL_image = "JPL-image"
+licenseId JPNIC = "JPNIC"
+licenseId JSON = "JSON"
+licenseId Kastrup = "Kastrup"
+licenseId Kazlib = "Kazlib"
+licenseId Knuth_CTAN = "Knuth-CTAN"
+licenseId LAL_1_2 = "LAL-1.2"
+licenseId LAL_1_3 = "LAL-1.3"
+licenseId Latex2e_translated_notice = "Latex2e-translated-notice"
+licenseId Latex2e = "Latex2e"
+licenseId Leptonica = "Leptonica"
+licenseId LGPL_2_0_only = "LGPL-2.0-only"
+licenseId LGPL_2_0_or_later = "LGPL-2.0-or-later"
+licenseId LGPL_2_1_only = "LGPL-2.1-only"
+licenseId LGPL_2_1_or_later = "LGPL-2.1-or-later"
+licenseId LGPL_3_0_only = "LGPL-3.0-only"
+licenseId LGPL_3_0_or_later = "LGPL-3.0-or-later"
+licenseId LGPLLR = "LGPLLR"
+licenseId Libpng_1_6_35 = "libpng-1.6.35"
+licenseId Libpng_2_0 = "libpng-2.0"
+licenseId Libpng = "Libpng"
+licenseId Libselinux_1_0 = "libselinux-1.0"
+licenseId Libtiff = "libtiff"
+licenseId Libutil_David_Nugent = "libutil-David-Nugent"
+licenseId LiLiQ_P_1_1 = "LiLiQ-P-1.1"
+licenseId LiLiQ_R_1_1 = "LiLiQ-R-1.1"
+licenseId LiLiQ_Rplus_1_1 = "LiLiQ-Rplus-1.1"
+licenseId Linux_man_pages_1_para = "Linux-man-pages-1-para"
+licenseId Linux_man_pages_copyleft_2_para = "Linux-man-pages-copyleft-2-para"
+licenseId Linux_man_pages_copyleft_var = "Linux-man-pages-copyleft-var"
+licenseId Linux_man_pages_copyleft = "Linux-man-pages-copyleft"
+licenseId Linux_OpenIB = "Linux-OpenIB"
+licenseId LOOP = "LOOP"
+licenseId LPD_document = "LPD-document"
+licenseId LPL_1_02 = "LPL-1.02"
+licenseId LPL_1_0 = "LPL-1.0"
+licenseId LPPL_1_0 = "LPPL-1.0"
+licenseId LPPL_1_1 = "LPPL-1.1"
+licenseId LPPL_1_2 = "LPPL-1.2"
+licenseId LPPL_1_3a = "LPPL-1.3a"
+licenseId LPPL_1_3c = "LPPL-1.3c"
+licenseId Lsof = "lsof"
+licenseId Lucida_Bitmap_Fonts = "Lucida-Bitmap-Fonts"
+licenseId LZMA_SDK_9_11_to_9_20 = "LZMA-SDK-9.11-to-9.20"
+licenseId LZMA_SDK_9_22 = "LZMA-SDK-9.22"
+licenseId Mackerras_3_Clause_acknowledgment = "Mackerras-3-Clause-acknowledgment"
+licenseId Mackerras_3_Clause = "Mackerras-3-Clause"
+licenseId Magaz = "magaz"
+licenseId Mailprio = "mailprio"
+licenseId MakeIndex = "MakeIndex"
+licenseId Man2html = "man2html"
+licenseId Martin_Birgmeier = "Martin-Birgmeier"
+licenseId McPhee_slideshow = "McPhee-slideshow"
+licenseId Metamail = "metamail"
+licenseId Minpack = "Minpack"
+licenseId MIPS = "MIPS"
+licenseId MirOS = "MirOS"
+licenseId MIT_0 = "MIT-0"
+licenseId MIT_advertising = "MIT-advertising"
+licenseId MIT_Click = "MIT-Click"
+licenseId MIT_CMU = "MIT-CMU"
+licenseId MIT_enna = "MIT-enna"
+licenseId MIT_feh = "MIT-feh"
+licenseId MIT_Festival = "MIT-Festival"
+licenseId MIT_Khronos_old = "MIT-Khronos-old"
+licenseId MIT_Modern_Variant = "MIT-Modern-Variant"
+licenseId MIT_open_group = "MIT-open-group"
+licenseId MIT_STK = "MIT-STK"
+licenseId MIT_testregex = "MIT-testregex"
+licenseId MIT_Wu = "MIT-Wu"
+licenseId MITNFA = "MITNFA"
+licenseId MIT = "MIT"
+licenseId MMIXware = "MMIXware"
+licenseId MMPL_1_0_1 = "MMPL-1.0.1"
+licenseId Motosoto = "Motosoto"
+licenseId MPEG_SSG = "MPEG-SSG"
+licenseId Mpi_permissive = "mpi-permissive"
+licenseId Mpich2 = "mpich2"
+licenseId MPL_1_0 = "MPL-1.0"
+licenseId MPL_1_1 = "MPL-1.1"
+licenseId MPL_2_0_no_copyleft_exception = "MPL-2.0-no-copyleft-exception"
+licenseId MPL_2_0 = "MPL-2.0"
+licenseId Mplus = "mplus"
+licenseId MS_LPL = "MS-LPL"
+licenseId MS_PL = "MS-PL"
+licenseId MS_RL = "MS-RL"
+licenseId MTLL = "MTLL"
+licenseId MulanPSL_1_0 = "MulanPSL-1.0"
+licenseId MulanPSL_2_0 = "MulanPSL-2.0"
+licenseId Multics = "Multics"
+licenseId Mup = "Mup"
+licenseId NAIST_2003 = "NAIST-2003"
+licenseId NASA_1_3 = "NASA-1.3"
+licenseId Naumen = "Naumen"
+licenseId NBPL_1_0 = "NBPL-1.0"
+licenseId NCBI_PD = "NCBI-PD"
+licenseId NCGL_UK_2_0 = "NCGL-UK-2.0"
+licenseId NCL = "NCL"
+licenseId NCSA = "NCSA"
+licenseId Net_SNMP = "Net-SNMP"
+licenseId NetCDF = "NetCDF"
+licenseId Newsletr = "Newsletr"
+licenseId NGPL = "NGPL"
+licenseId Ngrep = "ngrep"
+licenseId NICTA_1_0 = "NICTA-1.0"
+licenseId NIST_PD_fallback = "NIST-PD-fallback"
+licenseId NIST_PD_TNT = "NIST-PD-TNT"
+licenseId NIST_PD = "NIST-PD"
+licenseId NIST_Software = "NIST-Software"
+licenseId NLOD_1_0 = "NLOD-1.0"
+licenseId NLOD_2_0 = "NLOD-2.0"
+licenseId NLPL = "NLPL"
+licenseId Nokia = "Nokia"
+licenseId NOSL = "NOSL"
+licenseId Noweb = "Noweb"
+licenseId NPL_1_0 = "NPL-1.0"
+licenseId NPL_1_1 = "NPL-1.1"
+licenseId NPOSL_3_0 = "NPOSL-3.0"
+licenseId NRL = "NRL"
+licenseId NTIA_PD = "NTIA-PD"
+licenseId NTP_0 = "NTP-0"
+licenseId NTP = "NTP"
+licenseId O_UDA_1_0 = "O-UDA-1.0"
+licenseId OAR = "OAR"
+licenseId OCCT_PL = "OCCT-PL"
+licenseId OCLC_2_0 = "OCLC-2.0"
+licenseId ODbL_1_0 = "ODbL-1.0"
+licenseId ODC_By_1_0 = "ODC-By-1.0"
+licenseId OFFIS = "OFFIS"
+licenseId OFL_1_0_no_RFN = "OFL-1.0-no-RFN"
+licenseId OFL_1_0_RFN = "OFL-1.0-RFN"
+licenseId OFL_1_0 = "OFL-1.0"
+licenseId OFL_1_1_no_RFN = "OFL-1.1-no-RFN"
+licenseId OFL_1_1_RFN = "OFL-1.1-RFN"
+licenseId OFL_1_1 = "OFL-1.1"
+licenseId OGC_1_0 = "OGC-1.0"
+licenseId OGDL_Taiwan_1_0 = "OGDL-Taiwan-1.0"
+licenseId OGL_Canada_2_0 = "OGL-Canada-2.0"
+licenseId OGL_UK_1_0 = "OGL-UK-1.0"
+licenseId OGL_UK_2_0 = "OGL-UK-2.0"
+licenseId OGL_UK_3_0 = "OGL-UK-3.0"
+licenseId OGTSL = "OGTSL"
+licenseId OLDAP_1_1 = "OLDAP-1.1"
+licenseId OLDAP_1_2 = "OLDAP-1.2"
+licenseId OLDAP_1_3 = "OLDAP-1.3"
+licenseId OLDAP_1_4 = "OLDAP-1.4"
+licenseId OLDAP_2_0_1 = "OLDAP-2.0.1"
+licenseId OLDAP_2_0 = "OLDAP-2.0"
+licenseId OLDAP_2_1 = "OLDAP-2.1"
+licenseId OLDAP_2_2_1 = "OLDAP-2.2.1"
+licenseId OLDAP_2_2_2 = "OLDAP-2.2.2"
+licenseId OLDAP_2_2 = "OLDAP-2.2"
+licenseId OLDAP_2_3 = "OLDAP-2.3"
+licenseId OLDAP_2_4 = "OLDAP-2.4"
+licenseId OLDAP_2_5 = "OLDAP-2.5"
+licenseId OLDAP_2_6 = "OLDAP-2.6"
+licenseId OLDAP_2_7 = "OLDAP-2.7"
+licenseId OLDAP_2_8 = "OLDAP-2.8"
+licenseId OLFL_1_3 = "OLFL-1.3"
+licenseId OML = "OML"
+licenseId OpenMDW_1_0 = "OpenMDW-1.0"
+licenseId OpenPBS_2_3 = "OpenPBS-2.3"
+licenseId OpenSSL_standalone = "OpenSSL-standalone"
+licenseId OpenSSL = "OpenSSL"
+licenseId OpenVision = "OpenVision"
+licenseId OPL_1_0 = "OPL-1.0"
+licenseId OPL_UK_3_0 = "OPL-UK-3.0"
+licenseId OPUBL_1_0 = "OPUBL-1.0"
+licenseId OSC_1_0 = "OSC-1.0"
+licenseId OSET_PL_2_1 = "OSET-PL-2.1"
+licenseId OSL_1_0 = "OSL-1.0"
+licenseId OSL_1_1 = "OSL-1.1"
+licenseId OSL_2_0 = "OSL-2.0"
+licenseId OSL_2_1 = "OSL-2.1"
+licenseId OSL_3_0 = "OSL-3.0"
+licenseId OSSP = "OSSP"
+licenseId PADL = "PADL"
+licenseId ParaType_Free_Font_1_3 = "ParaType-Free-Font-1.3"
+licenseId Parity_6_0_0 = "Parity-6.0.0"
+licenseId Parity_7_0_0 = "Parity-7.0.0"
+licenseId PDDL_1_0 = "PDDL-1.0"
+licenseId PHP_3_01 = "PHP-3.01"
+licenseId PHP_3_0 = "PHP-3.0"
+licenseId Pixar = "Pixar"
+licenseId Pkgconf = "pkgconf"
+licenseId Plexus = "Plexus"
+licenseId Pnmstitch = "pnmstitch"
+licenseId PolyForm_Noncommercial_1_0_0 = "PolyForm-Noncommercial-1.0.0"
+licenseId PolyForm_Small_Business_1_0_0 = "PolyForm-Small-Business-1.0.0"
+licenseId PostgreSQL = "PostgreSQL"
+licenseId PPL = "PPL"
+licenseId PSF_2_0 = "PSF-2.0"
+licenseId Psfrag = "psfrag"
+licenseId Psutils = "psutils"
+licenseId Python_2_0_1 = "Python-2.0.1"
+licenseId Python_2_0 = "Python-2.0"
+licenseId Python_ldap = "python-ldap"
+licenseId Qhull = "Qhull"
+licenseId QPL_1_0_INRIA_2004 = "QPL-1.0-INRIA-2004"
+licenseId QPL_1_0 = "QPL-1.0"
+licenseId Radvd = "radvd"
+licenseId Rdisc = "Rdisc"
+licenseId RHeCos_1_1 = "RHeCos-1.1"
+licenseId RPL_1_1 = "RPL-1.1"
+licenseId RPL_1_5 = "RPL-1.5"
+licenseId RPSL_1_0 = "RPSL-1.0"
+licenseId RSA_MD = "RSA-MD"
+licenseId RSCPL = "RSCPL"
+licenseId Ruby_pty = "Ruby-pty"
+licenseId Ruby = "Ruby"
+licenseId SAX_PD_2_0 = "SAX-PD-2.0"
+licenseId SAX_PD = "SAX-PD"
+licenseId Saxpath = "Saxpath"
+licenseId SCEA = "SCEA"
+licenseId SchemeReport = "SchemeReport"
+licenseId Sendmail_8_23 = "Sendmail-8.23"
+licenseId Sendmail_Open_Source_1_1 = "Sendmail-Open-Source-1.1"
+licenseId Sendmail = "Sendmail"
+licenseId SGI_B_1_0 = "SGI-B-1.0"
+licenseId SGI_B_1_1 = "SGI-B-1.1"
+licenseId SGI_B_2_0 = "SGI-B-2.0"
+licenseId SGI_OpenGL = "SGI-OpenGL"
+licenseId SGMLUG_PM = "SGMLUG-PM"
+licenseId SGP4 = "SGP4"
+licenseId SHL_0_51 = "SHL-0.51"
+licenseId SHL_0_5 = "SHL-0.5"
+licenseId SimPL_2_0 = "SimPL-2.0"
+licenseId SISSL_1_2 = "SISSL-1.2"
+licenseId SISSL = "SISSL"
+licenseId Sleepycat = "Sleepycat"
+licenseId SL = "SL"
+licenseId SMAIL_GPL = "SMAIL-GPL"
+licenseId SMLNJ = "SMLNJ"
+licenseId SMPPL = "SMPPL"
+licenseId SNIA = "SNIA"
+licenseId Snprintf = "snprintf"
+licenseId SOFA = "SOFA"
+licenseId SoftSurfer = "softSurfer"
+licenseId Soundex = "Soundex"
+licenseId Spencer_86 = "Spencer-86"
+licenseId Spencer_94 = "Spencer-94"
+licenseId Spencer_99 = "Spencer-99"
+licenseId SPL_1_0 = "SPL-1.0"
+licenseId Ssh_keyscan = "ssh-keyscan"
+licenseId SSH_OpenSSH = "SSH-OpenSSH"
+licenseId SSH_short = "SSH-short"
+licenseId SSLeay_standalone = "SSLeay-standalone"
+licenseId SSPL_1_0 = "SSPL-1.0"
+licenseId SugarCRM_1_1_3 = "SugarCRM-1.1.3"
+licenseId SUL_1_0 = "SUL-1.0"
+licenseId Sun_PPP_2000 = "Sun-PPP-2000"
+licenseId Sun_PPP = "Sun-PPP"
+licenseId SunPro = "SunPro"
+licenseId SWL = "SWL"
+licenseId Swrule = "swrule"
+licenseId Symlinks = "Symlinks"
+licenseId TAPR_OHL_1_0 = "TAPR-OHL-1.0"
+licenseId TCL = "TCL"
+licenseId TCP_wrappers = "TCP-wrappers"
+licenseId TekHVC = "TekHVC"
+licenseId TermReadKey = "TermReadKey"
+licenseId TGPPL_1_0 = "TGPPL-1.0"
+licenseId ThirdEye = "ThirdEye"
+licenseId Threeparttable = "threeparttable"
+licenseId TMate = "TMate"
+licenseId TORQUE_1_1 = "TORQUE-1.1"
+licenseId TOSL = "TOSL"
+licenseId TPDL = "TPDL"
+licenseId TPL_1_0 = "TPL-1.0"
+licenseId TrustedQSL = "TrustedQSL"
+licenseId TTWL = "TTWL"
+licenseId TTYP0 = "TTYP0"
+licenseId TU_Berlin_1_0 = "TU-Berlin-1.0"
+licenseId TU_Berlin_2_0 = "TU-Berlin-2.0"
+licenseId Ubuntu_font_1_0 = "Ubuntu-font-1.0"
+licenseId UCAR = "UCAR"
+licenseId UCL_1_0 = "UCL-1.0"
+licenseId Ulem = "ulem"
+licenseId UMich_Merit = "UMich-Merit"
+licenseId Unicode_3_0 = "Unicode-3.0"
+licenseId Unicode_DFS_2015 = "Unicode-DFS-2015"
+licenseId Unicode_DFS_2016 = "Unicode-DFS-2016"
+licenseId Unicode_TOU = "Unicode-TOU"
+licenseId UnixCrypt = "UnixCrypt"
+licenseId Unlicense_libtelnet = "Unlicense-libtelnet"
+licenseId Unlicense_libwhirlpool = "Unlicense-libwhirlpool"
+licenseId Unlicense = "Unlicense"
+licenseId UnRAR = "UnRAR"
+licenseId UPL_1_0 = "UPL-1.0"
+licenseId URT_RLE = "URT-RLE"
+licenseId Vim = "Vim"
+licenseId Vixie_Cron = "Vixie-Cron"
+licenseId VOSTROM = "VOSTROM"
+licenseId VSL_1_0 = "VSL-1.0"
+licenseId W3C_19980720 = "W3C-19980720"
+licenseId W3C_20150513 = "W3C-20150513"
+licenseId W3C = "W3C"
+licenseId W3m = "w3m"
+licenseId Watcom_1_0 = "Watcom-1.0"
+licenseId Widget_Workshop = "Widget-Workshop"
+licenseId WordNet = "WordNet"
+licenseId Wsuipa = "Wsuipa"
+licenseId WTFNMFPL = "WTFNMFPL"
+licenseId WTFPL = "WTFPL"
+licenseId Wwl = "wwl"
+licenseId X11_distribute_modifications_variant = "X11-distribute-modifications-variant"
+licenseId X11_no_permit_persons = "X11-no-permit-persons"
+licenseId X11_swapped = "X11-swapped"
+licenseId X11 = "X11"
+licenseId Xdebug_1_03 = "Xdebug-1.03"
+licenseId Xerox = "Xerox"
+licenseId Xfig = "Xfig"
+licenseId XFree86_1_1 = "XFree86-1.1"
+licenseId Xinetd = "xinetd"
+licenseId Xkeyboard_config_Zinoviev = "xkeyboard-config-Zinoviev"
+licenseId Xlock = "xlock"
+licenseId Xnet = "Xnet"
+licenseId Xpp = "xpp"
+licenseId XSkat = "XSkat"
+licenseId Xzoom = "xzoom"
+licenseId YPL_1_0 = "YPL-1.0"
+licenseId YPL_1_1 = "YPL-1.1"
+licenseId Zed = "Zed"
+licenseId Zeeff = "Zeeff"
+licenseId Zend_2_0 = "Zend-2.0"
+licenseId Zimbra_1_3 = "Zimbra-1.3"
+licenseId Zimbra_1_4 = "Zimbra-1.4"
+licenseId Zlib_acknowledgement = "zlib-acknowledgement"
+licenseId Zlib = "Zlib"
+licenseId ZPL_1_1 = "ZPL-1.1"
+licenseId ZPL_2_0 = "ZPL-2.0"
+licenseId ZPL_2_1 = "ZPL-2.1"
+
+-- | License name, e.g. @"GNU General Public License v2.0 only"@
+licenseName :: LicenseId -> String
+licenseName N_0BSD = "BSD Zero Clause License"
+licenseName N_3D_Slicer_1_0 = "3D Slicer License v1.0"
+licenseName AAL = "Attribution Assurance License"
+licenseName Abstyles = "Abstyles License"
+licenseName AdaCore_doc = "AdaCore Doc License"
+licenseName Adobe_2006 = "Adobe Systems Incorporated Source Code License Agreement"
+licenseName Adobe_Display_PostScript = "Adobe Display PostScript License"
+licenseName Adobe_Glyph = "Adobe Glyph List License"
+licenseName Adobe_Utopia = "Adobe Utopia Font License"
+licenseName ADSL = "Amazon Digital Services License"
+licenseName Advanced_Cryptics_Dictionary = "Advanced Cryptics Dictionary License"
+licenseName AFL_1_1 = "Academic Free License v1.1"
+licenseName AFL_1_2 = "Academic Free License v1.2"
+licenseName AFL_2_0 = "Academic Free License v2.0"
+licenseName AFL_2_1 = "Academic Free License v2.1"
+licenseName AFL_3_0 = "Academic Free License v3.0"
+licenseName Afmparse = "Afmparse License"
+licenseName AGPL_1_0 = "Affero General Public License v1.0"
+licenseName AGPL_1_0_only = "Affero General Public License v1.0 only"
+licenseName AGPL_1_0_or_later = "Affero General Public License v1.0 or later"
+licenseName AGPL_3_0_only = "GNU Affero General Public License v3.0 only"
+licenseName AGPL_3_0_or_later = "GNU Affero General Public License v3.0 or later"
+licenseName Aladdin = "Aladdin Free Public License"
+licenseName ALGLIB_Documentation = "ALGLIB Documentation License"
+licenseName AMD_newlib = "AMD newlib License"
+licenseName AMDPLPA = "AMD's plpa_map.c License"
+licenseName AML_glslang = "AML glslang variant License"
+licenseName AML = "Apple MIT License"
+licenseName AMPAS = "Academy of Motion Picture Arts and Sciences BSD"
+licenseName ANTLR_PD_fallback = "ANTLR Software Rights Notice with license fallback"
+licenseName ANTLR_PD = "ANTLR Software Rights Notice"
+licenseName Any_OSI_perl_modules = "Any OSI License - Perl Modules"
+licenseName Any_OSI = "Any OSI License"
+licenseName Apache_1_0 = "Apache License 1.0"
+licenseName Apache_1_1 = "Apache License 1.1"
+licenseName Apache_2_0 = "Apache License 2.0"
+licenseName APAFML = "Adobe Postscript AFM License"
+licenseName APL_1_0 = "Adaptive Public License 1.0"
+licenseName App_s2p = "App::s2p License"
+licenseName APSL_1_0 = "Apple Public Source License 1.0"
+licenseName APSL_1_1 = "Apple Public Source License 1.1"
+licenseName APSL_1_2 = "Apple Public Source License 1.2"
+licenseName APSL_2_0 = "Apple Public Source License 2.0"
+licenseName Arphic_1999 = "Arphic Public License"
+licenseName Artistic_1_0_cl8 = "Artistic License 1.0 w/clause 8"
+licenseName Artistic_1_0_Perl = "Artistic License 1.0 (Perl)"
+licenseName Artistic_1_0 = "Artistic License 1.0"
+licenseName Artistic_2_0 = "Artistic License 2.0"
+licenseName Artistic_dist = "Artistic License 1.0 (dist)"
+licenseName Aspell_RU = "Aspell Russian License"
+licenseName ASWF_Digital_Assets_1_0 = "ASWF Digital Assets License version 1.0"
+licenseName ASWF_Digital_Assets_1_1 = "ASWF Digital Assets License 1.1"
+licenseName Baekmuk = "Baekmuk License"
+licenseName Bahyph = "Bahyph License"
+licenseName Barr = "Barr License"
+licenseName Bcrypt_Solar_Designer = "bcrypt Solar Designer License"
+licenseName Beerware = "Beerware License"
+licenseName Bitstream_Charter = "Bitstream Charter Font License"
+licenseName Bitstream_Vera = "Bitstream Vera Font License"
+licenseName BitTorrent_1_0 = "BitTorrent Open Source License v1.0"
+licenseName BitTorrent_1_1 = "BitTorrent Open Source License v1.1"
+licenseName Blessing = "SQLite Blessing"
+licenseName BlueOak_1_0_0 = "Blue Oak Model License 1.0.0"
+licenseName Boehm_GC_without_fee = "Boehm-Demers-Weiser GC License (without fee)"
+licenseName Boehm_GC = "Boehm-Demers-Weiser GC License"
+licenseName BOLA_1_1 = "Buena Onda License Agreement v1.1"
+licenseName Borceux = "Borceux license"
+licenseName Brian_Gladman_2_Clause = "Brian Gladman 2-Clause License"
+licenseName Brian_Gladman_3_Clause = "Brian Gladman 3-Clause License"
+licenseName BSD_1_Clause = "BSD 1-Clause License"
+licenseName BSD_2_Clause_FreeBSD = "BSD 2-Clause FreeBSD License"
+licenseName BSD_2_Clause_NetBSD = "BSD 2-Clause NetBSD License"
+licenseName BSD_2_Clause_Darwin = "BSD 2-Clause - Ian Darwin variant"
+licenseName BSD_2_Clause_first_lines = "BSD 2-Clause - first lines requirement"
+licenseName BSD_2_Clause_Patent = "BSD-2-Clause Plus Patent License"
+licenseName BSD_2_Clause_pkgconf_disclaimer = "BSD 2-Clause pkgconf disclaimer variant"
+licenseName BSD_2_Clause_Views = "BSD 2-Clause with views sentence"
+licenseName BSD_2_Clause = "BSD 2-Clause \"Simplified\" License"
+licenseName BSD_3_Clause_acpica = "BSD 3-Clause acpica variant"
+licenseName BSD_3_Clause_Attribution = "BSD with attribution"
+licenseName BSD_3_Clause_Clear = "BSD 3-Clause Clear License"
+licenseName BSD_3_Clause_flex = "BSD 3-Clause Flex variant"
+licenseName BSD_3_Clause_HP = "Hewlett-Packard BSD variant license"
+licenseName BSD_3_Clause_LBNL = "Lawrence Berkeley National Labs BSD variant license"
+licenseName BSD_3_Clause_Modification = "BSD 3-Clause Modification"
+licenseName BSD_3_Clause_No_Military_License = "BSD 3-Clause No Military License"
+licenseName BSD_3_Clause_No_Nuclear_License_2014 = "BSD 3-Clause No Nuclear License 2014"
+licenseName BSD_3_Clause_No_Nuclear_License = "BSD 3-Clause No Nuclear License"
+licenseName BSD_3_Clause_No_Nuclear_Warranty = "BSD 3-Clause No Nuclear Warranty"
+licenseName BSD_3_Clause_Open_MPI = "BSD 3-Clause Open MPI variant"
+licenseName BSD_3_Clause_Sun = "BSD 3-Clause Sun Microsystems"
+licenseName BSD_3_Clause_Tso = "BSD 3-Clause Tso variant"
+licenseName BSD_3_Clause = "BSD 3-Clause \"New\" or \"Revised\" License"
+licenseName BSD_4_Clause_Shortened = "BSD 4 Clause Shortened"
+licenseName BSD_4_Clause_UC = "BSD-4-Clause (University of California-Specific)"
+licenseName BSD_4_Clause = "BSD 4-Clause \"Original\" or \"Old\" License"
+licenseName BSD_4_3RENO = "BSD 4.3 RENO License"
+licenseName BSD_4_3TAHOE = "BSD 4.3 TAHOE License"
+licenseName BSD_Advertising_Acknowledgement = "BSD Advertising Acknowledgement License"
+licenseName BSD_Attribution_HPND_disclaimer = "BSD with Attribution and HPND disclaimer"
+licenseName BSD_Inferno_Nettverk = "BSD-Inferno-Nettverk"
+licenseName BSD_Mark_Modifications = "BSD Mark Modifications License"
+licenseName BSD_Protection = "BSD Protection License"
+licenseName BSD_Source_beginning_file = "BSD Source Code Attribution - beginning of file variant"
+licenseName BSD_Source_Code = "BSD Source Code Attribution"
+licenseName BSD_Systemics_W3Works = "Systemics W3Works BSD variant license"
+licenseName BSD_Systemics = "Systemics BSD variant license"
+licenseName BSL_1_0 = "Boost Software License 1.0"
+licenseName Bzip2_1_0_5 = "bzip2 and libbzip2 License v1.0.5"
+licenseName Buddy = "Buddy License"
+licenseName BUSL_1_1 = "Business Source License 1.1"
+licenseName Bzip2_1_0_6 = "bzip2 and libbzip2 License v1.0.6"
+licenseName C_UDA_1_0 = "Computational Use of Data Agreement v1.0"
+licenseName CAL_1_0_Combined_Work_Exception = "Cryptographic Autonomy License 1.0 (Combined Work Exception)"
+licenseName CAL_1_0 = "Cryptographic Autonomy License 1.0"
+licenseName Caldera_no_preamble = "Caldera License (without preamble)"
+licenseName Caldera = "Caldera License"
+licenseName CAPEC_tou = "Common Attack    Pattern Enumeration and Classification License"
+licenseName Catharon = "Catharon License"
+licenseName CATOSL_1_1 = "Computer Associates Trusted Open Source License 1.1"
+licenseName CC_BY_1_0 = "Creative Commons Attribution 1.0 Generic"
+licenseName CC_BY_2_0 = "Creative Commons Attribution 2.0 Generic"
+licenseName CC_BY_2_5_AU = "Creative Commons Attribution 2.5 Australia"
+licenseName CC_BY_2_5 = "Creative Commons Attribution 2.5 Generic"
+licenseName CC_BY_3_0_AT = "Creative Commons Attribution 3.0 Austria"
+licenseName CC_BY_3_0_AU = "Creative Commons Attribution 3.0 Australia"
+licenseName CC_BY_3_0_DE = "Creative Commons Attribution 3.0 Germany"
+licenseName CC_BY_3_0_IGO = "Creative Commons Attribution 3.0 IGO"
+licenseName CC_BY_3_0_NL = "Creative Commons Attribution 3.0 Netherlands"
+licenseName CC_BY_3_0_US = "Creative Commons Attribution 3.0 United States"
+licenseName CC_BY_3_0 = "Creative Commons Attribution 3.0 Unported"
+licenseName CC_BY_4_0 = "Creative Commons Attribution 4.0 International"
+licenseName CC_BY_NC_1_0 = "Creative Commons Attribution Non Commercial 1.0 Generic"
+licenseName CC_BY_NC_2_0 = "Creative Commons Attribution Non Commercial 2.0 Generic"
+licenseName CC_BY_NC_2_5 = "Creative Commons Attribution Non Commercial 2.5 Generic"
+licenseName CC_BY_NC_3_0_DE = "Creative Commons Attribution Non Commercial 3.0 Germany"
+licenseName CC_BY_NC_3_0 = "Creative Commons Attribution Non Commercial 3.0 Unported"
+licenseName CC_BY_NC_4_0 = "Creative Commons Attribution Non Commercial 4.0 International"
+licenseName CC_BY_NC_ND_1_0 = "Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic"
+licenseName CC_BY_NC_ND_2_0 = "Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic"
+licenseName CC_BY_NC_ND_2_5 = "Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic"
+licenseName CC_BY_NC_ND_3_0_DE = "Creative Commons Attribution Non Commercial No Derivatives 3.0 Germany"
+licenseName CC_BY_NC_ND_3_0_IGO = "Creative Commons Attribution Non Commercial No Derivatives 3.0 IGO"
+licenseName CC_BY_NC_ND_3_0 = "Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported"
+licenseName CC_BY_NC_ND_4_0 = "Creative Commons Attribution Non Commercial No Derivatives 4.0 International"
+licenseName CC_BY_NC_SA_1_0 = "Creative Commons Attribution Non Commercial Share Alike 1.0 Generic"
+licenseName CC_BY_NC_SA_2_0_DE = "Creative Commons Attribution Non Commercial Share Alike 2.0 Germany"
+licenseName CC_BY_NC_SA_2_0_FR = "Creative Commons Attribution-NonCommercial-ShareAlike 2.0 France"
+licenseName CC_BY_NC_SA_2_0_UK = "Creative Commons Attribution Non Commercial Share Alike 2.0 England and Wales"
+licenseName CC_BY_NC_SA_2_0 = "Creative Commons Attribution Non Commercial Share Alike 2.0 Generic"
+licenseName CC_BY_NC_SA_2_5 = "Creative Commons Attribution Non Commercial Share Alike 2.5 Generic"
+licenseName CC_BY_NC_SA_3_0_DE = "Creative Commons Attribution Non Commercial Share Alike 3.0 Germany"
+licenseName CC_BY_NC_SA_3_0_IGO = "Creative Commons Attribution Non Commercial Share Alike 3.0 IGO"
+licenseName CC_BY_NC_SA_3_0 = "Creative Commons Attribution Non Commercial Share Alike 3.0 Unported"
+licenseName CC_BY_NC_SA_4_0 = "Creative Commons Attribution Non Commercial Share Alike 4.0 International"
+licenseName CC_BY_ND_1_0 = "Creative Commons Attribution No Derivatives 1.0 Generic"
+licenseName CC_BY_ND_2_0 = "Creative Commons Attribution No Derivatives 2.0 Generic"
+licenseName CC_BY_ND_2_5 = "Creative Commons Attribution No Derivatives 2.5 Generic"
+licenseName CC_BY_ND_3_0_DE = "Creative Commons Attribution No Derivatives 3.0 Germany"
+licenseName CC_BY_ND_3_0 = "Creative Commons Attribution No Derivatives 3.0 Unported"
+licenseName CC_BY_ND_4_0 = "Creative Commons Attribution No Derivatives 4.0 International"
+licenseName CC_BY_SA_1_0 = "Creative Commons Attribution Share Alike 1.0 Generic"
+licenseName CC_BY_SA_2_0_UK = "Creative Commons Attribution Share Alike 2.0 England and Wales"
+licenseName CC_BY_SA_2_0 = "Creative Commons Attribution Share Alike 2.0 Generic"
+licenseName CC_BY_SA_2_1_JP = "Creative Commons Attribution Share Alike 2.1 Japan"
+licenseName CC_BY_SA_2_5 = "Creative Commons Attribution Share Alike 2.5 Generic"
+licenseName CC_BY_SA_3_0_AT = "Creative Commons Attribution Share Alike 3.0 Austria"
+licenseName CC_BY_SA_3_0_DE = "Creative Commons Attribution Share Alike 3.0 Germany"
+licenseName CC_BY_SA_3_0_IGO = "Creative Commons Attribution-ShareAlike 3.0 IGO"
+licenseName CC_BY_SA_3_0 = "Creative Commons Attribution Share Alike 3.0 Unported"
+licenseName CC_BY_SA_4_0 = "Creative Commons Attribution Share Alike 4.0 International"
+licenseName CC_PDDC = "Creative Commons Public Domain Dedication and Certification"
+licenseName CC_PDM_1_0 = "Creative    Commons Public Domain Mark 1.0 Universal"
+licenseName CC_SA_1_0 = "Creative Commons Share Alike 1.0 Generic"
+licenseName CC0_1_0 = "Creative Commons Zero v1.0 Universal"
+licenseName CDDL_1_0 = "Common Development and Distribution License 1.0"
+licenseName CDDL_1_1 = "Common Development and Distribution License 1.1"
+licenseName CDL_1_0 = "Common Documentation License 1.0"
+licenseName CDLA_Permissive_1_0 = "Community Data License Agreement Permissive 1.0"
+licenseName CDLA_Permissive_2_0 = "Community Data License Agreement Permissive 2.0"
+licenseName CDLA_Sharing_1_0 = "Community Data License Agreement Sharing 1.0"
+licenseName CECILL_1_0 = "CeCILL Free Software License Agreement v1.0"
+licenseName CECILL_1_1 = "CeCILL Free Software License Agreement v1.1"
+licenseName CECILL_2_0 = "CeCILL Free Software License Agreement v2.0"
+licenseName CECILL_2_1 = "CeCILL Free Software License Agreement v2.1"
+licenseName CECILL_B = "CeCILL-B Free Software License Agreement"
+licenseName CECILL_C = "CeCILL-C Free Software License Agreement"
+licenseName CERN_OHL_1_1 = "CERN Open Hardware Licence v1.1"
+licenseName CERN_OHL_1_2 = "CERN Open Hardware Licence v1.2"
+licenseName CERN_OHL_P_2_0 = "CERN Open Hardware Licence Version 2 - Permissive"
+licenseName CERN_OHL_S_2_0 = "CERN Open Hardware Licence Version 2 - Strongly Reciprocal"
+licenseName CERN_OHL_W_2_0 = "CERN Open Hardware Licence Version 2 - Weakly Reciprocal"
+licenseName CFITSIO = "CFITSIO License"
+licenseName Check_cvs = "check-cvs License"
+licenseName Checkmk = "Checkmk License"
+licenseName ClArtistic = "Clarified Artistic License"
+licenseName Clips = "Clips License"
+licenseName CMU_Mach_nodoc = "CMU    Mach - no notices-in-documentation variant"
+licenseName CMU_Mach = "CMU Mach License"
+licenseName CNRI_Jython = "CNRI Jython License"
+licenseName CNRI_Python_GPL_Compatible = "CNRI Python Open Source GPL Compatible License Agreement"
+licenseName CNRI_Python = "CNRI Python License"
+licenseName COIL_1_0 = "Copyfree Open Innovation License"
+licenseName Community_Spec_1_0 = "Community Specification License 1.0"
+licenseName Condor_1_1 = "Condor Public License v1.1"
+licenseName Copyleft_next_0_3_0 = "copyleft-next 0.3.0"
+licenseName Copyleft_next_0_3_1 = "copyleft-next 0.3.1"
+licenseName Cornell_Lossless_JPEG = "Cornell Lossless JPEG License"
+licenseName CPAL_1_0 = "Common Public Attribution License 1.0"
+licenseName CPL_1_0 = "Common Public License 1.0"
+licenseName CPOL_1_02 = "Code Project Open License 1.02"
+licenseName Cronyx = "Cronyx License"
+licenseName Crossword = "Crossword License"
+licenseName CryptoSwift = "CryptoSwift License"
+licenseName CrystalStacker = "CrystalStacker License"
+licenseName CUA_OPL_1_0 = "CUA Office Public License v1.0"
+licenseName Cube = "Cube License"
+licenseName Curl = "curl License"
+licenseName Cve_tou = "Common Vulnerability Enumeration ToU License"
+licenseName D_FSL_1_0 = "Deutsche Freie Software Lizenz"
+licenseName DEC_3_Clause = "DEC 3-Clause License"
+licenseName Diffmark = "diffmark license"
+licenseName DL_DE_BY_2_0 = "Data licence Germany \8211 attribution \8211 version 2.0"
+licenseName DL_DE_ZERO_2_0 = "Data licence Germany \8211 zero \8211 version 2.0"
+licenseName DocBook_DTD = "DocBook DTD License"
+licenseName DocBook_Schema = "DocBook Schema License"
+licenseName DocBook_Stylesheet = "DocBook Stylesheet License"
+licenseName DocBook_XML = "DocBook XML License"
+licenseName DOC = "DOC License"
+licenseName Dotseqn = "Dotseqn License"
+licenseName DRL_1_0 = "Detection Rule License 1.0"
+licenseName DRL_1_1 = "Detection Rule License 1.1"
+licenseName DSDP = "DSDP License"
+licenseName Dtoa = "David M. Gay dtoa License"
+licenseName Dvipdfm = "dvipdfm License"
+licenseName ECL_1_0 = "Educational Community License v1.0"
+licenseName ECL_2_0 = "Educational Community License v2.0"
+licenseName EFL_1_0 = "Eiffel Forum License v1.0"
+licenseName EFL_2_0 = "Eiffel Forum License v2.0"
+licenseName EGenix = "eGenix.com Public License 1.1.0"
+licenseName Elastic_2_0 = "Elastic License 2.0"
+licenseName Entessa = "Entessa Public License v1.0"
+licenseName EPICS = "EPICS Open License"
+licenseName EPL_1_0 = "Eclipse Public License 1.0"
+licenseName EPL_2_0 = "Eclipse Public License 2.0"
+licenseName ErlPL_1_1 = "Erlang Public License v1.1"
+licenseName ESA_PL_permissive_2_4 = "European Space Agency Public License \8211 v2.4 \8211 Permissive (Type 3)"
+licenseName ESA_PL_strong_copyleft_2_4 = "European Space Agency Public License (ESA-PL) - V2.4 - Strong Copyleft (Type 1)"
+licenseName ESA_PL_weak_copyleft_2_4 = "European Space Agency Public License \8211 v2.4 \8211 Weak Copyleft (Type 2)"
+licenseName Etalab_2_0 = "Etalab Open License 2.0"
+licenseName EUDatagrid = "EU DataGrid Software License"
+licenseName EUPL_1_0 = "European Union Public License 1.0"
+licenseName EUPL_1_1 = "European Union Public License 1.1"
+licenseName EUPL_1_2 = "European Union Public License 1.2"
+licenseName Eurosym = "Eurosym License"
+licenseName Fair = "Fair License"
+licenseName FBM = "Fuzzy Bitmap License"
+licenseName FDK_AAC = "Fraunhofer FDK AAC Codec Library"
+licenseName Ferguson_Twofish = "Ferguson Twofish License"
+licenseName Frameworx_1_0 = "Frameworx Open License 1.0"
+licenseName FreeBSD_DOC = "FreeBSD Documentation License"
+licenseName FreeImage = "FreeImage Public License v1.0"
+licenseName FSFAP_no_warranty_disclaimer = "FSF All Permissive License (without Warranty)"
+licenseName FSFAP = "FSF All Permissive License"
+licenseName FSFULLRSD = "FSF Unlimited License (with License Retention and Short Disclaimer)"
+licenseName FSFULLRWD = "FSF Unlimited License (With License Retention and Warranty Disclaimer)"
+licenseName FSFULLR = "FSF Unlimited License (with License Retention)"
+licenseName FSFUL = "FSF Unlimited License"
+licenseName FSL_1_1_ALv2 = "Functional Source License, Version 1.1, ALv2 Future License"
+licenseName FSL_1_1_MIT = "Functional Source License, Version 1.1, MIT Future License"
+licenseName FTL = "Freetype Project License"
+licenseName Furuseth = "Furuseth License"
+licenseName Fwlw = "fwlw License"
+licenseName Game_Programming_Gems = "Game Programming Gems License"
+licenseName GCR_docs = "Gnome GCR Documentation License"
+licenseName GD = "GD License"
+licenseName Generic_xts = "Generic XTS License"
+licenseName GFDL_1_1_invariants_only = "GNU Free Documentation License v1.1 only - invariants"
+licenseName GFDL_1_1_invariants_or_later = "GNU Free Documentation License v1.1 or later - invariants"
+licenseName GFDL_1_1_no_invariants_only = "GNU Free Documentation License v1.1 only - no invariants"
+licenseName GFDL_1_1_no_invariants_or_later = "GNU Free Documentation License v1.1 or later - no invariants"
+licenseName GFDL_1_1_only = "GNU Free Documentation License v1.1 only"
+licenseName GFDL_1_1_or_later = "GNU Free Documentation License v1.1 or later"
+licenseName GFDL_1_2_invariants_only = "GNU Free Documentation License v1.2 only - invariants"
+licenseName GFDL_1_2_invariants_or_later = "GNU Free Documentation License v1.2 or later - invariants"
+licenseName GFDL_1_2_no_invariants_only = "GNU Free Documentation License v1.2 only - no invariants"
+licenseName GFDL_1_2_no_invariants_or_later = "GNU Free Documentation License v1.2 or later - no invariants"
+licenseName GFDL_1_2_only = "GNU Free Documentation License v1.2 only"
+licenseName GFDL_1_2_or_later = "GNU Free Documentation License v1.2 or later"
+licenseName GFDL_1_3_invariants_only = "GNU Free Documentation License v1.3 only - invariants"
+licenseName GFDL_1_3_invariants_or_later = "GNU Free Documentation License v1.3 or later - invariants"
+licenseName GFDL_1_3_no_invariants_only = "GNU Free Documentation License v1.3 only - no invariants"
+licenseName GFDL_1_3_no_invariants_or_later = "GNU Free Documentation License v1.3 or later - no invariants"
+licenseName GFDL_1_3_only = "GNU Free Documentation License v1.3 only"
+licenseName GFDL_1_3_or_later = "GNU Free Documentation License v1.3 or later"
+licenseName Giftware = "Giftware License"
+licenseName GL2PS = "GL2PS License"
+licenseName Glide = "3dfx Glide License"
+licenseName Glulxe = "Glulxe License"
+licenseName GLWTPL = "Good Luck With That Public License"
+licenseName Gnuplot = "gnuplot License"
+licenseName GPL_1_0_only = "GNU General Public License v1.0 only"
+licenseName GPL_1_0_or_later = "GNU General Public License v1.0 or later"
+licenseName GPL_2_0_only = "GNU General Public License v2.0 only"
+licenseName GPL_2_0_or_later = "GNU General Public License v2.0 or later"
+licenseName GPL_3_0_only = "GNU General Public License v3.0 only"
+licenseName GPL_3_0_or_later = "GNU General Public License v3.0 or later"
+licenseName Graphics_Gems = "Graphics Gems License"
+licenseName GSOAP_1_3b = "gSOAP Public License v1.3b"
+licenseName Gtkbook = "gtkbook License"
+licenseName Gutmann = "Gutmann License"
+licenseName HaskellReport = "Haskell Language Report License"
+licenseName HDF5 = "HDF5 License"
+licenseName Hdparm = "hdparm License"
+licenseName HIDAPI = "HIDAPI License"
+licenseName Hippocratic_2_1 = "Hippocratic License 2.1"
+licenseName HP_1986 = "Hewlett-Packard 1986 License"
+licenseName HP_1989 = "Hewlett-Packard 1989 License"
+licenseName HPND_DEC = "Historical Permission Notice and Disclaimer - DEC variant"
+licenseName HPND_doc_sell = "Historical Permission Notice and Disclaimer - documentation sell variant"
+licenseName HPND_doc = "Historical Permission Notice and Disclaimer - documentation variant"
+licenseName HPND_export_US_acknowledgement = "HPND with US Government export control warning and acknowledgment"
+licenseName HPND_export_US_modify = "HPND with US Government export control warning and modification rqmt"
+licenseName HPND_export_US = "HPND with US Government export control warning"
+licenseName HPND_export2_US = "HPND with US Government export control and 2 disclaimers"
+licenseName HPND_Fenneberg_Livingston = "Historical Permission Notice and Disclaimer - Fenneberg-Livingston variant"
+licenseName HPND_INRIA_IMAG = "Historical Permission Notice and Disclaimer    - INRIA-IMAG variant"
+licenseName HPND_Intel = "Historical Permission Notice and Disclaimer - Intel variant"
+licenseName HPND_Kevlin_Henney = "Historical Permission Notice and Disclaimer - Kevlin Henney variant"
+licenseName HPND_Markus_Kuhn = "Historical Permission Notice and Disclaimer - Markus Kuhn variant"
+licenseName HPND_merchantability_variant = "Historical Permission Notice and Disclaimer - merchantability variant"
+licenseName HPND_MIT_disclaimer = "Historical Permission Notice and Disclaimer with MIT disclaimer"
+licenseName HPND_Netrek = "Historical Permission Notice and Disclaimer - Netrek variant"
+licenseName HPND_Pbmplus = "Historical Permission Notice and Disclaimer - Pbmplus variant"
+licenseName HPND_sell_MIT_disclaimer_xserver = "Historical Permission Notice and Disclaimer - sell xserver variant with MIT disclaimer"
+licenseName HPND_sell_regexpr = "Historical Permission Notice and Disclaimer - sell regexpr variant"
+licenseName HPND_sell_variant_critical_systems = "HPND - sell variant with safety critical systems clause"
+licenseName HPND_sell_variant_MIT_disclaimer_rev = "HPND sell variant with MIT disclaimer - reverse"
+licenseName HPND_sell_variant_MIT_disclaimer = "HPND sell variant with MIT disclaimer"
+licenseName HPND_sell_variant = "Historical Permission Notice and Disclaimer - sell variant"
+licenseName HPND_SMC = "Historical Permission Notice and Disclaimer - SMC variant"
+licenseName HPND_UC_export_US = "Historical Permission Notice and Disclaimer - University of California, US export warning"
+licenseName HPND_UC = "Historical Permission Notice and Disclaimer - University of California variant"
+licenseName HPND = "Historical Permission Notice and Disclaimer"
+licenseName HTMLTIDY = "HTML Tidy License"
+licenseName Hyphen_bulgarian = "hyphen-bulgarian License"
+licenseName IBM_pibs = "IBM PowerPC Initialization and Boot Software"
+licenseName ICU = "ICU License"
+licenseName IEC_Code_Components_EULA = "IEC    Code Components End-user licence agreement"
+licenseName IJG_short = "Independent JPEG Group License - short"
+licenseName IJG = "Independent JPEG Group License"
+licenseName ImageMagick = "ImageMagick License"
+licenseName IMatix = "iMatix Standard Function Library Agreement"
+licenseName Imlib2 = "Imlib2 License"
+licenseName Info_ZIP = "Info-ZIP License"
+licenseName Inner_Net_2_0 = "Inner Net License v2.0"
+licenseName InnoSetup = "Inno Setup License"
+licenseName Intel_ACPI = "Intel ACPI Software License Agreement"
+licenseName Intel = "Intel Open Source License"
+licenseName Interbase_1_0 = "Interbase Public License v1.0"
+licenseName IPA = "IPA Font License"
+licenseName IPL_1_0 = "IBM Public License v1.0"
+licenseName ISC_Veillard = "ISC Veillard variant"
+licenseName ISC = "ISC License"
+licenseName ISO_permission = "ISO permission notice"
+licenseName Jam = "Jam License"
+licenseName JasPer_2_0 = "JasPer License"
+licenseName Jove = "Jove License"
+licenseName JPL_image = "JPL Image Use Policy"
+licenseName JPNIC = "Japan Network Information Center License"
+licenseName JSON = "JSON License"
+licenseName Kastrup = "Kastrup License"
+licenseName Kazlib = "Kazlib License"
+licenseName Knuth_CTAN = "Knuth CTAN License"
+licenseName LAL_1_2 = "Licence Art Libre 1.2"
+licenseName LAL_1_3 = "Licence Art Libre 1.3"
+licenseName Latex2e_translated_notice = "Latex2e with translated notice permission"
+licenseName Latex2e = "Latex2e License"
+licenseName Leptonica = "Leptonica License"
+licenseName LGPL_2_0_only = "GNU Library General Public License v2 only"
+licenseName LGPL_2_0_or_later = "GNU Library General Public License v2 or later"
+licenseName LGPL_2_1_only = "GNU Lesser General Public License v2.1 only"
+licenseName LGPL_2_1_or_later = "GNU Lesser General Public License v2.1 or later"
+licenseName LGPL_3_0_only = "GNU Lesser General Public License v3.0 only"
+licenseName LGPL_3_0_or_later = "GNU Lesser General Public License v3.0 or later"
+licenseName LGPLLR = "Lesser General Public License For Linguistic Resources"
+licenseName Libpng_1_6_35 = "PNG Reference Library License v1 (for libpng 0.5 through 1.6.35)"
+licenseName Libpng_2_0 = "PNG Reference Library version 2"
+licenseName Libpng = "libpng License"
+licenseName Libselinux_1_0 = "libselinux public domain notice"
+licenseName Libtiff = "libtiff License"
+licenseName Libutil_David_Nugent = "libutil David Nugent License"
+licenseName LiLiQ_P_1_1 = "Licence Libre du Qu\233bec \8211 Permissive version 1.1"
+licenseName LiLiQ_R_1_1 = "Licence Libre du Qu\233bec \8211 R\233ciprocit\233 version 1.1"
+licenseName LiLiQ_Rplus_1_1 = "Licence Libre du Qu\233bec \8211 R\233ciprocit\233 forte version 1.1"
+licenseName Linux_man_pages_1_para = "Linux man-pages - 1 paragraph"
+licenseName Linux_man_pages_copyleft_2_para = "Linux man-pages Copyleft - 2 paragraphs"
+licenseName Linux_man_pages_copyleft_var = "Linux man-pages Copyleft Variant"
+licenseName Linux_man_pages_copyleft = "Linux man-pages Copyleft"
+licenseName Linux_OpenIB = "Linux Kernel Variant of OpenIB.org license"
+licenseName LOOP = "Common Lisp LOOP License"
+licenseName LPD_document = "LPD Documentation License"
+licenseName LPL_1_02 = "Lucent Public License v1.02"
+licenseName LPL_1_0 = "Lucent Public License Version 1.0"
+licenseName LPPL_1_0 = "LaTeX Project Public License v1.0"
+licenseName LPPL_1_1 = "LaTeX Project Public License v1.1"
+licenseName LPPL_1_2 = "LaTeX Project Public License v1.2"
+licenseName LPPL_1_3a = "LaTeX Project Public License v1.3a"
+licenseName LPPL_1_3c = "LaTeX Project Public License v1.3c"
+licenseName Lsof = "lsof License"
+licenseName Lucida_Bitmap_Fonts = "Lucida Bitmap Fonts License"
+licenseName LZMA_SDK_9_11_to_9_20 = "LZMA SDK License (versions 9.11 to 9.20)"
+licenseName LZMA_SDK_9_22 = "LZMA SDK License (versions 9.22 and beyond)"
+licenseName Mackerras_3_Clause_acknowledgment = "Mackerras 3-Clause - acknowledgment variant"
+licenseName Mackerras_3_Clause = "Mackerras 3-Clause License"
+licenseName Magaz = "magaz License"
+licenseName Mailprio = "mailprio License"
+licenseName MakeIndex = "MakeIndex License"
+licenseName Man2html = "man2html License"
+licenseName Martin_Birgmeier = "Martin Birgmeier License"
+licenseName McPhee_slideshow = "McPhee Slideshow License"
+licenseName Metamail = "metamail License"
+licenseName Minpack = "Minpack License"
+licenseName MIPS = "MIPS License"
+licenseName MirOS = "The MirOS Licence"
+licenseName MIT_0 = "MIT No Attribution"
+licenseName MIT_advertising = "Enlightenment License (e16)"
+licenseName MIT_Click = "MIT Click License"
+licenseName MIT_CMU = "CMU License"
+licenseName MIT_enna = "enna License"
+licenseName MIT_feh = "feh License"
+licenseName MIT_Festival = "MIT Festival Variant"
+licenseName MIT_Khronos_old = "MIT Khronos - old variant"
+licenseName MIT_Modern_Variant = "MIT License Modern Variant"
+licenseName MIT_open_group = "MIT Open Group variant"
+licenseName MIT_STK = "MIT-STK License"
+licenseName MIT_testregex = "MIT testregex Variant"
+licenseName MIT_Wu = "MIT Tom Wu Variant"
+licenseName MITNFA = "MIT +no-false-attribs license"
+licenseName MIT = "MIT License"
+licenseName MMIXware = "MMIXware License"
+licenseName MMPL_1_0_1 = "Minecraft Mod Public License v1.0.1"
+licenseName Motosoto = "Motosoto License"
+licenseName MPEG_SSG = "MPEG Software Simulation"
+licenseName Mpi_permissive = "mpi Permissive License"
+licenseName Mpich2 = "mpich2 License"
+licenseName MPL_1_0 = "Mozilla Public License 1.0"
+licenseName MPL_1_1 = "Mozilla Public License 1.1"
+licenseName MPL_2_0_no_copyleft_exception = "Mozilla Public License 2.0 (no copyleft exception)"
+licenseName MPL_2_0 = "Mozilla Public License 2.0"
+licenseName Mplus = "mplus Font License"
+licenseName MS_LPL = "Microsoft Limited Public License"
+licenseName MS_PL = "Microsoft Public License"
+licenseName MS_RL = "Microsoft Reciprocal License"
+licenseName MTLL = "Matrix Template Library License"
+licenseName MulanPSL_1_0 = "Mulan Permissive Software License, Version 1"
+licenseName MulanPSL_2_0 = "Mulan Permissive Software License, Version 2"
+licenseName Multics = "Multics License"
+licenseName Mup = "Mup License"
+licenseName NAIST_2003 = "Nara Institute of Science and Technology License (2003)"
+licenseName NASA_1_3 = "NASA Open Source Agreement 1.3"
+licenseName Naumen = "Naumen Public License"
+licenseName NBPL_1_0 = "Net Boolean Public License v1"
+licenseName NCBI_PD = "NCBI Public Domain Notice"
+licenseName NCGL_UK_2_0 = "Non-Commercial Government Licence"
+licenseName NCL = "NCL Source Code License"
+licenseName NCSA = "University of Illinois/NCSA Open Source License"
+licenseName Net_SNMP = "Net-SNMP License"
+licenseName NetCDF = "NetCDF license"
+licenseName Newsletr = "Newsletr License"
+licenseName NGPL = "Nethack General Public License"
+licenseName Ngrep = "ngrep License"
+licenseName NICTA_1_0 = "NICTA Public Software License, Version 1.0"
+licenseName NIST_PD_fallback = "NIST Public Domain Notice with license fallback"
+licenseName NIST_PD_TNT = "NIST    Public Domain Notice TNT variant"
+licenseName NIST_PD = "NIST Public Domain Notice"
+licenseName NIST_Software = "NIST Software License"
+licenseName NLOD_1_0 = "Norwegian Licence for Open Government Data (NLOD) 1.0"
+licenseName NLOD_2_0 = "Norwegian Licence for Open Government Data (NLOD) 2.0"
+licenseName NLPL = "No Limit Public License"
+licenseName Nokia = "Nokia Open Source License"
+licenseName NOSL = "Netizen Open Source License"
+licenseName Noweb = "Noweb License"
+licenseName NPL_1_0 = "Netscape Public License v1.0"
+licenseName NPL_1_1 = "Netscape Public License v1.1"
+licenseName NPOSL_3_0 = "Non-Profit Open Software License 3.0"
+licenseName NRL = "NRL License"
+licenseName NTIA_PD = "NTIA Public Domain Notice"
+licenseName NTP_0 = "NTP No Attribution"
+licenseName NTP = "NTP License"
+licenseName O_UDA_1_0 = "Open Use of Data Agreement v1.0"
+licenseName OAR = "OAR License"
+licenseName OCCT_PL = "Open CASCADE Technology Public License"
+licenseName OCLC_2_0 = "OCLC Research Public License 2.0"
+licenseName ODbL_1_0 = "Open Data Commons Open Database License v1.0"
+licenseName ODC_By_1_0 = "Open Data Commons Attribution License v1.0"
+licenseName OFFIS = "OFFIS License"
+licenseName OFL_1_0_no_RFN = "SIL Open Font License 1.0 with no Reserved Font Name"
+licenseName OFL_1_0_RFN = "SIL Open Font License 1.0 with Reserved Font Name"
+licenseName OFL_1_0 = "SIL Open Font License 1.0"
+licenseName OFL_1_1_no_RFN = "SIL Open Font License 1.1 with no Reserved Font Name"
+licenseName OFL_1_1_RFN = "SIL Open Font License 1.1 with Reserved Font Name"
+licenseName OFL_1_1 = "SIL Open Font License 1.1"
+licenseName OGC_1_0 = "OGC Software License, Version 1.0"
+licenseName OGDL_Taiwan_1_0 = "Taiwan Open Government Data License, version 1.0"
+licenseName OGL_Canada_2_0 = "Open Government Licence - Canada"
+licenseName OGL_UK_1_0 = "Open Government Licence v1.0"
+licenseName OGL_UK_2_0 = "Open Government Licence v2.0"
+licenseName OGL_UK_3_0 = "Open Government Licence v3.0"
+licenseName OGTSL = "Open Group Test Suite License"
+licenseName OLDAP_1_1 = "Open LDAP Public License v1.1"
+licenseName OLDAP_1_2 = "Open LDAP Public License v1.2"
+licenseName OLDAP_1_3 = "Open LDAP Public License v1.3"
+licenseName OLDAP_1_4 = "Open LDAP Public License v1.4"
+licenseName OLDAP_2_0_1 = "Open LDAP Public License v2.0.1"
+licenseName OLDAP_2_0 = "Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B)"
+licenseName OLDAP_2_1 = "Open LDAP Public License v2.1"
+licenseName OLDAP_2_2_1 = "Open LDAP Public License v2.2.1"
+licenseName OLDAP_2_2_2 = "Open LDAP Public License 2.2.2"
+licenseName OLDAP_2_2 = "Open LDAP Public License v2.2"
+licenseName OLDAP_2_3 = "Open LDAP Public License v2.3"
+licenseName OLDAP_2_4 = "Open LDAP Public License v2.4"
+licenseName OLDAP_2_5 = "Open LDAP Public License v2.5"
+licenseName OLDAP_2_6 = "Open LDAP Public License v2.6"
+licenseName OLDAP_2_7 = "Open LDAP Public License v2.7"
+licenseName OLDAP_2_8 = "Open LDAP Public License v2.8"
+licenseName OLFL_1_3 = "Open Logistics Foundation License Version 1.3"
+licenseName OML = "Open Market License"
+licenseName OpenMDW_1_0 = "OpenMDW License Agreement v1.0"
+licenseName OpenPBS_2_3 = "OpenPBS v2.3 Software License"
+licenseName OpenSSL_standalone = "OpenSSL License - standalone"
+licenseName OpenSSL = "OpenSSL License"
+licenseName OpenVision = "OpenVision License"
+licenseName OPL_1_0 = "Open Public License v1.0"
+licenseName OPL_UK_3_0 = "United    Kingdom Open Parliament Licence v3.0"
+licenseName OPUBL_1_0 = "Open Publication License v1.0"
+licenseName OSC_1_0 = "OSC License 1.0"
+licenseName OSET_PL_2_1 = "OSET Public License version 2.1"
+licenseName OSL_1_0 = "Open Software License 1.0"
+licenseName OSL_1_1 = "Open Software License 1.1"
+licenseName OSL_2_0 = "Open Software License 2.0"
+licenseName OSL_2_1 = "Open Software License 2.1"
+licenseName OSL_3_0 = "Open Software License 3.0"
+licenseName OSSP = "OSSP License"
+licenseName PADL = "PADL License"
+licenseName ParaType_Free_Font_1_3 = "ParaType Free Font Licensing Agreement v1.3"
+licenseName Parity_6_0_0 = "The Parity Public License 6.0.0"
+licenseName Parity_7_0_0 = "The Parity Public License 7.0.0"
+licenseName PDDL_1_0 = "Open Data Commons Public Domain Dedication & License 1.0"
+licenseName PHP_3_01 = "PHP License v3.01"
+licenseName PHP_3_0 = "PHP License v3.0"
+licenseName Pixar = "Pixar License"
+licenseName Pkgconf = "pkgconf License"
+licenseName Plexus = "Plexus Classworlds License"
+licenseName Pnmstitch = "pnmstitch License"
+licenseName PolyForm_Noncommercial_1_0_0 = "PolyForm Noncommercial License 1.0.0"
+licenseName PolyForm_Small_Business_1_0_0 = "PolyForm Small Business License 1.0.0"
+licenseName PostgreSQL = "PostgreSQL License"
+licenseName PPL = "Peer Production License"
+licenseName PSF_2_0 = "Python Software Foundation License 2.0"
+licenseName Psfrag = "psfrag License"
+licenseName Psutils = "psutils License"
+licenseName Python_2_0_1 = "Python License 2.0.1"
+licenseName Python_2_0 = "Python License 2.0"
+licenseName Python_ldap = "Python ldap License"
+licenseName Qhull = "Qhull License"
+licenseName QPL_1_0_INRIA_2004 = "Q Public License 1.0 - INRIA 2004 variant"
+licenseName QPL_1_0 = "Q Public License 1.0"
+licenseName Radvd = "radvd License"
+licenseName Rdisc = "Rdisc License"
+licenseName RHeCos_1_1 = "Red Hat eCos Public License v1.1"
+licenseName RPL_1_1 = "Reciprocal Public License 1.1"
+licenseName RPL_1_5 = "Reciprocal Public License 1.5"
+licenseName RPSL_1_0 = "RealNetworks Public Source License v1.0"
+licenseName RSA_MD = "RSA Message-Digest License"
+licenseName RSCPL = "Ricoh Source Code Public License"
+licenseName Ruby_pty = "Ruby pty extension license"
+licenseName Ruby = "Ruby License"
+licenseName SAX_PD_2_0 = "Sax Public Domain Notice 2.0"
+licenseName SAX_PD = "Sax Public Domain Notice"
+licenseName Saxpath = "Saxpath License"
+licenseName SCEA = "SCEA Shared Source License"
+licenseName SchemeReport = "Scheme Language Report License"
+licenseName Sendmail_8_23 = "Sendmail License 8.23"
+licenseName Sendmail_Open_Source_1_1 = "Sendmail Open Source License v1.1"
+licenseName Sendmail = "Sendmail License"
+licenseName SGI_B_1_0 = "SGI Free Software License B v1.0"
+licenseName SGI_B_1_1 = "SGI Free Software License B v1.1"
+licenseName SGI_B_2_0 = "SGI Free Software License B v2.0"
+licenseName SGI_OpenGL = "SGI OpenGL License"
+licenseName SGMLUG_PM = "SGMLUG Parser Materials License"
+licenseName SGP4 = "SGP4 Permission Notice"
+licenseName SHL_0_51 = "Solderpad Hardware License, Version 0.51"
+licenseName SHL_0_5 = "Solderpad Hardware License v0.5"
+licenseName SimPL_2_0 = "Simple Public License 2.0"
+licenseName SISSL_1_2 = "Sun Industry Standards Source License v1.2"
+licenseName SISSL = "Sun Industry Standards Source License v1.1"
+licenseName Sleepycat = "Sleepycat License"
+licenseName SL = "SL License"
+licenseName SMAIL_GPL = "SMAIL General Public License"
+licenseName SMLNJ = "Standard ML of New Jersey License"
+licenseName SMPPL = "Secure Messaging Protocol Public License"
+licenseName SNIA = "SNIA Public License 1.1"
+licenseName Snprintf = "snprintf License"
+licenseName SOFA = "SOFA Software License"
+licenseName SoftSurfer = "softSurfer License"
+licenseName Soundex = "Soundex License"
+licenseName Spencer_86 = "Spencer License 86"
+licenseName Spencer_94 = "Spencer License 94"
+licenseName Spencer_99 = "Spencer License 99"
+licenseName SPL_1_0 = "Sun Public License v1.0"
+licenseName Ssh_keyscan = "ssh-keyscan License"
+licenseName SSH_OpenSSH = "SSH OpenSSH license"
+licenseName SSH_short = "SSH short notice"
+licenseName SSLeay_standalone = "SSLeay License - standalone"
+licenseName SSPL_1_0 = "Server Side Public License, v 1"
+licenseName SugarCRM_1_1_3 = "SugarCRM Public License v1.1.3"
+licenseName SUL_1_0 = "Sustainable Use License v1.0"
+licenseName Sun_PPP_2000 = "Sun PPP License (2000)"
+licenseName Sun_PPP = "Sun PPP License"
+licenseName SunPro = "SunPro License"
+licenseName SWL = "Scheme Widget Library (SWL) Software License Agreement"
+licenseName Swrule = "swrule License"
+licenseName Symlinks = "Symlinks License"
+licenseName TAPR_OHL_1_0 = "TAPR Open Hardware License v1.0"
+licenseName TCL = "TCL/TK License"
+licenseName TCP_wrappers = "TCP Wrappers License"
+licenseName TekHVC = "TekHVC License"
+licenseName TermReadKey = "TermReadKey License"
+licenseName TGPPL_1_0 = "Transitive Grace Period Public Licence 1.0"
+licenseName ThirdEye = "ThirdEye License"
+licenseName Threeparttable = "threeparttable License"
+licenseName TMate = "TMate Open Source License"
+licenseName TORQUE_1_1 = "TORQUE v2.5+ Software License v1.1"
+licenseName TOSL = "Trusster Open Source License"
+licenseName TPDL = "Time::ParseDate License"
+licenseName TPL_1_0 = "THOR Public License 1.0"
+licenseName TrustedQSL = "TrustedQSL License"
+licenseName TTWL = "Text-Tabs+Wrap License"
+licenseName TTYP0 = "TTYP0 License"
+licenseName TU_Berlin_1_0 = "Technische Universitaet Berlin License 1.0"
+licenseName TU_Berlin_2_0 = "Technische Universitaet Berlin License 2.0"
+licenseName Ubuntu_font_1_0 = "Ubuntu Font Licence v1.0"
+licenseName UCAR = "UCAR License"
+licenseName UCL_1_0 = "Upstream Compatibility License v1.0"
+licenseName Ulem = "ulem License"
+licenseName UMich_Merit = "Michigan/Merit Networks License"
+licenseName Unicode_3_0 = "Unicode License v3"
+licenseName Unicode_DFS_2015 = "Unicode License Agreement - Data Files and Software (2015)"
+licenseName Unicode_DFS_2016 = "Unicode License Agreement - Data Files and Software (2016)"
+licenseName Unicode_TOU = "Unicode Terms of Use"
+licenseName UnixCrypt = "UnixCrypt License"
+licenseName Unlicense_libtelnet = "Unlicense - libtelnet variant"
+licenseName Unlicense_libwhirlpool = "Unlicense - libwhirlpool variant"
+licenseName Unlicense = "The Unlicense"
+licenseName UnRAR = "UnRAR License"
+licenseName UPL_1_0 = "Universal Permissive License v1.0"
+licenseName URT_RLE = "Utah Raster Toolkit Run Length Encoded License"
+licenseName Vim = "Vim License"
+licenseName Vixie_Cron = "Vixie Cron License"
+licenseName VOSTROM = "VOSTROM Public License for Open Source"
+licenseName VSL_1_0 = "Vovida Software License v1.0"
+licenseName W3C_19980720 = "W3C Software Notice and License (1998-07-20)"
+licenseName W3C_20150513 = "W3C Software Notice and Document License (2015-05-13)"
+licenseName W3C = "W3C Software Notice and License (2002-12-31)"
+licenseName W3m = "w3m License"
+licenseName Watcom_1_0 = "Sybase Open Watcom Public License 1.0"
+licenseName Widget_Workshop = "Widget Workshop License"
+licenseName WordNet = "WordNet License"
+licenseName Wsuipa = "Wsuipa License"
+licenseName WTFNMFPL = "Do What The F*ck You Want To But It's Not My Fault Public License"
+licenseName WTFPL = "Do What The F*ck You Want To Public License"
+licenseName Wwl = "WWL License"
+licenseName X11_distribute_modifications_variant = "X11 License Distribution Modification Variant"
+licenseName X11_no_permit_persons = "X11 no permit persons clause"
+licenseName X11_swapped = "X11 swapped final paragraphs"
+licenseName X11 = "X11 License"
+licenseName Xdebug_1_03 = "Xdebug License v 1.03"
+licenseName Xerox = "Xerox License"
+licenseName Xfig = "Xfig License"
+licenseName XFree86_1_1 = "XFree86 License 1.1"
+licenseName Xinetd = "xinetd License"
+licenseName Xkeyboard_config_Zinoviev = "xkeyboard-config Zinoviev License"
+licenseName Xlock = "xlock License"
+licenseName Xnet = "X.Net License"
+licenseName Xpp = "XPP License"
+licenseName XSkat = "XSkat License"
+licenseName Xzoom = "xzoom License"
+licenseName YPL_1_0 = "Yahoo! Public License v1.0"
+licenseName YPL_1_1 = "Yahoo! Public License v1.1"
+licenseName Zed = "Zed License"
+licenseName Zeeff = "Zeeff License"
+licenseName Zend_2_0 = "Zend License v2.0"
+licenseName Zimbra_1_3 = "Zimbra Public License v1.3"
+licenseName Zimbra_1_4 = "Zimbra Public License v1.4"
+licenseName Zlib_acknowledgement = "zlib/libpng License with Acknowledgement"
+licenseName Zlib = "zlib License"
+licenseName ZPL_1_1 = "Zope Public License 1.1"
+licenseName ZPL_2_0 = "Zope Public License 2.0"
+licenseName ZPL_2_1 = "Zope Public License 2.1"
+
+-- | Whether the license is approved by Open Source Initiative (OSI).
+--
+-- See <https://opensource.org/licenses/alphabetical>.
+licenseIsOsiApproved :: LicenseId -> Bool
+licenseIsOsiApproved N_0BSD = True
+licenseIsOsiApproved AAL = True
+licenseIsOsiApproved AFL_1_1 = True
+licenseIsOsiApproved AFL_1_2 = True
+licenseIsOsiApproved AFL_2_0 = True
+licenseIsOsiApproved AFL_2_1 = True
+licenseIsOsiApproved AFL_3_0 = True
+licenseIsOsiApproved AGPL_3_0_only = True
+licenseIsOsiApproved AGPL_3_0_or_later = True
+licenseIsOsiApproved ALGLIB_Documentation = True
+licenseIsOsiApproved Apache_1_1 = True
+licenseIsOsiApproved Apache_2_0 = True
+licenseIsOsiApproved APL_1_0 = True
+licenseIsOsiApproved APSL_1_0 = True
+licenseIsOsiApproved APSL_1_1 = True
+licenseIsOsiApproved APSL_1_2 = True
+licenseIsOsiApproved APSL_2_0 = True
+licenseIsOsiApproved Artistic_1_0_cl8 = True
+licenseIsOsiApproved Artistic_1_0_Perl = True
+licenseIsOsiApproved Artistic_1_0 = True
+licenseIsOsiApproved Artistic_2_0 = True
+licenseIsOsiApproved BlueOak_1_0_0 = True
+licenseIsOsiApproved BSD_1_Clause = True
+licenseIsOsiApproved BSD_2_Clause_Patent = True
+licenseIsOsiApproved BSD_2_Clause = True
+licenseIsOsiApproved BSD_3_Clause_LBNL = True
+licenseIsOsiApproved BSD_3_Clause_Open_MPI = True
+licenseIsOsiApproved BSD_3_Clause = True
+licenseIsOsiApproved BSL_1_0 = True
+licenseIsOsiApproved CAL_1_0_Combined_Work_Exception = True
+licenseIsOsiApproved CAL_1_0 = True
+licenseIsOsiApproved CATOSL_1_1 = True
+licenseIsOsiApproved CDDL_1_0 = True
+licenseIsOsiApproved CECILL_2_1 = True
+licenseIsOsiApproved CERN_OHL_P_2_0 = True
+licenseIsOsiApproved CERN_OHL_S_2_0 = True
+licenseIsOsiApproved CERN_OHL_W_2_0 = True
+licenseIsOsiApproved CNRI_Python = True
+licenseIsOsiApproved CPAL_1_0 = True
+licenseIsOsiApproved CPL_1_0 = True
+licenseIsOsiApproved CUA_OPL_1_0 = True
+licenseIsOsiApproved ECL_1_0 = True
+licenseIsOsiApproved ECL_2_0 = True
+licenseIsOsiApproved EFL_1_0 = True
+licenseIsOsiApproved EFL_2_0 = True
+licenseIsOsiApproved Entessa = True
+licenseIsOsiApproved EPL_1_0 = True
+licenseIsOsiApproved EPL_2_0 = True
+licenseIsOsiApproved EUDatagrid = True
+licenseIsOsiApproved EUPL_1_1 = True
+licenseIsOsiApproved EUPL_1_2 = True
+licenseIsOsiApproved Fair = True
+licenseIsOsiApproved Frameworx_1_0 = True
+licenseIsOsiApproved GPL_2_0_only = True
+licenseIsOsiApproved GPL_2_0_or_later = True
+licenseIsOsiApproved GPL_3_0_only = True
+licenseIsOsiApproved GPL_3_0_or_later = True
+licenseIsOsiApproved HPND = True
+licenseIsOsiApproved ICU = True
+licenseIsOsiApproved Intel = True
+licenseIsOsiApproved IPA = True
+licenseIsOsiApproved IPL_1_0 = True
+licenseIsOsiApproved ISC = True
+licenseIsOsiApproved Jam = True
+licenseIsOsiApproved LGPL_2_0_only = True
+licenseIsOsiApproved LGPL_2_0_or_later = True
+licenseIsOsiApproved LGPL_2_1_only = True
+licenseIsOsiApproved LGPL_2_1_or_later = True
+licenseIsOsiApproved LGPL_3_0_only = True
+licenseIsOsiApproved LGPL_3_0_or_later = True
+licenseIsOsiApproved LiLiQ_P_1_1 = True
+licenseIsOsiApproved LiLiQ_R_1_1 = True
+licenseIsOsiApproved LiLiQ_Rplus_1_1 = True
+licenseIsOsiApproved LPL_1_02 = True
+licenseIsOsiApproved LPL_1_0 = True
+licenseIsOsiApproved LPPL_1_3c = True
+licenseIsOsiApproved MirOS = True
+licenseIsOsiApproved MIT_0 = True
+licenseIsOsiApproved MIT_Modern_Variant = True
+licenseIsOsiApproved MIT = True
+licenseIsOsiApproved Motosoto = True
+licenseIsOsiApproved MPL_1_0 = True
+licenseIsOsiApproved MPL_1_1 = True
+licenseIsOsiApproved MPL_2_0_no_copyleft_exception = True
+licenseIsOsiApproved MPL_2_0 = True
+licenseIsOsiApproved MS_PL = True
+licenseIsOsiApproved MS_RL = True
+licenseIsOsiApproved MulanPSL_2_0 = True
+licenseIsOsiApproved Multics = True
+licenseIsOsiApproved NASA_1_3 = True
+licenseIsOsiApproved Naumen = True
+licenseIsOsiApproved NCSA = True
+licenseIsOsiApproved NGPL = True
+licenseIsOsiApproved Nokia = True
+licenseIsOsiApproved NPOSL_3_0 = True
+licenseIsOsiApproved NTP = True
+licenseIsOsiApproved OCLC_2_0 = True
+licenseIsOsiApproved OFL_1_1_no_RFN = True
+licenseIsOsiApproved OFL_1_1_RFN = True
+licenseIsOsiApproved OFL_1_1 = True
+licenseIsOsiApproved OGTSL = True
+licenseIsOsiApproved OLDAP_2_8 = True
+licenseIsOsiApproved OLFL_1_3 = True
+licenseIsOsiApproved OSC_1_0 = True
+licenseIsOsiApproved OSET_PL_2_1 = True
+licenseIsOsiApproved OSL_1_0 = True
+licenseIsOsiApproved OSL_2_0 = True
+licenseIsOsiApproved OSL_2_1 = True
+licenseIsOsiApproved OSL_3_0 = True
+licenseIsOsiApproved PHP_3_01 = True
+licenseIsOsiApproved PHP_3_0 = True
+licenseIsOsiApproved PostgreSQL = True
+licenseIsOsiApproved Python_2_0 = True
+licenseIsOsiApproved QPL_1_0 = True
+licenseIsOsiApproved RPL_1_1 = True
+licenseIsOsiApproved RPL_1_5 = True
+licenseIsOsiApproved RPSL_1_0 = True
+licenseIsOsiApproved RSCPL = True
+licenseIsOsiApproved SimPL_2_0 = True
+licenseIsOsiApproved SISSL = True
+licenseIsOsiApproved Sleepycat = True
+licenseIsOsiApproved SPL_1_0 = True
+licenseIsOsiApproved UCL_1_0 = True
+licenseIsOsiApproved Unicode_3_0 = True
+licenseIsOsiApproved Unicode_DFS_2016 = True
+licenseIsOsiApproved Unlicense = True
+licenseIsOsiApproved UPL_1_0 = True
+licenseIsOsiApproved VSL_1_0 = True
+licenseIsOsiApproved W3C_20150513 = True
+licenseIsOsiApproved W3C = True
+licenseIsOsiApproved Watcom_1_0 = True
+licenseIsOsiApproved WordNet = True
+licenseIsOsiApproved Xnet = True
+licenseIsOsiApproved Zlib = True
+licenseIsOsiApproved ZPL_2_0 = True
+licenseIsOsiApproved ZPL_2_1 = True
+licenseIsOsiApproved _ = False
+
+-- | Whether the license is considered libre by Free Software Foundation (FSF).
+--
+-- See <https://www.gnu.org/licenses/license-list.en.html>
+--
+-- @since 3.4.0.0
+--
+licenseIsFsfLibre :: LicenseId -> Bool
+licenseIsFsfLibre AFL_1_1 = True
+licenseIsFsfLibre AFL_1_2 = True
+licenseIsFsfLibre AFL_2_0 = True
+licenseIsFsfLibre AFL_2_1 = True
+licenseIsFsfLibre AFL_3_0 = True
+licenseIsFsfLibre AGPL_1_0 = True
+licenseIsFsfLibre AGPL_3_0_only = True
+licenseIsFsfLibre AGPL_3_0_or_later = True
+licenseIsFsfLibre Apache_1_0 = True
+licenseIsFsfLibre Apache_1_1 = True
+licenseIsFsfLibre Apache_2_0 = True
+licenseIsFsfLibre APSL_2_0 = True
+licenseIsFsfLibre Artistic_2_0 = True
+licenseIsFsfLibre BitTorrent_1_1 = True
+licenseIsFsfLibre BSD_2_Clause_FreeBSD = True
+licenseIsFsfLibre BSD_2_Clause = True
+licenseIsFsfLibre BSD_3_Clause_Clear = True
+licenseIsFsfLibre BSD_3_Clause = True
+licenseIsFsfLibre BSD_4_Clause = True
+licenseIsFsfLibre BSL_1_0 = True
+licenseIsFsfLibre CC_BY_4_0 = True
+licenseIsFsfLibre CC_BY_SA_4_0 = True
+licenseIsFsfLibre CC0_1_0 = True
+licenseIsFsfLibre CDDL_1_0 = True
+licenseIsFsfLibre CECILL_2_0 = True
+licenseIsFsfLibre CECILL_B = True
+licenseIsFsfLibre CECILL_C = True
+licenseIsFsfLibre ClArtistic = True
+licenseIsFsfLibre Condor_1_1 = True
+licenseIsFsfLibre CPAL_1_0 = True
+licenseIsFsfLibre CPL_1_0 = True
+licenseIsFsfLibre ECL_2_0 = True
+licenseIsFsfLibre EFL_2_0 = True
+licenseIsFsfLibre EPL_1_0 = True
+licenseIsFsfLibre EPL_2_0 = True
+licenseIsFsfLibre EUDatagrid = True
+licenseIsFsfLibre EUPL_1_1 = True
+licenseIsFsfLibre EUPL_1_2 = True
+licenseIsFsfLibre FSFAP = True
+licenseIsFsfLibre FTL = True
+licenseIsFsfLibre GFDL_1_1_only = True
+licenseIsFsfLibre GFDL_1_1_or_later = True
+licenseIsFsfLibre GFDL_1_2_only = True
+licenseIsFsfLibre GFDL_1_2_or_later = True
+licenseIsFsfLibre GFDL_1_3_only = True
+licenseIsFsfLibre GFDL_1_3_or_later = True
+licenseIsFsfLibre Gnuplot = True
+licenseIsFsfLibre GPL_2_0_only = True
+licenseIsFsfLibre GPL_2_0_or_later = True
+licenseIsFsfLibre GPL_3_0_only = True
+licenseIsFsfLibre GPL_3_0_or_later = True
+licenseIsFsfLibre HPND = True
+licenseIsFsfLibre IJG = True
+licenseIsFsfLibre IMatix = True
+licenseIsFsfLibre Imlib2 = True
+licenseIsFsfLibre Intel = True
+licenseIsFsfLibre IPA = True
+licenseIsFsfLibre IPL_1_0 = True
+licenseIsFsfLibre ISC = True
+licenseIsFsfLibre LGPL_2_1_only = True
+licenseIsFsfLibre LGPL_2_1_or_later = True
+licenseIsFsfLibre LGPL_3_0_only = True
+licenseIsFsfLibre LGPL_3_0_or_later = True
+licenseIsFsfLibre LPL_1_02 = True
+licenseIsFsfLibre LPPL_1_2 = True
+licenseIsFsfLibre LPPL_1_3a = True
+licenseIsFsfLibre MIT = True
+licenseIsFsfLibre MPL_1_1 = True
+licenseIsFsfLibre MPL_2_0 = True
+licenseIsFsfLibre MS_PL = True
+licenseIsFsfLibre MS_RL = True
+licenseIsFsfLibre NCSA = True
+licenseIsFsfLibre Nokia = True
+licenseIsFsfLibre NOSL = True
+licenseIsFsfLibre NPL_1_0 = True
+licenseIsFsfLibre NPL_1_1 = True
+licenseIsFsfLibre ODbL_1_0 = True
+licenseIsFsfLibre OFL_1_0 = True
+licenseIsFsfLibre OFL_1_1 = True
+licenseIsFsfLibre OLDAP_2_3 = True
+licenseIsFsfLibre OLDAP_2_7 = True
+licenseIsFsfLibre OpenSSL = True
+licenseIsFsfLibre OSL_1_0 = True
+licenseIsFsfLibre OSL_1_1 = True
+licenseIsFsfLibre OSL_2_0 = True
+licenseIsFsfLibre OSL_2_1 = True
+licenseIsFsfLibre OSL_3_0 = True
+licenseIsFsfLibre PHP_3_01 = True
+licenseIsFsfLibre Python_2_0 = True
+licenseIsFsfLibre QPL_1_0 = True
+licenseIsFsfLibre RPSL_1_0 = True
+licenseIsFsfLibre Ruby = True
+licenseIsFsfLibre SGI_B_2_0 = True
+licenseIsFsfLibre SISSL = True
+licenseIsFsfLibre Sleepycat = True
+licenseIsFsfLibre SMLNJ = True
+licenseIsFsfLibre SPL_1_0 = True
+licenseIsFsfLibre Unlicense = True
+licenseIsFsfLibre UPL_1_0 = True
+licenseIsFsfLibre Vim = True
+licenseIsFsfLibre W3C = True
+licenseIsFsfLibre WTFPL = True
+licenseIsFsfLibre X11 = True
+licenseIsFsfLibre XFree86_1_1 = True
+licenseIsFsfLibre Xinetd = True
+licenseIsFsfLibre YPL_1_1 = True
+licenseIsFsfLibre Zend_2_0 = True
+licenseIsFsfLibre Zimbra_1_3 = True
+licenseIsFsfLibre Zlib = True
+licenseIsFsfLibre ZPL_2_0 = True
+licenseIsFsfLibre ZPL_2_1 = True
+licenseIsFsfLibre _ = False
+
+-------------------------------------------------------------------------------
+-- Creation
+-------------------------------------------------------------------------------
+
+licenseIdList :: LicenseListVersion -> [LicenseId]
+licenseIdList LicenseListVersion_3_0 =
+    [ AGPL_1_0
+    , BSD_2_Clause_FreeBSD
+    , BSD_2_Clause_NetBSD
+    , Bzip2_1_0_5
+    , Net_SNMP
+    ]
+    ++ bulkOfLicenses
+licenseIdList LicenseListVersion_3_2 =
+    [ AGPL_1_0_only
+    , AGPL_1_0_or_later
+    , BSD_2_Clause_FreeBSD
+    , BSD_2_Clause_NetBSD
+    , Bzip2_1_0_5
+    , Linux_OpenIB
+    , MIT_0
+    , Net_SNMP
+    , ODC_By_1_0
+    , TU_Berlin_1_0
+    , TU_Berlin_2_0
+    ]
+    ++ bulkOfLicenses
+licenseIdList LicenseListVersion_3_6 =
+    [ AGPL_1_0_only
+    , AGPL_1_0_or_later
+    , Blessing
+    , BlueOak_1_0_0
+    , BSD_2_Clause_FreeBSD
+    , BSD_2_Clause_NetBSD
+    , BSD_3_Clause_Open_MPI
+    , Bzip2_1_0_5
+    , CC_PDDC
+    , CERN_OHL_1_1
+    , CERN_OHL_1_2
+    , Copyleft_next_0_3_0
+    , Copyleft_next_0_3_1
+    , HPND_sell_variant
+    , JPNIC
+    , Libpng_2_0
+    , Linux_OpenIB
+    , MIT_0
+    , Net_SNMP
+    , ODC_By_1_0
+    , OGL_UK_1_0
+    , OGL_UK_2_0
+    , OGL_UK_3_0
+    , Parity_6_0_0
+    , Sendmail_8_23
+    , SHL_0_51
+    , SHL_0_5
+    , SSPL_1_0
+    , TAPR_OHL_1_0
+    , TU_Berlin_1_0
+    , TU_Berlin_2_0
+    ]
+    ++ bulkOfLicenses
+licenseIdList LicenseListVersion_3_9 =
+    [ AGPL_1_0_only
+    , AGPL_1_0_or_later
+    , Blessing
+    , BlueOak_1_0_0
+    , BSD_2_Clause_FreeBSD
+    , BSD_3_Clause_Open_MPI
+    , Bzip2_1_0_5
+    , CAL_1_0_Combined_Work_Exception
+    , CAL_1_0
+    , CC_PDDC
+    , CERN_OHL_1_1
+    , CERN_OHL_1_2
+    , CERN_OHL_P_2_0
+    , CERN_OHL_S_2_0
+    , CERN_OHL_W_2_0
+    , Copyleft_next_0_3_0
+    , Copyleft_next_0_3_1
+    , Etalab_2_0
+    , Hippocratic_2_1
+    , HPND_sell_variant
+    , JPNIC
+    , Libpng_2_0
+    , Libselinux_1_0
+    , Linux_OpenIB
+    , MIT_0
+    , MulanPSL_1_0
+    , MulanPSL_2_0
+    , NCGL_UK_2_0
+    , Net_SNMP
+    , NTP_0
+    , O_UDA_1_0
+    , ODC_By_1_0
+    , OFL_1_0_no_RFN
+    , OFL_1_0_RFN
+    , OFL_1_1_no_RFN
+    , OFL_1_1_RFN
+    , OGC_1_0
+    , OGL_Canada_2_0
+    , OGL_UK_1_0
+    , OGL_UK_2_0
+    , OGL_UK_3_0
+    , Parity_6_0_0
+    , Parity_7_0_0
+    , PolyForm_Noncommercial_1_0_0
+    , PolyForm_Small_Business_1_0_0
+    , PSF_2_0
+    , Sendmail_8_23
+    , SHL_0_51
+    , SHL_0_5
+    , SSH_OpenSSH
+    , SSH_short
+    , SSPL_1_0
+    , TAPR_OHL_1_0
+    , TU_Berlin_1_0
+    , TU_Berlin_2_0
+    , UCL_1_0
+    ]
+    ++ bulkOfLicenses
+licenseIdList LicenseListVersion_3_10 =
+    [ AGPL_1_0_only
+    , AGPL_1_0_or_later
+    , Blessing
+    , BlueOak_1_0_0
+    , BSD_2_Clause_Views
+    , BSD_3_Clause_Open_MPI
+    , Bzip2_1_0_5
+    , CAL_1_0_Combined_Work_Exception
+    , CAL_1_0
+    , CC_BY_3_0_AT
+    , CC_BY_NC_ND_3_0_IGO
+    , CC_BY_SA_3_0_AT
+    , CC_PDDC
+    , CERN_OHL_1_1
+    , CERN_OHL_1_2
+    , CERN_OHL_P_2_0
+    , CERN_OHL_S_2_0
+    , CERN_OHL_W_2_0
+    , Copyleft_next_0_3_0
+    , Copyleft_next_0_3_1
+    , EPICS
+    , Etalab_2_0
+    , GFDL_1_1_invariants_only
+    , GFDL_1_1_invariants_or_later
+    , GFDL_1_1_no_invariants_only
+    , GFDL_1_1_no_invariants_or_later
+    , GFDL_1_2_invariants_only
+    , GFDL_1_2_invariants_or_later
+    , GFDL_1_2_no_invariants_only
+    , GFDL_1_2_no_invariants_or_later
+    , GFDL_1_3_invariants_only
+    , GFDL_1_3_invariants_or_later
+    , GFDL_1_3_no_invariants_only
+    , GFDL_1_3_no_invariants_or_later
+    , GLWTPL
+    , Hippocratic_2_1
+    , HPND_sell_variant
+    , JPNIC
+    , Libpng_2_0
+    , Libselinux_1_0
+    , Linux_OpenIB
+    , MIT_0
+    , MulanPSL_1_0
+    , MulanPSL_2_0
+    , NCGL_UK_2_0
+    , Net_SNMP
+    , NIST_PD_fallback
+    , NIST_PD
+    , NTP_0
+    , O_UDA_1_0
+    , ODC_By_1_0
+    , OFL_1_0_no_RFN
+    , OFL_1_0_RFN
+    , OFL_1_1_no_RFN
+    , OFL_1_1_RFN
+    , OGC_1_0
+    , OGL_Canada_2_0
+    , OGL_UK_1_0
+    , OGL_UK_2_0
+    , OGL_UK_3_0
+    , Parity_6_0_0
+    , Parity_7_0_0
+    , PolyForm_Noncommercial_1_0_0
+    , PolyForm_Small_Business_1_0_0
+    , PSF_2_0
+    , Sendmail_8_23
+    , SHL_0_51
+    , SHL_0_5
+    , SSH_OpenSSH
+    , SSH_short
+    , SSPL_1_0
+    , TAPR_OHL_1_0
+    , TU_Berlin_1_0
+    , TU_Berlin_2_0
+    , UCL_1_0
+    ]
+    ++ bulkOfLicenses
+licenseIdList LicenseListVersion_3_16 =
+    [ AGPL_1_0_only
+    , AGPL_1_0_or_later
+    , ANTLR_PD_fallback
+    , App_s2p
+    , Blessing
+    , BlueOak_1_0_0
+    , BSD_2_Clause_Views
+    , BSD_3_Clause_Modification
+    , BSD_3_Clause_No_Military_License
+    , BSD_3_Clause_Open_MPI
+    , BSD_4_Clause_Shortened
+    , BUSL_1_1
+    , C_UDA_1_0
+    , CAL_1_0_Combined_Work_Exception
+    , CAL_1_0
+    , CC_BY_2_5_AU
+    , CC_BY_3_0_AT
+    , CC_BY_3_0_DE
+    , CC_BY_3_0_NL
+    , CC_BY_3_0_US
+    , CC_BY_NC_3_0_DE
+    , CC_BY_NC_ND_3_0_DE
+    , CC_BY_NC_ND_3_0_IGO
+    , CC_BY_NC_SA_2_0_FR
+    , CC_BY_NC_SA_2_0_UK
+    , CC_BY_NC_SA_3_0_DE
+    , CC_BY_NC_SA_3_0_IGO
+    , CC_BY_ND_3_0_DE
+    , CC_BY_SA_2_0_UK
+    , CC_BY_SA_2_1_JP
+    , CC_BY_SA_3_0_AT
+    , CC_BY_SA_3_0_DE
+    , CC_PDDC
+    , CDL_1_0
+    , CDLA_Permissive_2_0
+    , CERN_OHL_1_1
+    , CERN_OHL_1_2
+    , CERN_OHL_P_2_0
+    , CERN_OHL_S_2_0
+    , CERN_OHL_W_2_0
+    , COIL_1_0
+    , Community_Spec_1_0
+    , Copyleft_next_0_3_0
+    , Copyleft_next_0_3_1
+    , DL_DE_BY_2_0
+    , DRL_1_0
+    , Elastic_2_0
+    , EPICS
+    , Etalab_2_0
+    , FDK_AAC
+    , FreeBSD_DOC
+    , GD
+    , GFDL_1_1_invariants_only
+    , GFDL_1_1_invariants_or_later
+    , GFDL_1_1_no_invariants_only
+    , GFDL_1_1_no_invariants_or_later
+    , GFDL_1_2_invariants_only
+    , GFDL_1_2_invariants_or_later
+    , GFDL_1_2_no_invariants_only
+    , GFDL_1_2_no_invariants_or_later
+    , GFDL_1_3_invariants_only
+    , GFDL_1_3_invariants_or_later
+    , GFDL_1_3_no_invariants_only
+    , GFDL_1_3_no_invariants_or_later
+    , GLWTPL
+    , Hippocratic_2_1
+    , HPND_sell_variant
+    , HTMLTIDY
+    , Jam
+    , JPNIC
+    , Libpng_2_0
+    , Libselinux_1_0
+    , Linux_man_pages_copyleft
+    , Linux_OpenIB
+    , MIT_0
+    , MIT_Modern_Variant
+    , MIT_open_group
+    , MulanPSL_1_0
+    , MulanPSL_2_0
+    , NAIST_2003
+    , NCGL_UK_2_0
+    , Net_SNMP
+    , NIST_PD_fallback
+    , NIST_PD
+    , NLOD_2_0
+    , NTP_0
+    , O_UDA_1_0
+    , ODC_By_1_0
+    , OFL_1_0_no_RFN
+    , OFL_1_0_RFN
+    , OFL_1_1_no_RFN
+    , OFL_1_1_RFN
+    , OGC_1_0
+    , OGDL_Taiwan_1_0
+    , OGL_Canada_2_0
+    , OGL_UK_1_0
+    , OGL_UK_2_0
+    , OGL_UK_3_0
+    , OPUBL_1_0
+    , Parity_6_0_0
+    , Parity_7_0_0
+    , PolyForm_Noncommercial_1_0_0
+    , PolyForm_Small_Business_1_0_0
+    , PSF_2_0
+    , SchemeReport
+    , Sendmail_8_23
+    , SHL_0_51
+    , SHL_0_5
+    , SSH_OpenSSH
+    , SSH_short
+    , SSPL_1_0
+    , TAPR_OHL_1_0
+    , TU_Berlin_1_0
+    , TU_Berlin_2_0
+    , UCL_1_0
+    , X11_distribute_modifications_variant
+    ]
+    ++ bulkOfLicenses
+licenseIdList LicenseListVersion_3_23 =
+    [ AdaCore_doc
+    , Adobe_Display_PostScript
+    , Adobe_Utopia
+    , AGPL_1_0_only
+    , AGPL_1_0_or_later
+    , AML_glslang
+    , ANTLR_PD_fallback
+    , App_s2p
+    , Arphic_1999
+    , ASWF_Digital_Assets_1_0
+    , ASWF_Digital_Assets_1_1
+    , Baekmuk
+    , Bcrypt_Solar_Designer
+    , Bitstream_Charter
+    , Bitstream_Vera
+    , Blessing
+    , BlueOak_1_0_0
+    , Boehm_GC
+    , Brian_Gladman_2_Clause
+    , Brian_Gladman_3_Clause
+    , BSD_2_Clause_Darwin
+    , BSD_2_Clause_Views
+    , BSD_3_Clause_acpica
+    , BSD_3_Clause_flex
+    , BSD_3_Clause_HP
+    , BSD_3_Clause_Modification
+    , BSD_3_Clause_No_Military_License
+    , BSD_3_Clause_Open_MPI
+    , BSD_3_Clause_Sun
+    , BSD_4_Clause_Shortened
+    , BSD_4_3RENO
+    , BSD_4_3TAHOE
+    , BSD_Advertising_Acknowledgement
+    , BSD_Attribution_HPND_disclaimer
+    , BSD_Inferno_Nettverk
+    , BSD_Source_beginning_file
+    , BSD_Systemics_W3Works
+    , BSD_Systemics
+    , BUSL_1_1
+    , C_UDA_1_0
+    , CAL_1_0_Combined_Work_Exception
+    , CAL_1_0
+    , Caldera_no_preamble
+    , CC_BY_2_5_AU
+    , CC_BY_3_0_AT
+    , CC_BY_3_0_AU
+    , CC_BY_3_0_DE
+    , CC_BY_3_0_IGO
+    , CC_BY_3_0_NL
+    , CC_BY_3_0_US
+    , CC_BY_NC_3_0_DE
+    , CC_BY_NC_ND_3_0_DE
+    , CC_BY_NC_ND_3_0_IGO
+    , CC_BY_NC_SA_2_0_DE
+    , CC_BY_NC_SA_2_0_FR
+    , CC_BY_NC_SA_2_0_UK
+    , CC_BY_NC_SA_3_0_DE
+    , CC_BY_NC_SA_3_0_IGO
+    , CC_BY_ND_3_0_DE
+    , CC_BY_SA_2_0_UK
+    , CC_BY_SA_2_1_JP
+    , CC_BY_SA_3_0_AT
+    , CC_BY_SA_3_0_DE
+    , CC_BY_SA_3_0_IGO
+    , CC_PDDC
+    , CDL_1_0
+    , CDLA_Permissive_2_0
+    , CERN_OHL_1_1
+    , CERN_OHL_1_2
+    , CERN_OHL_P_2_0
+    , CERN_OHL_S_2_0
+    , CERN_OHL_W_2_0
+    , CFITSIO
+    , Check_cvs
+    , Checkmk
+    , Clips
+    , CMU_Mach_nodoc
+    , CMU_Mach
+    , COIL_1_0
+    , Community_Spec_1_0
+    , Copyleft_next_0_3_0
+    , Copyleft_next_0_3_1
+    , Cornell_Lossless_JPEG
+    , Cronyx
+    , DEC_3_Clause
+    , DL_DE_BY_2_0
+    , DL_DE_ZERO_2_0
+    , DRL_1_0
+    , DRL_1_1
+    , Dtoa
+    , Elastic_2_0
+    , EPICS
+    , Etalab_2_0
+    , FBM
+    , FDK_AAC
+    , Ferguson_Twofish
+    , FreeBSD_DOC
+    , FSFAP_no_warranty_disclaimer
+    , FSFULLRWD
+    , Furuseth
+    , Fwlw
+    , GCR_docs
+    , GD
+    , GFDL_1_1_invariants_only
+    , GFDL_1_1_invariants_or_later
+    , GFDL_1_1_no_invariants_only
+    , GFDL_1_1_no_invariants_or_later
+    , GFDL_1_2_invariants_only
+    , GFDL_1_2_invariants_or_later
+    , GFDL_1_2_no_invariants_only
+    , GFDL_1_2_no_invariants_or_later
+    , GFDL_1_3_invariants_only
+    , GFDL_1_3_invariants_or_later
+    , GFDL_1_3_no_invariants_only
+    , GFDL_1_3_no_invariants_or_later
+    , GLWTPL
+    , Graphics_Gems
+    , Gtkbook
+    , Hdparm
+    , Hippocratic_2_1
+    , HP_1986
+    , HP_1989
+    , HPND_DEC
+    , HPND_doc_sell
+    , HPND_doc
+    , HPND_export_US_modify
+    , HPND_export_US
+    , HPND_Fenneberg_Livingston
+    , HPND_INRIA_IMAG
+    , HPND_Kevlin_Henney
+    , HPND_Markus_Kuhn
+    , HPND_MIT_disclaimer
+    , HPND_Pbmplus
+    , HPND_sell_MIT_disclaimer_xserver
+    , HPND_sell_regexpr
+    , HPND_sell_variant_MIT_disclaimer
+    , HPND_sell_variant
+    , HPND_UC
+    , HTMLTIDY
+    , IEC_Code_Components_EULA
+    , IJG_short
+    , Inner_Net_2_0
+    , ISC_Veillard
+    , Jam
+    , JPL_image
+    , JPNIC
+    , Kastrup
+    , Kazlib
+    , Knuth_CTAN
+    , Latex2e_translated_notice
+    , Libpng_2_0
+    , Libselinux_1_0
+    , Libutil_David_Nugent
+    , Linux_man_pages_1_para
+    , Linux_man_pages_copyleft_2_para
+    , Linux_man_pages_copyleft_var
+    , Linux_man_pages_copyleft
+    , Linux_OpenIB
+    , LOOP
+    , LPD_document
+    , Lsof
+    , Lucida_Bitmap_Fonts
+    , LZMA_SDK_9_11_to_9_20
+    , LZMA_SDK_9_22
+    , Mackerras_3_Clause_acknowledgment
+    , Mackerras_3_Clause
+    , Magaz
+    , Mailprio
+    , Martin_Birgmeier
+    , McPhee_slideshow
+    , Metamail
+    , Minpack
+    , MIT_0
+    , MIT_Festival
+    , MIT_Modern_Variant
+    , MIT_open_group
+    , MIT_testregex
+    , MIT_Wu
+    , MMIXware
+    , MPEG_SSG
+    , Mpi_permissive
+    , Mplus
+    , MS_LPL
+    , MulanPSL_1_0
+    , MulanPSL_2_0
+    , NAIST_2003
+    , NCGL_UK_2_0
+    , Net_SNMP
+    , NICTA_1_0
+    , NIST_PD_fallback
+    , NIST_PD
+    , NIST_Software
+    , NLOD_2_0
+    , NTP_0
+    , O_UDA_1_0
+    , ODC_By_1_0
+    , OFFIS
+    , OFL_1_0_no_RFN
+    , OFL_1_0_RFN
+    , OFL_1_1_no_RFN
+    , OFL_1_1_RFN
+    , OGC_1_0
+    , OGDL_Taiwan_1_0
+    , OGL_Canada_2_0
+    , OGL_UK_1_0
+    , OGL_UK_2_0
+    , OGL_UK_3_0
+    , OLFL_1_3
+    , OpenPBS_2_3
+    , OpenSSL_standalone
+    , OpenVision
+    , OPL_UK_3_0
+    , OPUBL_1_0
+    , PADL
+    , Parity_6_0_0
+    , Parity_7_0_0
+    , Pixar
+    , Pnmstitch
+    , PolyForm_Noncommercial_1_0_0
+    , PolyForm_Small_Business_1_0_0
+    , PSF_2_0
+    , Python_2_0_1
+    , Python_ldap
+    , QPL_1_0_INRIA_2004
+    , Radvd
+    , SAX_PD_2_0
+    , SchemeReport
+    , Sendmail_8_23
+    , SGI_OpenGL
+    , SGP4
+    , SHL_0_51
+    , SHL_0_5
+    , SL
+    , Snprintf
+    , SoftSurfer
+    , Soundex
+    , Ssh_keyscan
+    , SSH_OpenSSH
+    , SSH_short
+    , SSLeay_standalone
+    , SSPL_1_0
+    , Sun_PPP
+    , SunPro
+    , Swrule
+    , Symlinks
+    , TAPR_OHL_1_0
+    , TermReadKey
+    , TGPPL_1_0
+    , TPDL
+    , TPL_1_0
+    , TTWL
+    , TTYP0
+    , TU_Berlin_1_0
+    , TU_Berlin_2_0
+    , UCAR
+    , UCL_1_0
+    , Ulem
+    , UMich_Merit
+    , Unicode_3_0
+    , UnixCrypt
+    , URT_RLE
+    , W3m
+    , Widget_Workshop
+    , X11_distribute_modifications_variant
+    , Xdebug_1_03
+    , Xfig
+    , Xkeyboard_config_Zinoviev
+    , Xlock
+    , Zeeff
+    ]
+    ++ bulkOfLicenses
+licenseIdList LicenseListVersion_3_25 =
+    [ N_3D_Slicer_1_0
+    , AdaCore_doc
+    , Adobe_Display_PostScript
+    , Adobe_Utopia
+    , AGPL_1_0_only
+    , AGPL_1_0_or_later
+    , AMD_newlib
+    , AML_glslang
+    , ANTLR_PD_fallback
+    , Any_OSI
+    , App_s2p
+    , Arphic_1999
+    , ASWF_Digital_Assets_1_0
+    , ASWF_Digital_Assets_1_1
+    , Baekmuk
+    , Bcrypt_Solar_Designer
+    , Bitstream_Charter
+    , Bitstream_Vera
+    , Blessing
+    , BlueOak_1_0_0
+    , Boehm_GC
+    , Brian_Gladman_2_Clause
+    , Brian_Gladman_3_Clause
+    , BSD_2_Clause_Darwin
+    , BSD_2_Clause_first_lines
+    , BSD_2_Clause_Views
+    , BSD_3_Clause_acpica
+    , BSD_3_Clause_flex
+    , BSD_3_Clause_HP
+    , BSD_3_Clause_Modification
+    , BSD_3_Clause_No_Military_License
+    , BSD_3_Clause_Open_MPI
+    , BSD_3_Clause_Sun
+    , BSD_4_Clause_Shortened
+    , BSD_4_3RENO
+    , BSD_4_3TAHOE
+    , BSD_Advertising_Acknowledgement
+    , BSD_Attribution_HPND_disclaimer
+    , BSD_Inferno_Nettverk
+    , BSD_Source_beginning_file
+    , BSD_Systemics_W3Works
+    , BSD_Systemics
+    , BUSL_1_1
+    , C_UDA_1_0
+    , CAL_1_0_Combined_Work_Exception
+    , CAL_1_0
+    , Caldera_no_preamble
+    , Catharon
+    , CC_BY_2_5_AU
+    , CC_BY_3_0_AT
+    , CC_BY_3_0_AU
+    , CC_BY_3_0_DE
+    , CC_BY_3_0_IGO
+    , CC_BY_3_0_NL
+    , CC_BY_3_0_US
+    , CC_BY_NC_3_0_DE
+    , CC_BY_NC_ND_3_0_DE
+    , CC_BY_NC_ND_3_0_IGO
+    , CC_BY_NC_SA_2_0_DE
+    , CC_BY_NC_SA_2_0_FR
+    , CC_BY_NC_SA_2_0_UK
+    , CC_BY_NC_SA_3_0_DE
+    , CC_BY_NC_SA_3_0_IGO
+    , CC_BY_ND_3_0_DE
+    , CC_BY_SA_2_0_UK
+    , CC_BY_SA_2_1_JP
+    , CC_BY_SA_3_0_AT
+    , CC_BY_SA_3_0_DE
+    , CC_BY_SA_3_0_IGO
+    , CC_PDDC
+    , CDL_1_0
+    , CDLA_Permissive_2_0
+    , CERN_OHL_1_1
+    , CERN_OHL_1_2
+    , CERN_OHL_P_2_0
+    , CERN_OHL_S_2_0
+    , CERN_OHL_W_2_0
+    , CFITSIO
+    , Check_cvs
+    , Checkmk
+    , Clips
+    , CMU_Mach_nodoc
+    , CMU_Mach
+    , COIL_1_0
+    , Community_Spec_1_0
+    , Copyleft_next_0_3_0
+    , Copyleft_next_0_3_1
+    , Cornell_Lossless_JPEG
+    , Cronyx
+    , Cve_tou
+    , DEC_3_Clause
+    , DL_DE_BY_2_0
+    , DL_DE_ZERO_2_0
+    , DocBook_Schema
+    , DocBook_XML
+    , DRL_1_0
+    , DRL_1_1
+    , Dtoa
+    , Elastic_2_0
+    , EPICS
+    , Etalab_2_0
+    , FBM
+    , FDK_AAC
+    , Ferguson_Twofish
+    , FreeBSD_DOC
+    , FSFAP_no_warranty_disclaimer
+    , FSFULLRWD
+    , Furuseth
+    , Fwlw
+    , GCR_docs
+    , GD
+    , GFDL_1_1_invariants_only
+    , GFDL_1_1_invariants_or_later
+    , GFDL_1_1_no_invariants_only
+    , GFDL_1_1_no_invariants_or_later
+    , GFDL_1_2_invariants_only
+    , GFDL_1_2_invariants_or_later
+    , GFDL_1_2_no_invariants_only
+    , GFDL_1_2_no_invariants_or_later
+    , GFDL_1_3_invariants_only
+    , GFDL_1_3_invariants_or_later
+    , GFDL_1_3_no_invariants_only
+    , GFDL_1_3_no_invariants_or_later
+    , GLWTPL
+    , Graphics_Gems
+    , Gtkbook
+    , Gutmann
+    , Hdparm
+    , HIDAPI
+    , Hippocratic_2_1
+    , HP_1986
+    , HP_1989
+    , HPND_DEC
+    , HPND_doc_sell
+    , HPND_doc
+    , HPND_export_US_acknowledgement
+    , HPND_export_US_modify
+    , HPND_export_US
+    , HPND_export2_US
+    , HPND_Fenneberg_Livingston
+    , HPND_INRIA_IMAG
+    , HPND_Intel
+    , HPND_Kevlin_Henney
+    , HPND_Markus_Kuhn
+    , HPND_merchantability_variant
+    , HPND_MIT_disclaimer
+    , HPND_Netrek
+    , HPND_Pbmplus
+    , HPND_sell_MIT_disclaimer_xserver
+    , HPND_sell_regexpr
+    , HPND_sell_variant_MIT_disclaimer_rev
+    , HPND_sell_variant_MIT_disclaimer
+    , HPND_sell_variant
+    , HPND_UC_export_US
+    , HPND_UC
+    , HTMLTIDY
+    , IEC_Code_Components_EULA
+    , IJG_short
+    , Inner_Net_2_0
+    , ISC_Veillard
+    , Jam
+    , JPL_image
+    , JPNIC
+    , Kastrup
+    , Kazlib
+    , Knuth_CTAN
+    , Latex2e_translated_notice
+    , Libpng_2_0
+    , Libselinux_1_0
+    , Libutil_David_Nugent
+    , Linux_man_pages_1_para
+    , Linux_man_pages_copyleft_2_para
+    , Linux_man_pages_copyleft_var
+    , Linux_man_pages_copyleft
+    , Linux_OpenIB
+    , LOOP
+    , LPD_document
+    , Lsof
+    , Lucida_Bitmap_Fonts
+    , LZMA_SDK_9_11_to_9_20
+    , LZMA_SDK_9_22
+    , Mackerras_3_Clause_acknowledgment
+    , Mackerras_3_Clause
+    , Magaz
+    , Mailprio
+    , Martin_Birgmeier
+    , McPhee_slideshow
+    , Metamail
+    , Minpack
+    , MIT_0
+    , MIT_Festival
+    , MIT_Khronos_old
+    , MIT_Modern_Variant
+    , MIT_open_group
+    , MIT_testregex
+    , MIT_Wu
+    , MMIXware
+    , MPEG_SSG
+    , Mpi_permissive
+    , Mplus
+    , MS_LPL
+    , MulanPSL_1_0
+    , MulanPSL_2_0
+    , NAIST_2003
+    , NCBI_PD
+    , NCGL_UK_2_0
+    , NCL
+    , NICTA_1_0
+    , NIST_PD_fallback
+    , NIST_PD
+    , NIST_Software
+    , NLOD_2_0
+    , NTP_0
+    , O_UDA_1_0
+    , OAR
+    , ODC_By_1_0
+    , OFFIS
+    , OFL_1_0_no_RFN
+    , OFL_1_0_RFN
+    , OFL_1_1_no_RFN
+    , OFL_1_1_RFN
+    , OGC_1_0
+    , OGDL_Taiwan_1_0
+    , OGL_Canada_2_0
+    , OGL_UK_1_0
+    , OGL_UK_2_0
+    , OGL_UK_3_0
+    , OLFL_1_3
+    , OpenPBS_2_3
+    , OpenSSL_standalone
+    , OpenVision
+    , OPL_UK_3_0
+    , OPUBL_1_0
+    , PADL
+    , Parity_6_0_0
+    , Parity_7_0_0
+    , Pixar
+    , Pkgconf
+    , Pnmstitch
+    , PolyForm_Noncommercial_1_0_0
+    , PolyForm_Small_Business_1_0_0
+    , PPL
+    , PSF_2_0
+    , Python_2_0_1
+    , Python_ldap
+    , QPL_1_0_INRIA_2004
+    , Radvd
+    , Ruby_pty
+    , SAX_PD_2_0
+    , SchemeReport
+    , Sendmail_8_23
+    , SGI_OpenGL
+    , SGP4
+    , SHL_0_51
+    , SHL_0_5
+    , SL
+    , Snprintf
+    , SoftSurfer
+    , Soundex
+    , Ssh_keyscan
+    , SSH_OpenSSH
+    , SSH_short
+    , SSLeay_standalone
+    , SSPL_1_0
+    , Sun_PPP_2000
+    , Sun_PPP
+    , SunPro
+    , Swrule
+    , Symlinks
+    , TAPR_OHL_1_0
+    , TermReadKey
+    , TGPPL_1_0
+    , Threeparttable
+    , TPDL
+    , TPL_1_0
+    , TTWL
+    , TTYP0
+    , TU_Berlin_1_0
+    , TU_Berlin_2_0
+    , Ubuntu_font_1_0
+    , UCAR
+    , UCL_1_0
+    , Ulem
+    , UMich_Merit
+    , Unicode_3_0
+    , UnixCrypt
+    , URT_RLE
+    , W3m
+    , Widget_Workshop
+    , X11_distribute_modifications_variant
+    , X11_swapped
+    , Xdebug_1_03
+    , Xfig
+    , Xkeyboard_config_Zinoviev
+    , Xlock
+    , Xzoom
+    , Zeeff
+    ]
+    ++ bulkOfLicenses
+licenseIdList LicenseListVersion_3_26 =
+    [ N_3D_Slicer_1_0
+    , AdaCore_doc
+    , Adobe_Display_PostScript
+    , Adobe_Utopia
+    , AGPL_1_0_only
+    , AGPL_1_0_or_later
+    , AMD_newlib
+    , AML_glslang
+    , ANTLR_PD_fallback
+    , Any_OSI_perl_modules
+    , Any_OSI
+    , App_s2p
+    , Arphic_1999
+    , Artistic_dist
+    , Aspell_RU
+    , ASWF_Digital_Assets_1_0
+    , ASWF_Digital_Assets_1_1
+    , Baekmuk
+    , Bcrypt_Solar_Designer
+    , Bitstream_Charter
+    , Bitstream_Vera
+    , Blessing
+    , BlueOak_1_0_0
+    , Boehm_GC_without_fee
+    , Boehm_GC
+    , Brian_Gladman_2_Clause
+    , Brian_Gladman_3_Clause
+    , BSD_2_Clause_Darwin
+    , BSD_2_Clause_first_lines
+    , BSD_2_Clause_pkgconf_disclaimer
+    , BSD_2_Clause_Views
+    , BSD_3_Clause_acpica
+    , BSD_3_Clause_flex
+    , BSD_3_Clause_HP
+    , BSD_3_Clause_Modification
+    , BSD_3_Clause_No_Military_License
+    , BSD_3_Clause_Open_MPI
+    , BSD_3_Clause_Sun
+    , BSD_4_Clause_Shortened
+    , BSD_4_3RENO
+    , BSD_4_3TAHOE
+    , BSD_Advertising_Acknowledgement
+    , BSD_Attribution_HPND_disclaimer
+    , BSD_Inferno_Nettverk
+    , BSD_Source_beginning_file
+    , BSD_Systemics_W3Works
+    , BSD_Systemics
+    , BUSL_1_1
+    , C_UDA_1_0
+    , CAL_1_0_Combined_Work_Exception
+    , CAL_1_0
+    , Caldera_no_preamble
+    , Catharon
+    , CC_BY_2_5_AU
+    , CC_BY_3_0_AT
+    , CC_BY_3_0_AU
+    , CC_BY_3_0_DE
+    , CC_BY_3_0_IGO
+    , CC_BY_3_0_NL
+    , CC_BY_3_0_US
+    , CC_BY_NC_3_0_DE
+    , CC_BY_NC_ND_3_0_DE
+    , CC_BY_NC_ND_3_0_IGO
+    , CC_BY_NC_SA_2_0_DE
+    , CC_BY_NC_SA_2_0_FR
+    , CC_BY_NC_SA_2_0_UK
+    , CC_BY_NC_SA_3_0_DE
+    , CC_BY_NC_SA_3_0_IGO
+    , CC_BY_ND_3_0_DE
+    , CC_BY_SA_2_0_UK
+    , CC_BY_SA_2_1_JP
+    , CC_BY_SA_3_0_AT
+    , CC_BY_SA_3_0_DE
+    , CC_BY_SA_3_0_IGO
+    , CC_PDDC
+    , CC_PDM_1_0
+    , CC_SA_1_0
+    , CDL_1_0
+    , CDLA_Permissive_2_0
+    , CERN_OHL_1_1
+    , CERN_OHL_1_2
+    , CERN_OHL_P_2_0
+    , CERN_OHL_S_2_0
+    , CERN_OHL_W_2_0
+    , CFITSIO
+    , Check_cvs
+    , Checkmk
+    , Clips
+    , CMU_Mach_nodoc
+    , CMU_Mach
+    , COIL_1_0
+    , Community_Spec_1_0
+    , Copyleft_next_0_3_0
+    , Copyleft_next_0_3_1
+    , Cornell_Lossless_JPEG
+    , Cronyx
+    , CryptoSwift
+    , Cve_tou
+    , DEC_3_Clause
+    , DL_DE_BY_2_0
+    , DL_DE_ZERO_2_0
+    , DocBook_DTD
+    , DocBook_Schema
+    , DocBook_Stylesheet
+    , DocBook_XML
+    , DRL_1_0
+    , DRL_1_1
+    , Dtoa
+    , Elastic_2_0
+    , EPICS
+    , Etalab_2_0
+    , FBM
+    , FDK_AAC
+    , Ferguson_Twofish
+    , FreeBSD_DOC
+    , FSFAP_no_warranty_disclaimer
+    , FSFULLRSD
+    , FSFULLRWD
+    , FSL_1_1_ALv2
+    , FSL_1_1_MIT
+    , Furuseth
+    , Fwlw
+    , Game_Programming_Gems
+    , GCR_docs
+    , GD
+    , Generic_xts
+    , GFDL_1_1_invariants_only
+    , GFDL_1_1_invariants_or_later
+    , GFDL_1_1_no_invariants_only
+    , GFDL_1_1_no_invariants_or_later
+    , GFDL_1_2_invariants_only
+    , GFDL_1_2_invariants_or_later
+    , GFDL_1_2_no_invariants_only
+    , GFDL_1_2_no_invariants_or_later
+    , GFDL_1_3_invariants_only
+    , GFDL_1_3_invariants_or_later
+    , GFDL_1_3_no_invariants_only
+    , GFDL_1_3_no_invariants_or_later
+    , GLWTPL
+    , Graphics_Gems
+    , Gtkbook
+    , Gutmann
+    , HDF5
+    , Hdparm
+    , HIDAPI
+    , Hippocratic_2_1
+    , HP_1986
+    , HP_1989
+    , HPND_DEC
+    , HPND_doc_sell
+    , HPND_doc
+    , HPND_export_US_acknowledgement
+    , HPND_export_US_modify
+    , HPND_export_US
+    , HPND_export2_US
+    , HPND_Fenneberg_Livingston
+    , HPND_INRIA_IMAG
+    , HPND_Intel
+    , HPND_Kevlin_Henney
+    , HPND_Markus_Kuhn
+    , HPND_merchantability_variant
+    , HPND_MIT_disclaimer
+    , HPND_Netrek
+    , HPND_Pbmplus
+    , HPND_sell_MIT_disclaimer_xserver
+    , HPND_sell_regexpr
+    , HPND_sell_variant_MIT_disclaimer_rev
+    , HPND_sell_variant_MIT_disclaimer
+    , HPND_sell_variant
+    , HPND_UC_export_US
+    , HPND_UC
+    , HTMLTIDY
+    , IEC_Code_Components_EULA
+    , IJG_short
+    , Inner_Net_2_0
+    , InnoSetup
+    , ISC_Veillard
+    , Jam
+    , Jove
+    , JPL_image
+    , JPNIC
+    , Kastrup
+    , Kazlib
+    , Knuth_CTAN
+    , Latex2e_translated_notice
+    , Libpng_1_6_35
+    , Libpng_2_0
+    , Libselinux_1_0
+    , Libutil_David_Nugent
+    , Linux_man_pages_1_para
+    , Linux_man_pages_copyleft_2_para
+    , Linux_man_pages_copyleft_var
+    , Linux_man_pages_copyleft
+    , Linux_OpenIB
+    , LOOP
+    , LPD_document
+    , Lsof
+    , Lucida_Bitmap_Fonts
+    , LZMA_SDK_9_11_to_9_20
+    , LZMA_SDK_9_22
+    , Mackerras_3_Clause_acknowledgment
+    , Mackerras_3_Clause
+    , Magaz
+    , Mailprio
+    , Man2html
+    , Martin_Birgmeier
+    , McPhee_slideshow
+    , Metamail
+    , Minpack
+    , MIPS
+    , MIT_0
+    , MIT_Click
+    , MIT_Festival
+    , MIT_Khronos_old
+    , MIT_Modern_Variant
+    , MIT_open_group
+    , MIT_testregex
+    , MIT_Wu
+    , MMIXware
+    , MPEG_SSG
+    , Mpi_permissive
+    , Mplus
+    , MS_LPL
+    , MulanPSL_1_0
+    , MulanPSL_2_0
+    , NAIST_2003
+    , NCBI_PD
+    , NCGL_UK_2_0
+    , NCL
+    , Ngrep
+    , NICTA_1_0
+    , NIST_PD_fallback
+    , NIST_PD
+    , NIST_Software
+    , NLOD_2_0
+    , NTIA_PD
+    , NTP_0
+    , O_UDA_1_0
+    , OAR
+    , ODC_By_1_0
+    , OFFIS
+    , OFL_1_0_no_RFN
+    , OFL_1_0_RFN
+    , OFL_1_1_no_RFN
+    , OFL_1_1_RFN
+    , OGC_1_0
+    , OGDL_Taiwan_1_0
+    , OGL_Canada_2_0
+    , OGL_UK_1_0
+    , OGL_UK_2_0
+    , OGL_UK_3_0
+    , OLFL_1_3
+    , OpenPBS_2_3
+    , OpenSSL_standalone
+    , OpenVision
+    , OPL_UK_3_0
+    , OPUBL_1_0
+    , PADL
+    , Parity_6_0_0
+    , Parity_7_0_0
+    , Pixar
+    , Pkgconf
+    , Pnmstitch
+    , PolyForm_Noncommercial_1_0_0
+    , PolyForm_Small_Business_1_0_0
+    , PPL
+    , PSF_2_0
+    , Python_2_0_1
+    , Python_ldap
+    , QPL_1_0_INRIA_2004
+    , Radvd
+    , Ruby_pty
+    , SAX_PD_2_0
+    , SchemeReport
+    , Sendmail_8_23
+    , Sendmail_Open_Source_1_1
+    , SGI_OpenGL
+    , SGP4
+    , SHL_0_51
+    , SHL_0_5
+    , SL
+    , SMAIL_GPL
+    , Snprintf
+    , SOFA
+    , SoftSurfer
+    , Soundex
+    , Ssh_keyscan
+    , SSH_OpenSSH
+    , SSH_short
+    , SSLeay_standalone
+    , SSPL_1_0
+    , Sun_PPP_2000
+    , Sun_PPP
+    , SunPro
+    , Swrule
+    , Symlinks
+    , TAPR_OHL_1_0
+    , TermReadKey
+    , TGPPL_1_0
+    , ThirdEye
+    , Threeparttable
+    , TPDL
+    , TPL_1_0
+    , TrustedQSL
+    , TTWL
+    , TTYP0
+    , TU_Berlin_1_0
+    , TU_Berlin_2_0
+    , Ubuntu_font_1_0
+    , UCAR
+    , UCL_1_0
+    , Ulem
+    , UMich_Merit
+    , Unicode_3_0
+    , UnixCrypt
+    , Unlicense_libtelnet
+    , Unlicense_libwhirlpool
+    , URT_RLE
+    , W3m
+    , Widget_Workshop
+    , Wwl
+    , X11_distribute_modifications_variant
+    , X11_swapped
+    , Xdebug_1_03
+    , Xfig
+    , Xkeyboard_config_Zinoviev
+    , Xlock
+    , Xzoom
+    , Zeeff
+    ]
+    ++ bulkOfLicenses
+licenseIdList LicenseListVersion_3_28 =
+    [ N_3D_Slicer_1_0
+    , AdaCore_doc
+    , Adobe_Display_PostScript
+    , Adobe_Utopia
+    , Advanced_Cryptics_Dictionary
+    , AGPL_1_0_only
+    , AGPL_1_0_or_later
+    , ALGLIB_Documentation
+    , AMD_newlib
+    , AML_glslang
+    , ANTLR_PD_fallback
+    , Any_OSI_perl_modules
+    , Any_OSI
+    , App_s2p
+    , Arphic_1999
+    , Artistic_dist
+    , Aspell_RU
+    , ASWF_Digital_Assets_1_0
+    , ASWF_Digital_Assets_1_1
+    , Baekmuk
+    , Bcrypt_Solar_Designer
+    , Bitstream_Charter
+    , Bitstream_Vera
+    , Blessing
+    , BlueOak_1_0_0
+    , Boehm_GC_without_fee
+    , Boehm_GC
+    , BOLA_1_1
+    , Brian_Gladman_2_Clause
+    , Brian_Gladman_3_Clause
+    , BSD_2_Clause_Darwin
+    , BSD_2_Clause_first_lines
+    , BSD_2_Clause_pkgconf_disclaimer
+    , BSD_2_Clause_Views
+    , BSD_3_Clause_acpica
+    , BSD_3_Clause_flex
+    , BSD_3_Clause_HP
+    , BSD_3_Clause_Modification
+    , BSD_3_Clause_No_Military_License
+    , BSD_3_Clause_Open_MPI
+    , BSD_3_Clause_Sun
+    , BSD_3_Clause_Tso
+    , BSD_4_Clause_Shortened
+    , BSD_4_3RENO
+    , BSD_4_3TAHOE
+    , BSD_Advertising_Acknowledgement
+    , BSD_Attribution_HPND_disclaimer
+    , BSD_Inferno_Nettverk
+    , BSD_Mark_Modifications
+    , BSD_Source_beginning_file
+    , BSD_Systemics_W3Works
+    , BSD_Systemics
+    , Buddy
+    , BUSL_1_1
+    , C_UDA_1_0
+    , CAL_1_0_Combined_Work_Exception
+    , CAL_1_0
+    , Caldera_no_preamble
+    , CAPEC_tou
+    , Catharon
+    , CC_BY_2_5_AU
+    , CC_BY_3_0_AT
+    , CC_BY_3_0_AU
+    , CC_BY_3_0_DE
+    , CC_BY_3_0_IGO
+    , CC_BY_3_0_NL
+    , CC_BY_3_0_US
+    , CC_BY_NC_3_0_DE
+    , CC_BY_NC_ND_3_0_DE
+    , CC_BY_NC_ND_3_0_IGO
+    , CC_BY_NC_SA_2_0_DE
+    , CC_BY_NC_SA_2_0_FR
+    , CC_BY_NC_SA_2_0_UK
+    , CC_BY_NC_SA_3_0_DE
+    , CC_BY_NC_SA_3_0_IGO
+    , CC_BY_ND_3_0_DE
+    , CC_BY_SA_2_0_UK
+    , CC_BY_SA_2_1_JP
+    , CC_BY_SA_3_0_AT
+    , CC_BY_SA_3_0_DE
+    , CC_BY_SA_3_0_IGO
+    , CC_PDDC
+    , CC_PDM_1_0
+    , CC_SA_1_0
+    , CDL_1_0
+    , CDLA_Permissive_2_0
+    , CERN_OHL_1_1
+    , CERN_OHL_1_2
+    , CERN_OHL_P_2_0
+    , CERN_OHL_S_2_0
+    , CERN_OHL_W_2_0
+    , CFITSIO
+    , Check_cvs
+    , Checkmk
+    , Clips
+    , CMU_Mach_nodoc
+    , CMU_Mach
+    , COIL_1_0
+    , Community_Spec_1_0
+    , Copyleft_next_0_3_0
+    , Copyleft_next_0_3_1
+    , Cornell_Lossless_JPEG
+    , Cronyx
+    , CryptoSwift
+    , Cve_tou
+    , DEC_3_Clause
+    , DL_DE_BY_2_0
+    , DL_DE_ZERO_2_0
+    , DocBook_DTD
+    , DocBook_Schema
+    , DocBook_Stylesheet
+    , DocBook_XML
+    , DRL_1_0
+    , DRL_1_1
+    , Dtoa
+    , Elastic_2_0
+    , EPICS
+    , ESA_PL_permissive_2_4
+    , ESA_PL_strong_copyleft_2_4
+    , ESA_PL_weak_copyleft_2_4
+    , Etalab_2_0
+    , FBM
+    , FDK_AAC
+    , Ferguson_Twofish
+    , FreeBSD_DOC
+    , FSFAP_no_warranty_disclaimer
+    , FSFULLRSD
+    , FSFULLRWD
+    , FSL_1_1_ALv2
+    , FSL_1_1_MIT
+    , Furuseth
+    , Fwlw
+    , Game_Programming_Gems
+    , GCR_docs
+    , GD
+    , Generic_xts
+    , GFDL_1_1_invariants_only
+    , GFDL_1_1_invariants_or_later
+    , GFDL_1_1_no_invariants_only
+    , GFDL_1_1_no_invariants_or_later
+    , GFDL_1_2_invariants_only
+    , GFDL_1_2_invariants_or_later
+    , GFDL_1_2_no_invariants_only
+    , GFDL_1_2_no_invariants_or_later
+    , GFDL_1_3_invariants_only
+    , GFDL_1_3_invariants_or_later
+    , GFDL_1_3_no_invariants_only
+    , GFDL_1_3_no_invariants_or_later
+    , GLWTPL
+    , Graphics_Gems
+    , Gtkbook
+    , Gutmann
+    , HDF5
+    , Hdparm
+    , HIDAPI
+    , Hippocratic_2_1
+    , HP_1986
+    , HP_1989
+    , HPND_DEC
+    , HPND_doc_sell
+    , HPND_doc
+    , HPND_export_US_acknowledgement
+    , HPND_export_US_modify
+    , HPND_export_US
+    , HPND_export2_US
+    , HPND_Fenneberg_Livingston
+    , HPND_INRIA_IMAG
+    , HPND_Intel
+    , HPND_Kevlin_Henney
+    , HPND_Markus_Kuhn
+    , HPND_merchantability_variant
+    , HPND_MIT_disclaimer
+    , HPND_Netrek
+    , HPND_Pbmplus
+    , HPND_sell_MIT_disclaimer_xserver
+    , HPND_sell_regexpr
+    , HPND_sell_variant_critical_systems
+    , HPND_sell_variant_MIT_disclaimer_rev
+    , HPND_sell_variant_MIT_disclaimer
+    , HPND_sell_variant
+    , HPND_SMC
+    , HPND_UC_export_US
+    , HPND_UC
+    , HTMLTIDY
+    , Hyphen_bulgarian
+    , IEC_Code_Components_EULA
+    , IJG_short
+    , Inner_Net_2_0
+    , InnoSetup
+    , ISC_Veillard
+    , ISO_permission
+    , Jam
+    , Jove
+    , JPL_image
+    , JPNIC
+    , Kastrup
+    , Kazlib
+    , Knuth_CTAN
+    , Latex2e_translated_notice
+    , Libpng_1_6_35
+    , Libpng_2_0
+    , Libselinux_1_0
+    , Libutil_David_Nugent
+    , Linux_man_pages_1_para
+    , Linux_man_pages_copyleft_2_para
+    , Linux_man_pages_copyleft_var
+    , Linux_man_pages_copyleft
+    , Linux_OpenIB
+    , LOOP
+    , LPD_document
+    , Lsof
+    , Lucida_Bitmap_Fonts
+    , LZMA_SDK_9_11_to_9_20
+    , LZMA_SDK_9_22
+    , Mackerras_3_Clause_acknowledgment
+    , Mackerras_3_Clause
+    , Magaz
+    , Mailprio
+    , Man2html
+    , Martin_Birgmeier
+    , McPhee_slideshow
+    , Metamail
+    , Minpack
+    , MIPS
+    , MIT_0
+    , MIT_Click
+    , MIT_Festival
+    , MIT_Khronos_old
+    , MIT_Modern_Variant
+    , MIT_open_group
+    , MIT_STK
+    , MIT_testregex
+    , MIT_Wu
+    , MMIXware
+    , MMPL_1_0_1
+    , MPEG_SSG
+    , Mpi_permissive
+    , Mplus
+    , MS_LPL
+    , MulanPSL_1_0
+    , MulanPSL_2_0
+    , NAIST_2003
+    , NCBI_PD
+    , NCGL_UK_2_0
+    , NCL
+    , Ngrep
+    , NICTA_1_0
+    , NIST_PD_fallback
+    , NIST_PD_TNT
+    , NIST_PD
+    , NIST_Software
+    , NLOD_2_0
+    , NTIA_PD
+    , NTP_0
+    , O_UDA_1_0
+    , OAR
+    , ODC_By_1_0
+    , OFFIS
+    , OFL_1_0_no_RFN
+    , OFL_1_0_RFN
+    , OFL_1_1_no_RFN
+    , OFL_1_1_RFN
+    , OGC_1_0
+    , OGDL_Taiwan_1_0
+    , OGL_Canada_2_0
+    , OGL_UK_1_0
+    , OGL_UK_2_0
+    , OGL_UK_3_0
+    , OLFL_1_3
+    , OpenMDW_1_0
+    , OpenPBS_2_3
+    , OpenSSL_standalone
+    , OpenVision
+    , OPL_UK_3_0
+    , OPUBL_1_0
+    , OSC_1_0
+    , OSSP
+    , PADL
+    , ParaType_Free_Font_1_3
+    , Parity_6_0_0
+    , Parity_7_0_0
+    , Pixar
+    , Pkgconf
+    , Pnmstitch
+    , PolyForm_Noncommercial_1_0_0
+    , PolyForm_Small_Business_1_0_0
+    , PPL
+    , PSF_2_0
+    , Python_2_0_1
+    , Python_ldap
+    , QPL_1_0_INRIA_2004
+    , Radvd
+    , Ruby_pty
+    , SAX_PD_2_0
+    , SchemeReport
+    , Sendmail_8_23
+    , Sendmail_Open_Source_1_1
+    , SGI_OpenGL
+    , SGMLUG_PM
+    , SGP4
+    , SHL_0_51
+    , SHL_0_5
+    , SL
+    , SMAIL_GPL
+    , Snprintf
+    , SOFA
+    , SoftSurfer
+    , Soundex
+    , Ssh_keyscan
+    , SSH_OpenSSH
+    , SSH_short
+    , SSLeay_standalone
+    , SSPL_1_0
+    , SUL_1_0
+    , Sun_PPP_2000
+    , Sun_PPP
+    , SunPro
+    , Swrule
+    , Symlinks
+    , TAPR_OHL_1_0
+    , TekHVC
+    , TermReadKey
+    , TGPPL_1_0
+    , ThirdEye
+    , Threeparttable
+    , TPDL
+    , TPL_1_0
+    , TrustedQSL
+    , TTWL
+    , TTYP0
+    , TU_Berlin_1_0
+    , TU_Berlin_2_0
+    , Ubuntu_font_1_0
+    , UCAR
+    , UCL_1_0
+    , Ulem
+    , UMich_Merit
+    , Unicode_3_0
+    , UnixCrypt
+    , Unlicense_libtelnet
+    , Unlicense_libwhirlpool
+    , UnRAR
+    , URT_RLE
+    , Vixie_Cron
+    , W3m
+    , Widget_Workshop
+    , WordNet
+    , WTFNMFPL
+    , Wwl
+    , X11_distribute_modifications_variant
+    , X11_no_permit_persons
+    , X11_swapped
+    , Xdebug_1_03
+    , Xfig
+    , Xkeyboard_config_Zinoviev
+    , Xlock
+    , Xzoom
+    , Zeeff
+    ]
+    ++ bulkOfLicenses
+
+-- | Create a 'LicenseId' from a 'String'.
+mkLicenseId :: LicenseListVersion -> String -> Maybe LicenseId
+mkLicenseId LicenseListVersion_3_0  s = Map.lookup s stringLookup_3_0
+mkLicenseId LicenseListVersion_3_2  s = Map.lookup s stringLookup_3_2
+mkLicenseId LicenseListVersion_3_6  s = Map.lookup s stringLookup_3_6
+mkLicenseId LicenseListVersion_3_9  s = Map.lookup s stringLookup_3_9
+mkLicenseId LicenseListVersion_3_10 s = Map.lookup s stringLookup_3_10
+mkLicenseId LicenseListVersion_3_16 s = Map.lookup s stringLookup_3_16
+mkLicenseId LicenseListVersion_3_23 s = Map.lookup s stringLookup_3_23
+mkLicenseId LicenseListVersion_3_25 s = Map.lookup s stringLookup_3_25
+mkLicenseId LicenseListVersion_3_26 s = Map.lookup s stringLookup_3_26
+mkLicenseId LicenseListVersion_3_28 s = Map.lookup s stringLookup_3_28
+
+stringLookup_3_0 :: Map String LicenseId
+stringLookup_3_0 = Map.fromList $ map (\i -> (licenseId i, i)) $
+    licenseIdList LicenseListVersion_3_0
+
+stringLookup_3_2 :: Map String LicenseId
+stringLookup_3_2 = Map.fromList $ map (\i -> (licenseId i, i)) $
+    licenseIdList LicenseListVersion_3_2
+
+stringLookup_3_6 :: Map String LicenseId
+stringLookup_3_6 = Map.fromList $ map (\i -> (licenseId i, i)) $
+    licenseIdList LicenseListVersion_3_6
+
+stringLookup_3_9 :: Map String LicenseId
+stringLookup_3_9 = Map.fromList $ map (\i -> (licenseId i, i)) $
+    licenseIdList LicenseListVersion_3_9
+
+stringLookup_3_10 :: Map String LicenseId
+stringLookup_3_10 = Map.fromList $ map (\i -> (licenseId i, i)) $
+    licenseIdList LicenseListVersion_3_10
+
+stringLookup_3_16 :: Map String LicenseId
+stringLookup_3_16 = Map.fromList $ map (\i -> (licenseId i, i)) $
+    licenseIdList LicenseListVersion_3_16
+
+stringLookup_3_23 :: Map String LicenseId
+stringLookup_3_23 = Map.fromList $ map (\i -> (licenseId i, i)) $
+    licenseIdList LicenseListVersion_3_23
+
+stringLookup_3_25 :: Map String LicenseId
+stringLookup_3_25 = Map.fromList $ map (\i -> (licenseId i, i)) $
+    licenseIdList LicenseListVersion_3_25
+
+stringLookup_3_26 :: Map String LicenseId
+stringLookup_3_26 = Map.fromList $ map (\i -> (licenseId i, i)) $
+    licenseIdList LicenseListVersion_3_26
+
+stringLookup_3_28 :: Map String LicenseId
+stringLookup_3_28 = Map.fromList $ map (\i -> (licenseId i, i)) $
+    licenseIdList LicenseListVersion_3_28
 
 --  | Licenses in all SPDX License lists
 bulkOfLicenses :: [LicenseId]
diff --git a/src/Distribution/SPDX/LicenseListVersion.hs b/src/Distribution/SPDX/LicenseListVersion.hs
--- a/src/Distribution/SPDX/LicenseListVersion.hs
+++ b/src/Distribution/SPDX/LicenseListVersion.hs
@@ -7,18 +7,30 @@
 
 -- | SPDX License List version @Cabal@ is aware of.
 data LicenseListVersion
-  = LicenseListVersion_3_0
-  | LicenseListVersion_3_2
-  | LicenseListVersion_3_6
-  | LicenseListVersion_3_9
-  | LicenseListVersion_3_10
-  | LicenseListVersion_3_16
-  | LicenseListVersion_3_23
-  | LicenseListVersion_3_25
-  | LicenseListVersion_3_26
+  = -- | @since 2.4.0.0
+    LicenseListVersion_3_0
+  | -- | @since 2.4.0.0
+    LicenseListVersion_3_2
+  | -- | @since 3.0.0.0
+    LicenseListVersion_3_6
+  | -- | @since 3.4.0.0
+    LicenseListVersion_3_9
+  | -- | @since 3.6.0.0
+    LicenseListVersion_3_10
+  | -- | @since 3.8.0.0
+    LicenseListVersion_3_16
+  | -- | @since 3.12.0.0
+    LicenseListVersion_3_23
+  | -- | @since 3.14.0.0
+    LicenseListVersion_3_25
+  | -- | @since 3.16.0.0
+    LicenseListVersion_3_26
+  | -- | @since 3.18.0.0
+    LicenseListVersion_3_28
   deriving (Eq, Ord, Show, Enum, Bounded)
 
 cabalSpecVersionToSPDXListVersion :: CabalSpecVersion -> LicenseListVersion
+cabalSpecVersionToSPDXListVersion CabalSpecV3_18 = LicenseListVersion_3_28
 cabalSpecVersionToSPDXListVersion CabalSpecV3_16 = LicenseListVersion_3_26
 cabalSpecVersionToSPDXListVersion CabalSpecV3_14 = LicenseListVersion_3_25
 cabalSpecVersionToSPDXListVersion CabalSpecV3_12 = LicenseListVersion_3_23
diff --git a/src/Distribution/System.hs b/src/Distribution/System.hs
--- a/src/Distribution/System.hs
+++ b/src/Distribution/System.hs
@@ -111,7 +111,7 @@
 
 instance Binary OS
 instance Structured OS
-instance NFData OS where rnf = genericRnf
+instance NFData OS
 
 knownOSs :: [OS]
 knownOSs =
@@ -214,7 +214,7 @@
 
 instance Binary Arch
 instance Structured Arch
-instance NFData Arch where rnf = genericRnf
+instance NFData Arch
 
 knownArches :: [Arch]
 knownArches =
@@ -285,7 +285,7 @@
 
 instance Binary Platform
 instance Structured Platform
-instance NFData Platform where rnf = genericRnf
+instance NFData Platform
 
 instance Pretty Platform where
   pretty (Platform arch os) = pretty arch <<>> Disp.char '-' <<>> pretty os
diff --git a/src/Distribution/Types/AbiDependency.hs b/src/Distribution/Types/AbiDependency.hs
--- a/src/Distribution/Types/AbiDependency.hs
+++ b/src/Distribution/Types/AbiDependency.hs
@@ -41,4 +41,4 @@
 
 instance Binary AbiDependency
 instance Structured AbiDependency
-instance NFData AbiDependency where rnf = genericRnf
+instance NFData AbiDependency
diff --git a/src/Distribution/Types/AbiHash.hs b/src/Distribution/Types/AbiHash.hs
--- a/src/Distribution/Types/AbiHash.hs
+++ b/src/Distribution/Types/AbiHash.hs
@@ -52,7 +52,7 @@
 
 instance Binary AbiHash
 instance Structured AbiHash
-instance NFData AbiHash where rnf = genericRnf
+instance NFData AbiHash
 
 instance Pretty AbiHash where
   pretty = text . unAbiHash
diff --git a/src/Distribution/Types/Benchmark.hs b/src/Distribution/Types/Benchmark.hs
--- a/src/Distribution/Types/Benchmark.hs
+++ b/src/Distribution/Types/Benchmark.hs
@@ -31,7 +31,7 @@
 
 instance Binary Benchmark
 instance Structured Benchmark
-instance NFData Benchmark where rnf = genericRnf
+instance NFData Benchmark
 
 instance L.HasBuildInfo Benchmark where
   buildInfo f (Benchmark x1 x2 x3) = fmap (\y1 -> Benchmark x1 x2 y1) (f x3)
diff --git a/src/Distribution/Types/BenchmarkInterface.hs b/src/Distribution/Types/BenchmarkInterface.hs
--- a/src/Distribution/Types/BenchmarkInterface.hs
+++ b/src/Distribution/Types/BenchmarkInterface.hs
@@ -31,7 +31,7 @@
 
 instance Binary BenchmarkInterface
 instance Structured BenchmarkInterface
-instance NFData BenchmarkInterface where rnf = genericRnf
+instance NFData BenchmarkInterface
 
 instance Monoid BenchmarkInterface where
   mempty = BenchmarkUnsupported (BenchmarkTypeUnknown mempty nullVersion)
diff --git a/src/Distribution/Types/BenchmarkType.hs b/src/Distribution/Types/BenchmarkType.hs
--- a/src/Distribution/Types/BenchmarkType.hs
+++ b/src/Distribution/Types/BenchmarkType.hs
@@ -26,7 +26,7 @@
 
 instance Binary BenchmarkType
 instance Structured BenchmarkType
-instance NFData BenchmarkType where rnf = genericRnf
+instance NFData BenchmarkType
 
 knownBenchmarkTypes :: [BenchmarkType]
 knownBenchmarkTypes = [benchmarkTypeExe]
diff --git a/src/Distribution/Types/BuildInfo.hs b/src/Distribution/Types/BuildInfo.hs
--- a/src/Distribution/Types/BuildInfo.hs
+++ b/src/Distribution/Types/BuildInfo.hs
@@ -28,6 +28,7 @@
 
 import Distribution.Compiler
 import Distribution.ModuleName
+import Distribution.Utils.Generic (ordNub)
 import Language.Haskell.Extension
 
 -- Consider refactoring into executable and library versions.
@@ -150,7 +151,7 @@
 
 instance Binary BuildInfo
 instance Structured BuildInfo
-instance NFData BuildInfo where rnf = genericRnf
+instance NFData BuildInfo
 
 instance Monoid BuildInfo where
   mempty =
@@ -260,7 +261,7 @@
       }
     where
       combine field = field a `mappend` field b
-      combineNub field = nub (combine field)
+      combineNub field = ordNub (combine field)
       combineMby field = field b `mplus` field a
 
 emptyBuildInfo :: BuildInfo
diff --git a/src/Distribution/Types/BuildInfo/Lens.hs b/src/Distribution/Types/BuildInfo/Lens.hs
--- a/src/Distribution/Types/BuildInfo/Lens.hs
+++ b/src/Distribution/Types/BuildInfo/Lens.hs
@@ -274,7 +274,7 @@
   cSources f s = fmap (\x -> s{T.cSources = x}) (f (T.cSources s))
   {-# INLINE cSources #-}
 
-  cxxSources f s = fmap (\x -> s{T.cSources = x}) (f (T.cxxSources s))
+  cxxSources f s = fmap (\x -> s{T.cxxSources = x}) (f (T.cxxSources s))
   {-# INLINE cxxSources #-}
 
   jsSources f s = fmap (\x -> s{T.jsSources = x}) (f (T.jsSources s))
diff --git a/src/Distribution/Types/BuildType.hs b/src/Distribution/Types/BuildType.hs
--- a/src/Distribution/Types/BuildType.hs
+++ b/src/Distribution/Types/BuildType.hs
@@ -25,7 +25,8 @@
     -- which invokes @configure@ to generate additional build
     -- information used by later phases.
     Configure
-  | -- | calls @Distribution.Make.defaultMain@
+  | -- | @build-type: Make@ is no longer functional, but we must keep parsing
+    -- old Cabal files, even if only to throw an error later.
     Make
   | -- | uses user-supplied @Setup.hs@ or @Setup.lhs@ (default)
     Custom
@@ -34,7 +35,7 @@
 
 instance Binary BuildType
 instance Structured BuildType
-instance NFData BuildType where rnf = genericRnf
+instance NFData BuildType
 
 knownBuildTypes :: [BuildType]
 knownBuildTypes = [Simple, Configure, Make, Custom, Hooks]
@@ -49,7 +50,11 @@
       "Simple" -> return Simple
       "Configure" -> return Configure
       "Custom" -> return Custom
-      "Make" -> return Make
+      "Make" -> do
+        v <- askCabalSpecVersion
+        if v < CabalSpecV3_18
+          then return Make
+          else fail "build-type: 'Make'. This feature requires cabal-version <= 3.18."
       "Hooks" -> do
         v <- askCabalSpecVersion
         if v >= CabalSpecV3_14
diff --git a/src/Distribution/Types/CondTree.hs b/src/Distribution/Types/CondTree.hs
--- a/src/Distribution/Types/CondTree.hs
+++ b/src/Distribution/Types/CondTree.hs
@@ -10,13 +10,12 @@
   , condIfThenElse
   , foldCondTree
   , mapCondTree
-  , mapTreeConstrs
   , mapTreeConds
   , mapTreeData
+  , traverseCondTreeA
   , traverseCondTreeV
+  , traverseCondBranchA
   , traverseCondBranchV
-  , traverseCondTreeC
-  , traverseCondBranchC
   , extractCondition
   , simplifyCondTree
   , simplifyCondBranch
@@ -54,109 +53,99 @@
 -- derived off of 'targetBuildInfo' (perhaps a good refactoring
 -- would be to convert this into an opaque type, with a smart
 -- constructor that pre-computes the dependencies.)
-data CondTree v c a = CondNode
+data CondTree v a = CondNode
   { condTreeData :: a
-  , condTreeConstraints :: c
-  , condTreeComponents :: [CondBranch v c a]
+  , condTreeComponents :: [CondBranch v a]
   }
   deriving (Show, Eq, Data, Generic, Functor, Foldable, Traversable)
 
-instance (Binary v, Binary c, Binary a) => Binary (CondTree v c a)
-instance (Structured v, Structured c, Structured a) => Structured (CondTree v c a)
-instance (NFData v, NFData c, NFData a) => NFData (CondTree v c a) where rnf = genericRnf
+instance (Binary v, Binary a) => Binary (CondTree v a)
+instance (Structured v, Structured a) => Structured (CondTree v a)
+instance (NFData v, NFData a) => NFData (CondTree v a)
 
-instance (Semigroup a, Semigroup c) => Semigroup (CondTree v c a) where
-  (CondNode a c bs) <> (CondNode a' c' bs') = CondNode (a <> a') (c <> c') (bs <> bs')
+instance Semigroup a => Semigroup (CondTree v a) where
+  (CondNode a bs) <> (CondNode a' bs') = CondNode (a <> a') (bs <> bs')
 
-instance (Semigroup a, Semigroup c, Monoid a, Monoid c) => Monoid (CondTree v c a) where
+instance Monoid a => Monoid (CondTree v a) where
   mappend = (<>)
-  mempty = CondNode mempty mempty mempty
+  mempty = CondNode mempty mempty
 
 -- | A 'CondBranch' represents a conditional branch, e.g., @if
 -- flag(foo)@ on some syntax @a@.  It also has an optional false
 -- branch.
-data CondBranch v c a = CondBranch
+data CondBranch v a = CondBranch
   { condBranchCondition :: Condition v
-  , condBranchIfTrue :: CondTree v c a
-  , condBranchIfFalse :: Maybe (CondTree v c a)
+  , condBranchIfTrue :: CondTree v a
+  , condBranchIfFalse :: Maybe (CondTree v a)
   }
-  deriving (Show, Eq, Data, Generic, Functor, Traversable)
-
--- This instance is written by hand because GHC 8.0.1/8.0.2 infinite
--- loops when trying to derive it with optimizations.  See
--- https://gitlab.haskell.org/ghc/ghc/-/issues/13056
-instance Foldable (CondBranch v c) where
-  foldMap f (CondBranch _ c Nothing) = foldMap f c
-  foldMap f (CondBranch _ c (Just a)) = foldMap f c `mappend` foldMap f a
+  deriving (Show, Eq, Data, Generic, Functor, Traversable, Foldable)
 
-instance (Binary v, Binary c, Binary a) => Binary (CondBranch v c a)
-instance (Structured v, Structured c, Structured a) => Structured (CondBranch v c a)
-instance (NFData v, NFData c, NFData a) => NFData (CondBranch v c a) where rnf = genericRnf
+instance (Binary v, Binary a) => Binary (CondBranch v a)
+instance (Structured v, Structured a) => Structured (CondBranch v a)
+instance (NFData v, NFData a) => NFData (CondBranch v a)
 
-condIfThen :: Condition v -> CondTree v c a -> CondBranch v c a
+condIfThen :: Condition v -> CondTree v a -> CondBranch v a
 condIfThen c t = CondBranch c t Nothing
 
-condIfThenElse :: Condition v -> CondTree v c a -> CondTree v c a -> CondBranch v c a
+condIfThenElse :: Condition v -> CondTree v a -> CondTree v a -> CondBranch v a
 condIfThenElse c t e = CondBranch c t (Just e)
 
 mapCondTree
   :: (a -> b)
-  -> (c -> d)
   -> (Condition v -> Condition w)
-  -> CondTree v c a
-  -> CondTree w d b
-mapCondTree fa fc fcnd (CondNode a c ifs) =
-  CondNode (fa a) (fc c) (map g ifs)
+  -> CondTree v a
+  -> CondTree w b
+mapCondTree fa fcnd (CondNode a ifs) =
+  CondNode (fa a) (map g ifs)
   where
     g (CondBranch cnd t me) =
       CondBranch
         (fcnd cnd)
-        (mapCondTree fa fc fcnd t)
-        (fmap (mapCondTree fa fc fcnd) me)
+        (mapCondTree fa fcnd t)
+        (fmap (mapCondTree fa fcnd) me)
 
-mapTreeConstrs :: (c -> d) -> CondTree v c a -> CondTree v d a
-mapTreeConstrs f = mapCondTree id f id
+mapTreeConds :: (Condition v -> Condition w) -> CondTree v a -> CondTree w a
+mapTreeConds f = mapCondTree id f
 
-mapTreeConds :: (Condition v -> Condition w) -> CondTree v c a -> CondTree w c a
-mapTreeConds f = mapCondTree id id f
+mapTreeData :: (a -> b) -> CondTree v a -> CondTree v b
+mapTreeData f = mapCondTree f id
 
-mapTreeData :: (a -> b) -> CondTree v c a -> CondTree v c b
-mapTreeData f = mapCondTree f id id
+-- | @@Traversal@@ for the data
+traverseCondTreeA :: L.Traversal (CondTree v a) (CondTree v b) a b
+traverseCondTreeA f (CondNode a ifs) =
+  CondNode
+    <$> f a
+    <*> traverse (traverseCondBranchA f) ifs
 
 -- | @@Traversal@@ for the variables
-traverseCondTreeV :: L.Traversal (CondTree v c a) (CondTree w c a) v w
-traverseCondTreeV f (CondNode a c ifs) =
-  CondNode a c <$> traverse (traverseCondBranchV f) ifs
+traverseCondTreeV :: L.Traversal (CondTree v a) (CondTree w a) v w
+traverseCondTreeV f (CondNode a ifs) =
+  CondNode a <$> traverse (traverseCondBranchV f) ifs
 
+-- | @@Traversal@@ for the data
+traverseCondBranchA :: L.Traversal (CondBranch v a) (CondBranch v b) a b
+traverseCondBranchA f (CondBranch cnd t me) =
+  pure (CondBranch cnd)
+    <*> traverseCondTreeA f t
+    <*> traverse (traverseCondTreeA f) me
+
 -- | @@Traversal@@ for the variables
-traverseCondBranchV :: L.Traversal (CondBranch v c a) (CondBranch w c a) v w
+traverseCondBranchV :: L.Traversal (CondBranch v a) (CondBranch w a) v w
 traverseCondBranchV f (CondBranch cnd t me) =
   CondBranch
     <$> traverse f cnd
     <*> traverseCondTreeV f t
     <*> traverse (traverseCondTreeV f) me
 
--- | @@Traversal@@ for the aggregated constraints
-traverseCondTreeC :: L.Traversal (CondTree v c a) (CondTree v d a) c d
-traverseCondTreeC f (CondNode a c ifs) =
-  CondNode a <$> f c <*> traverse (traverseCondBranchC f) ifs
-
--- | @@Traversal@@ for the aggregated constraints
-traverseCondBranchC :: L.Traversal (CondBranch v c a) (CondBranch v d a) c d
-traverseCondBranchC f (CondBranch cnd t me) =
-  CondBranch cnd
-    <$> traverseCondTreeC f t
-    <*> traverse (traverseCondTreeC f) me
-
 -- | Extract the condition matched by the given predicate from a cond tree.
 --
 -- We use this mainly for extracting buildable conditions (see the Note in
 -- Distribution.PackageDescription.Configuration), but the function is in fact
 -- more general.
-extractCondition :: Eq v => (a -> Bool) -> CondTree v c a -> Condition v
+extractCondition :: Eq v => (a -> Bool) -> CondTree v a -> Condition v
 extractCondition p = go
   where
-    go (CondNode x _ cs)
+    go (CondNode x cs)
       | not (p x) = Lit False
       | otherwise = goList cs
 
@@ -171,20 +160,20 @@
 -- | Flattens a CondTree using a partial flag assignment. When a condition
 -- cannot be evaluated, both branches are ignored.
 simplifyCondTree
-  :: (Semigroup a, Semigroup d)
+  :: Semigroup a
   => (v -> Either v Bool)
-  -> CondTree v d a
-  -> (d, a)
-simplifyCondTree env (CondNode a d ifs) =
-  foldl (<>) (d, a) $ mapMaybe (simplifyCondBranch env) ifs
+  -> CondTree v a
+  -> a
+simplifyCondTree env (CondNode a ifs) =
+  foldl (<>) a $ mapMaybe (simplifyCondBranch env) ifs
 
 -- | Realizes a 'CondBranch' using partial flag assignment. When a condition
 -- cannot be evaluated, returns 'Nothing'.
 simplifyCondBranch
-  :: (Semigroup a, Semigroup d)
+  :: Semigroup a
   => (v -> Either v Bool)
-  -> CondBranch v d a
-  -> Maybe (d, a)
+  -> CondBranch v a
+  -> Maybe a
 simplifyCondBranch env (CondBranch cnd t me) =
   case simplifyCondition cnd env of
     (Lit True, _) -> Just $ simplifyCondTree env t
@@ -194,8 +183,8 @@
 -- | Flatten a CondTree.  This will resolve the CondTree by taking all
 --  possible paths into account.  Note that since branches represent exclusive
 --  choices this may not result in a \"sane\" result.
-ignoreConditions :: (Semigroup a, Semigroup c) => CondTree v c a -> (a, c)
-ignoreConditions (CondNode a c ifs) = foldl (<>) (a, c) $ concatMap f ifs
+ignoreConditions :: Semigroup a => CondTree v a -> a
+ignoreConditions (CondNode a ifs) = foldl (<>) a $ concatMap f ifs
   where
     f (CondBranch _ t me) =
       ignoreConditions t
@@ -204,10 +193,10 @@
 -- | Flatten a CondTree. This will traverse the CondTree by taking all
 --  possible paths into account, but merging inclusive when two paths
 --  may co-exist, and exclusively when the paths are an if/else
-foldCondTree :: forall b c a v. b -> ((c, a) -> b) -> (b -> b -> b) -> (b -> b -> b) -> CondTree v c a -> b
+foldCondTree :: forall b a v. b -> (a -> b) -> (b -> b -> b) -> (b -> b -> b) -> CondTree v a -> b
 foldCondTree e u mergeInclusive mergeExclusive = goTree
   where
-    goTree :: CondTree v c a -> b
-    goTree (CondNode a c ifs) = u (c, a) `mergeInclusive` foldl goBranch e ifs
-    goBranch :: b -> CondBranch v c a -> b
+    goTree :: CondTree v a -> b
+    goTree (CondNode a ifs) = u a `mergeInclusive` foldl goBranch e ifs
+    goBranch :: b -> CondBranch v a -> b
     goBranch acc (CondBranch _ t mt) = mergeInclusive acc (maybe (goTree t) (mergeExclusive (goTree t) . goTree) mt)
diff --git a/src/Distribution/Types/Condition.hs b/src/Distribution/Types/Condition.hs
--- a/src/Distribution/Types/Condition.hs
+++ b/src/Distribution/Types/Condition.hs
@@ -100,7 +100,7 @@
 
 instance Binary c => Binary (Condition c)
 instance Structured c => Structured (Condition c)
-instance NFData c => NFData (Condition c) where rnf = genericRnf
+instance NFData c => NFData (Condition c)
 
 -- | Simplify the condition and return its free variables.
 simplifyCondition
diff --git a/src/Distribution/Types/ConfVar.hs b/src/Distribution/Types/ConfVar.hs
--- a/src/Distribution/Types/ConfVar.hs
+++ b/src/Distribution/Types/ConfVar.hs
@@ -24,4 +24,4 @@
 instance Binary ConfVar
 instance Structured ConfVar
 
-instance NFData ConfVar where rnf = genericRnf
+instance NFData ConfVar
diff --git a/src/Distribution/Types/Dependency.hs b/src/Distribution/Types/Dependency.hs
--- a/src/Distribution/Types/Dependency.hs
+++ b/src/Distribution/Types/Dependency.hs
@@ -70,7 +70,7 @@
 
 instance Binary Dependency
 instance Structured Dependency
-instance NFData Dependency where rnf = genericRnf
+instance NFData Dependency
 
 -- |
 --
diff --git a/src/Distribution/Types/ExeDependency.hs b/src/Distribution/Types/ExeDependency.hs
--- a/src/Distribution/Types/ExeDependency.hs
+++ b/src/Distribution/Types/ExeDependency.hs
@@ -29,7 +29,7 @@
 
 instance Binary ExeDependency
 instance Structured ExeDependency
-instance NFData ExeDependency where rnf = genericRnf
+instance NFData ExeDependency
 
 instance Pretty ExeDependency where
   pretty (ExeDependency name exe ver) =
diff --git a/src/Distribution/Types/Executable.hs b/src/Distribution/Types/Executable.hs
--- a/src/Distribution/Types/Executable.hs
+++ b/src/Distribution/Types/Executable.hs
@@ -33,7 +33,7 @@
 
 instance Binary Executable
 instance Structured Executable
-instance NFData Executable where rnf = genericRnf
+instance NFData Executable
 
 instance Monoid Executable where
   mempty =
diff --git a/src/Distribution/Types/ExecutableScope.hs b/src/Distribution/Types/ExecutableScope.hs
--- a/src/Distribution/Types/ExecutableScope.hs
+++ b/src/Distribution/Types/ExecutableScope.hs
@@ -32,7 +32,7 @@
 
 instance Binary ExecutableScope
 instance Structured ExecutableScope
-instance NFData ExecutableScope where rnf = genericRnf
+instance NFData ExecutableScope
 
 -- | 'Any' like semigroup, where 'ExecutablePrivate' is 'Any True'
 instance Semigroup ExecutableScope where
diff --git a/src/Distribution/Types/ExposedModule.hs b/src/Distribution/Types/ExposedModule.hs
--- a/src/Distribution/Types/ExposedModule.hs
+++ b/src/Distribution/Types/ExposedModule.hs
@@ -42,4 +42,4 @@
 
 instance Binary ExposedModule
 instance Structured ExposedModule
-instance NFData ExposedModule where rnf = genericRnf
+instance NFData ExposedModule
diff --git a/src/Distribution/Types/Flag.hs b/src/Distribution/Types/Flag.hs
--- a/src/Distribution/Types/Flag.hs
+++ b/src/Distribution/Types/Flag.hs
@@ -1,6 +1,7 @@
 {-# LANGUAGE DeriveDataTypeable #-}
 {-# LANGUAGE DeriveGeneric #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE TupleSections #-}
 
 module Distribution.Types.Flag
   ( -- * Package flag
@@ -60,7 +61,7 @@
 
 instance Binary PackageFlag
 instance Structured PackageFlag
-instance NFData PackageFlag where rnf = genericRnf
+instance NFData PackageFlag
 
 -- | A 'PackageFlag' initialized with default parameters.
 emptyFlag :: FlagName -> PackageFlag
@@ -170,7 +171,7 @@
 mkFlagAssignment =
   FlagAssignment
     . Map.fromListWith (flip combineFlagValues)
-    . fmap (fmap (\b -> (1, b)))
+    . fmap (fmap (1,))
 
 -- | Deconstruct a 'FlagAssignment' into a list of flag/value pairs.
 --
diff --git a/src/Distribution/Types/ForeignLib.hs b/src/Distribution/Types/ForeignLib.hs
--- a/src/Distribution/Types/ForeignLib.hs
+++ b/src/Distribution/Types/ForeignLib.hs
@@ -85,7 +85,7 @@
 
 instance Binary LibVersionInfo
 instance Structured LibVersionInfo
-instance NFData LibVersionInfo where rnf = genericRnf
+instance NFData LibVersionInfo
 
 instance Pretty LibVersionInfo where
   pretty (LibVersionInfo c r a) =
@@ -138,7 +138,7 @@
 
 instance Binary ForeignLib
 instance Structured ForeignLib
-instance NFData ForeignLib where rnf = genericRnf
+instance NFData ForeignLib
 
 instance Semigroup ForeignLib where
   a <> b =
diff --git a/src/Distribution/Types/ForeignLibOption.hs b/src/Distribution/Types/ForeignLibOption.hs
--- a/src/Distribution/Types/ForeignLibOption.hs
+++ b/src/Distribution/Types/ForeignLibOption.hs
@@ -36,4 +36,4 @@
 
 instance Binary ForeignLibOption
 instance Structured ForeignLibOption
-instance NFData ForeignLibOption where rnf = genericRnf
+instance NFData ForeignLibOption
diff --git a/src/Distribution/Types/ForeignLibType.hs b/src/Distribution/Types/ForeignLibType.hs
--- a/src/Distribution/Types/ForeignLibType.hs
+++ b/src/Distribution/Types/ForeignLibType.hs
@@ -44,7 +44,7 @@
 
 instance Binary ForeignLibType
 instance Structured ForeignLibType
-instance NFData ForeignLibType where rnf = genericRnf
+instance NFData ForeignLibType
 
 instance Semigroup ForeignLibType where
   ForeignLibTypeUnknown <> b = b
diff --git a/src/Distribution/Types/GenericPackageDescription.hs b/src/Distribution/Types/GenericPackageDescription.hs
--- a/src/Distribution/Types/GenericPackageDescription.hs
+++ b/src/Distribution/Types/GenericPackageDescription.hs
@@ -44,30 +44,30 @@
   --   Perfectly, PackageIndex should have sum type, so we don't need to
   --   have dummy GPDs.
   , genPackageFlags :: [PackageFlag]
-  , condLibrary :: Maybe (CondTree ConfVar [Dependency] Library)
+  , condLibrary :: Maybe (CondTree ConfVar Library)
   , condSubLibraries
       :: [ ( UnqualComponentName
-           , CondTree ConfVar [Dependency] Library
+           , CondTree ConfVar Library
            )
          ]
   , condForeignLibs
       :: [ ( UnqualComponentName
-           , CondTree ConfVar [Dependency] ForeignLib
+           , CondTree ConfVar ForeignLib
            )
          ]
   , condExecutables
       :: [ ( UnqualComponentName
-           , CondTree ConfVar [Dependency] Executable
+           , CondTree ConfVar Executable
            )
          ]
   , condTestSuites
       :: [ ( UnqualComponentName
-           , CondTree ConfVar [Dependency] TestSuite
+           , CondTree ConfVar TestSuite
            )
          ]
   , condBenchmarks
       :: [ ( UnqualComponentName
-           , CondTree ConfVar [Dependency] Benchmark
+           , CondTree ConfVar Benchmark
            )
          ]
   }
@@ -78,7 +78,7 @@
 
 instance Binary GenericPackageDescription
 instance Structured GenericPackageDescription
-instance NFData GenericPackageDescription where rnf = genericRnf
+instance NFData GenericPackageDescription
 
 emptyGenericPackageDescription :: GenericPackageDescription
 emptyGenericPackageDescription = GenericPackageDescription emptyPackageDescription Nothing [] Nothing [] [] [] [] []
@@ -92,29 +92,9 @@
       <$> L.traverseBuildInfos f p
       <*> pure v
       <*> pure a1
-      <*> (traverse . traverseCondTreeBuildInfo) f x1
-      <*> (traverse . L._2 . traverseCondTreeBuildInfo) f x2
-      <*> (traverse . L._2 . traverseCondTreeBuildInfo) f x3
-      <*> (traverse . L._2 . traverseCondTreeBuildInfo) f x4
-      <*> (traverse . L._2 . traverseCondTreeBuildInfo) f x5
-      <*> (traverse . L._2 . traverseCondTreeBuildInfo) f x6
-
--- We use this traversal to keep [Dependency] field in CondTree up to date.
-traverseCondTreeBuildInfo
-  :: forall f comp v
-   . (Applicative f, L.HasBuildInfo comp)
-  => LensLike' f (CondTree v [Dependency] comp) L.BuildInfo
-traverseCondTreeBuildInfo g = node
-  where
-    mkCondNode :: comp -> [CondBranch v [Dependency] comp] -> CondTree v [Dependency] comp
-    mkCondNode comp = CondNode comp (view L.targetBuildDepends comp)
-
-    node (CondNode comp _ branches) =
-      mkCondNode
-        <$> L.buildInfo g comp
-        <*> traverse branch branches
-
-    branch (CondBranch v x y) =
-      CondBranch v
-        <$> node x
-        <*> traverse node y
+      <*> (traverse . traverse . L.buildInfo) f x1
+      <*> (traverse . L._2 . traverse . L.buildInfo) f x2
+      <*> (traverse . L._2 . traverse . L.buildInfo) f x3
+      <*> (traverse . L._2 . traverse . L.buildInfo) f x4
+      <*> (traverse . L._2 . traverse . L.buildInfo) f x5
+      <*> (traverse . L._2 . traverse . L.buildInfo) f x6
diff --git a/src/Distribution/Types/GenericPackageDescription/Lens.hs b/src/Distribution/Types/GenericPackageDescription/Lens.hs
--- a/src/Distribution/Types/GenericPackageDescription/Lens.hs
+++ b/src/Distribution/Types/GenericPackageDescription/Lens.hs
@@ -22,7 +22,6 @@
 import Distribution.Types.Benchmark (Benchmark)
 import Distribution.Types.CondTree (CondTree)
 import Distribution.Types.ConfVar (ConfVar (..))
-import Distribution.Types.Dependency (Dependency)
 import Distribution.Types.Executable (Executable)
 import Distribution.Types.Flag (FlagName, PackageFlag (MkPackageFlag))
 import Distribution.Types.ForeignLib (ForeignLib)
@@ -49,41 +48,40 @@
 genPackageFlags f s = fmap (\x -> s{T.genPackageFlags = x}) (f (T.genPackageFlags s))
 {-# INLINE genPackageFlags #-}
 
-condLibrary :: Lens' GenericPackageDescription (Maybe (CondTree ConfVar [Dependency] Library))
+condLibrary :: Lens' GenericPackageDescription (Maybe (CondTree ConfVar Library))
 condLibrary f s = fmap (\x -> s{T.condLibrary = x}) (f (T.condLibrary s))
 {-# INLINE condLibrary #-}
 
-condSubLibraries :: Lens' GenericPackageDescription [(UnqualComponentName, (CondTree ConfVar [Dependency] Library))]
+condSubLibraries :: Lens' GenericPackageDescription [(UnqualComponentName, CondTree ConfVar Library)]
 condSubLibraries f s = fmap (\x -> s{T.condSubLibraries = x}) (f (T.condSubLibraries s))
 {-# INLINE condSubLibraries #-}
 
-condForeignLibs :: Lens' GenericPackageDescription [(UnqualComponentName, (CondTree ConfVar [Dependency] ForeignLib))]
+condForeignLibs :: Lens' GenericPackageDescription [(UnqualComponentName, CondTree ConfVar ForeignLib)]
 condForeignLibs f s = fmap (\x -> s{T.condForeignLibs = x}) (f (T.condForeignLibs s))
 {-# INLINE condForeignLibs #-}
 
-condExecutables :: Lens' GenericPackageDescription [(UnqualComponentName, (CondTree ConfVar [Dependency] Executable))]
+condExecutables :: Lens' GenericPackageDescription [(UnqualComponentName, CondTree ConfVar Executable)]
 condExecutables f s = fmap (\x -> s{T.condExecutables = x}) (f (T.condExecutables s))
 {-# INLINE condExecutables #-}
 
-condTestSuites :: Lens' GenericPackageDescription [(UnqualComponentName, (CondTree ConfVar [Dependency] TestSuite))]
+condTestSuites :: Lens' GenericPackageDescription [(UnqualComponentName, CondTree ConfVar TestSuite)]
 condTestSuites f s = fmap (\x -> s{T.condTestSuites = x}) (f (T.condTestSuites s))
 {-# INLINE condTestSuites #-}
 
-condBenchmarks :: Lens' GenericPackageDescription [(UnqualComponentName, (CondTree ConfVar [Dependency] Benchmark))]
+condBenchmarks :: Lens' GenericPackageDescription [(UnqualComponentName, CondTree ConfVar Benchmark)]
 condBenchmarks f s = fmap (\x -> s{T.condBenchmarks = x}) (f (T.condBenchmarks s))
 {-# INLINE condBenchmarks #-}
 
 allCondTrees
   :: Applicative f
   => ( forall a
-        . CondTree ConfVar [Dependency] a
-       -> f (CondTree ConfVar [Dependency] a)
+        . CondTree ConfVar a
+       -> f (CondTree ConfVar a)
      )
   -> GenericPackageDescription
   -> f GenericPackageDescription
 allCondTrees f (GenericPackageDescription p v a1 x1 x2 x3 x4 x5 x6) =
-  GenericPackageDescription
-    <$> pure p
+  pure (GenericPackageDescription p)
     <*> pure v
     <*> pure a1
     <*> traverse f x1
diff --git a/src/Distribution/Types/IncludeRenaming.hs b/src/Distribution/Types/IncludeRenaming.hs
--- a/src/Distribution/Types/IncludeRenaming.hs
+++ b/src/Distribution/Types/IncludeRenaming.hs
@@ -31,7 +31,7 @@
 instance Binary IncludeRenaming
 instance Structured IncludeRenaming
 
-instance NFData IncludeRenaming where rnf = genericRnf
+instance NFData IncludeRenaming
 
 -- | The 'defaultIncludeRenaming' applied when you only @build-depends@
 -- on a package.
diff --git a/src/Distribution/Types/InstalledPackageInfo.hs b/src/Distribution/Types/InstalledPackageInfo.hs
--- a/src/Distribution/Types/InstalledPackageInfo.hs
+++ b/src/Distribution/Types/InstalledPackageInfo.hs
@@ -73,6 +73,7 @@
   , libraryDirs :: [FilePath]
   , libraryDirsStatic :: [FilePath]
   , libraryDynDirs :: [FilePath]
+  , libraryBytecodeDirs :: [FilePath]
   -- ^ overrides 'libraryDirs'
   , dataDir :: FilePath
   , hsLibraries :: [String]
@@ -99,7 +100,7 @@
 instance Binary InstalledPackageInfo
 instance Structured InstalledPackageInfo
 
-instance NFData InstalledPackageInfo where rnf = genericRnf
+instance NFData InstalledPackageInfo
 
 instance Package.HasMungedPackageId InstalledPackageInfo where
   mungedId = mungedPackageId
@@ -160,6 +161,7 @@
     , hsLibraries = []
     , extraLibraries = []
     , extraLibrariesStatic = []
+    , libraryBytecodeDirs = []
     , extraGHCiLibraries = []
     , includeDirs = []
     , includes = []
diff --git a/src/Distribution/Types/InstalledPackageInfo/FieldGrammar.hs b/src/Distribution/Types/InstalledPackageInfo/FieldGrammar.hs
--- a/src/Distribution/Types/InstalledPackageInfo/FieldGrammar.hs
+++ b/src/Distribution/Types/InstalledPackageInfo/FieldGrammar.hs
@@ -55,8 +55,6 @@
 
 ipiFieldGrammar
   :: ( FieldGrammar c g
-     , Applicative (g InstalledPackageInfo)
-     , Applicative (g Basic)
      , c (Identity AbiHash)
      , c (Identity LibraryVisibility)
      , c (Identity PackageName)
@@ -108,6 +106,7 @@
     <@> monoidalFieldAla "library-dirs" (alaList' FSep FilePathNT) L.libraryDirs
     <@> monoidalFieldAla "library-dirs-static" (alaList' FSep FilePathNT) L.libraryDirsStatic
     <@> monoidalFieldAla "dynamic-library-dirs" (alaList' FSep FilePathNT) L.libraryDynDirs
+    <@> monoidalFieldAla "bytecode-library-dirs" (alaList' FSep FilePathNT) L.libraryBytecodeDirs
     <@> optionalFieldDefAla "data-dir" FilePathNT L.dataDir ""
     <@> monoidalFieldAla "hs-libraries" (alaList' FSep Token) L.hsLibraries
     <@> monoidalFieldAla "extra-libraries" (alaList' FSep Token) L.extraLibraries
@@ -300,7 +299,6 @@
 
 basicFieldGrammar
   :: ( FieldGrammar c g
-     , Applicative (g Basic)
      , c (Identity LibraryVisibility)
      , c (Identity PackageName)
      , c (Identity UnqualComponentName)
diff --git a/src/Distribution/Types/InstalledPackageInfo/Lens.hs b/src/Distribution/Types/InstalledPackageInfo/Lens.hs
--- a/src/Distribution/Types/InstalledPackageInfo/Lens.hs
+++ b/src/Distribution/Types/InstalledPackageInfo/Lens.hs
@@ -123,6 +123,10 @@
 libraryDynDirs f s = fmap (\x -> s{T.libraryDynDirs = x}) (f (T.libraryDynDirs s))
 {-# INLINE libraryDynDirs #-}
 
+libraryBytecodeDirs :: Lens' InstalledPackageInfo [FilePath]
+libraryBytecodeDirs f s = fmap (\x -> s{T.libraryBytecodeDirs = x}) (f (T.libraryBytecodeDirs s))
+{-# INLINE libraryBytecodeDirs #-}
+
 dataDir :: Lens' InstalledPackageInfo FilePath
 dataDir f s = fmap (\x -> s{T.dataDir = x}) (f (T.dataDir s))
 {-# INLINE dataDir #-}
diff --git a/src/Distribution/Types/LegacyExeDependency.hs b/src/Distribution/Types/LegacyExeDependency.hs
--- a/src/Distribution/Types/LegacyExeDependency.hs
+++ b/src/Distribution/Types/LegacyExeDependency.hs
@@ -30,7 +30,7 @@
 
 instance Binary LegacyExeDependency
 instance Structured LegacyExeDependency
-instance NFData LegacyExeDependency where rnf = genericRnf
+instance NFData LegacyExeDependency
 
 instance Pretty LegacyExeDependency where
   pretty (LegacyExeDependency name ver) =
@@ -43,7 +43,7 @@
     verRange <- parsecMaybeQuoted parsec <|> pure anyVersion
     pure $ LegacyExeDependency name verRange
     where
-      nameP = intercalate "-" <$> toList <$> P.sepByNonEmpty component (P.char '-')
+      nameP = intercalate "-" . toList <$> P.sepByNonEmpty component (P.char '-')
       component = do
         cs <- P.munch1 (\c -> isAlphaNum c || c == '+' || c == '_')
         if all isDigit cs then fail "invalid component" else return cs
diff --git a/src/Distribution/Types/Library.hs b/src/Distribution/Types/Library.hs
--- a/src/Distribution/Types/Library.hs
+++ b/src/Distribution/Types/Library.hs
@@ -38,7 +38,7 @@
 
 instance Binary Library
 instance Structured Library
-instance NFData Library where rnf = genericRnf
+instance NFData Library
 
 emptyLibrary :: Library
 emptyLibrary =
diff --git a/src/Distribution/Types/LibraryName.hs b/src/Distribution/Types/LibraryName.hs
--- a/src/Distribution/Types/LibraryName.hs
+++ b/src/Distribution/Types/LibraryName.hs
@@ -33,7 +33,7 @@
 
 instance Binary LibraryName
 instance Structured LibraryName
-instance NFData LibraryName where rnf = genericRnf
+instance NFData LibraryName
 
 -- | Pretty print 'LibraryName' in build-target-ish syntax.
 --
diff --git a/src/Distribution/Types/LibraryVisibility.hs b/src/Distribution/Types/LibraryVisibility.hs
--- a/src/Distribution/Types/LibraryVisibility.hs
+++ b/src/Distribution/Types/LibraryVisibility.hs
@@ -39,7 +39,7 @@
 
 instance Binary LibraryVisibility
 instance Structured LibraryVisibility
-instance NFData LibraryVisibility where rnf = genericRnf
+instance NFData LibraryVisibility
 
 instance Semigroup LibraryVisibility where
   LibraryVisibilityPrivate <> LibraryVisibilityPrivate = LibraryVisibilityPrivate
diff --git a/src/Distribution/Types/Mixin.hs b/src/Distribution/Types/Mixin.hs
--- a/src/Distribution/Types/Mixin.hs
+++ b/src/Distribution/Types/Mixin.hs
@@ -36,7 +36,7 @@
 instance Binary Mixin
 instance Structured Mixin
 
-instance NFData Mixin where rnf = genericRnf
+instance NFData Mixin
 
 instance Pretty Mixin where
   pretty (Mixin pn LMainLibName incl) = pretty pn <+> pretty incl
diff --git a/src/Distribution/Types/ModuleReexport.hs b/src/Distribution/Types/ModuleReexport.hs
--- a/src/Distribution/Types/ModuleReexport.hs
+++ b/src/Distribution/Types/ModuleReexport.hs
@@ -28,7 +28,7 @@
 
 instance Binary ModuleReexport
 instance Structured ModuleReexport
-instance NFData ModuleReexport where rnf = genericRnf
+instance NFData ModuleReexport
 
 instance Pretty ModuleReexport where
   pretty (ModuleReexport mpkgname origname newname) =
diff --git a/src/Distribution/Types/ModuleRenaming.hs b/src/Distribution/Types/ModuleRenaming.hs
--- a/src/Distribution/Types/ModuleRenaming.hs
+++ b/src/Distribution/Types/ModuleRenaming.hs
@@ -49,7 +49,7 @@
 interpModuleRenaming DefaultRenaming = Just
 interpModuleRenaming (ModuleRenaming rns) =
   let m = Map.fromList rns
-   in \k -> Map.lookup k m
+   in (`Map.lookup` m)
 interpModuleRenaming (HidingRenaming hs) =
   let s = Set.fromList hs
    in \k -> if k `Set.member` s then Nothing else Just k
@@ -68,7 +68,7 @@
 instance Binary ModuleRenaming
 instance Structured ModuleRenaming
 
-instance NFData ModuleRenaming where rnf = genericRnf
+instance NFData ModuleRenaming
 
 -- NB: parentheses are mandatory, because later we may extend this syntax
 -- to allow "hiding (A, B)" or other modifier words.
diff --git a/src/Distribution/Types/MungedPackageName.hs b/src/Distribution/Types/MungedPackageName.hs
--- a/src/Distribution/Types/MungedPackageName.hs
+++ b/src/Distribution/Types/MungedPackageName.hs
@@ -35,7 +35,7 @@
 
 instance Binary MungedPackageName
 instance Structured MungedPackageName
-instance NFData MungedPackageName where rnf = genericRnf
+instance NFData MungedPackageName
 
 -- | Computes the package name for a library.  If this is the public
 -- library, it will just be the original package name; otherwise,
diff --git a/src/Distribution/Types/PackageDescription.hs b/src/Distribution/Types/PackageDescription.hs
--- a/src/Distribution/Types/PackageDescription.hs
+++ b/src/Distribution/Types/PackageDescription.hs
@@ -156,7 +156,7 @@
 instance Binary PackageDescription
 instance Structured PackageDescription
 
-instance NFData PackageDescription where rnf = genericRnf
+instance NFData PackageDescription
 
 instance Package PackageDescription where
   packageId = package
@@ -445,10 +445,7 @@
   fmap CBench $ find ((name ==) . benchmarkName) (benchmarks pkg)
 
 getComponent :: PackageDescription -> ComponentName -> Component
-getComponent pkg cname =
-  case lookupComponent pkg cname of
-    Just cpnt -> cpnt
-    Nothing -> missingComponent
+getComponent pkg cname = fromMaybe missingComponent (lookupComponent pkg cname)
   where
     missingComponent =
       error $
diff --git a/src/Distribution/Types/PackageId.hs b/src/Distribution/Types/PackageId.hs
--- a/src/Distribution/Types/PackageId.hs
+++ b/src/Distribution/Types/PackageId.hs
@@ -65,7 +65,7 @@
     (v, xs) <- case simpleParsec (NE.last xs') of
       Nothing -> return (nullVersion, toList xs') -- all components are version
       Just v -> return (v, NE.init xs')
-    if not (null xs) && all (\c -> all (/= '.') c && not (all isDigit c)) xs
+    if not (null xs) && all (\c -> notElem '.' c && not (all isDigit c)) xs
       then return $ PackageIdentifier (mkPackageName (intercalate "-" xs)) v
       else fail "all digits or a dot in a portion of package name"
     where
diff --git a/src/Distribution/Types/PackageVersionConstraint.hs b/src/Distribution/Types/PackageVersionConstraint.hs
--- a/src/Distribution/Types/PackageVersionConstraint.hs
+++ b/src/Distribution/Types/PackageVersionConstraint.hs
@@ -30,7 +30,7 @@
 
 instance Binary PackageVersionConstraint
 instance Structured PackageVersionConstraint
-instance NFData PackageVersionConstraint where rnf = genericRnf
+instance NFData PackageVersionConstraint
 
 instance Pretty PackageVersionConstraint where
   -- Cannot do: PackageVersionConstraint have to be parseable
diff --git a/src/Distribution/Types/PkgconfigDependency.hs b/src/Distribution/Types/PkgconfigDependency.hs
--- a/src/Distribution/Types/PkgconfigDependency.hs
+++ b/src/Distribution/Types/PkgconfigDependency.hs
@@ -27,7 +27,7 @@
 
 instance Binary PkgconfigDependency
 instance Structured PkgconfigDependency
-instance NFData PkgconfigDependency where rnf = genericRnf
+instance NFData PkgconfigDependency
 
 instance Pretty PkgconfigDependency where
   pretty (PkgconfigDependency name PcAnyVersion) = pretty name
diff --git a/src/Distribution/Types/PkgconfigVersion.hs b/src/Distribution/Types/PkgconfigVersion.hs
--- a/src/Distribution/Types/PkgconfigVersion.hs
+++ b/src/Distribution/Types/PkgconfigVersion.hs
@@ -36,7 +36,7 @@
 
 instance Binary PkgconfigVersion
 instance Structured PkgconfigVersion
-instance NFData PkgconfigVersion where rnf = genericRnf
+instance NFData PkgconfigVersion
 
 instance Pretty PkgconfigVersion where
   pretty (PkgconfigVersion bs) = PP.text (BS8.unpack bs)
diff --git a/src/Distribution/Types/PkgconfigVersionRange.hs b/src/Distribution/Types/PkgconfigVersionRange.hs
--- a/src/Distribution/Types/PkgconfigVersionRange.hs
+++ b/src/Distribution/Types/PkgconfigVersionRange.hs
@@ -41,7 +41,7 @@
 
 instance Binary PkgconfigVersionRange
 instance Structured PkgconfigVersionRange
-instance NFData PkgconfigVersionRange where rnf = genericRnf
+instance NFData PkgconfigVersionRange
 
 instance Pretty PkgconfigVersionRange where
   pretty = pp 0
diff --git a/src/Distribution/Types/SetupBuildInfo.hs b/src/Distribution/Types/SetupBuildInfo.hs
--- a/src/Distribution/Types/SetupBuildInfo.hs
+++ b/src/Distribution/Types/SetupBuildInfo.hs
@@ -29,7 +29,7 @@
 
 instance Binary SetupBuildInfo
 instance Structured SetupBuildInfo
-instance NFData SetupBuildInfo where rnf = genericRnf
+instance NFData SetupBuildInfo
 
 instance Monoid SetupBuildInfo where
   mempty = SetupBuildInfo [] False
diff --git a/src/Distribution/Types/SourceRepo.hs b/src/Distribution/Types/SourceRepo.hs
--- a/src/Distribution/Types/SourceRepo.hs
+++ b/src/Distribution/Types/SourceRepo.hs
@@ -93,7 +93,7 @@
 
 instance Binary SourceRepo
 instance Structured SourceRepo
-instance NFData SourceRepo where rnf = genericRnf
+instance NFData SourceRepo
 
 -- | What this repo info is for, what it represents.
 data RepoKind
@@ -110,7 +110,7 @@
 
 instance Binary RepoKind
 instance Structured RepoKind
-instance NFData RepoKind where rnf = genericRnf
+instance NFData RepoKind
 
 -- | An enumeration of common source control systems. The fields used in the
 -- 'SourceRepo' depend on the type of repo. The tools and methods used to
@@ -130,7 +130,7 @@
 
 instance Binary KnownRepoType
 instance Structured KnownRepoType
-instance NFData KnownRepoType where rnf = genericRnf
+instance NFData KnownRepoType
 
 instance Parsec KnownRepoType where
   parsec = do
@@ -150,7 +150,7 @@
 
 instance Binary RepoType
 instance Structured RepoType
-instance NFData RepoType where rnf = genericRnf
+instance NFData RepoType
 
 knownRepoTypes :: [KnownRepoType]
 knownRepoTypes = [minBound .. maxBound]
diff --git a/src/Distribution/Types/TestSuite.hs b/src/Distribution/Types/TestSuite.hs
--- a/src/Distribution/Types/TestSuite.hs
+++ b/src/Distribution/Types/TestSuite.hs
@@ -36,7 +36,7 @@
 instance Binary TestSuite
 instance Structured TestSuite
 
-instance NFData TestSuite where rnf = genericRnf
+instance NFData TestSuite
 
 instance Monoid TestSuite where
   mempty =
diff --git a/src/Distribution/Types/TestSuiteInterface.hs b/src/Distribution/Types/TestSuiteInterface.hs
--- a/src/Distribution/Types/TestSuiteInterface.hs
+++ b/src/Distribution/Types/TestSuiteInterface.hs
@@ -35,7 +35,7 @@
 instance Binary TestSuiteInterface
 instance Structured TestSuiteInterface
 
-instance NFData TestSuiteInterface where rnf = genericRnf
+instance NFData TestSuiteInterface
 
 instance Monoid TestSuiteInterface where
   mempty = TestSuiteUnsupported (TestTypeUnknown mempty nullVersion)
diff --git a/src/Distribution/Types/TestType.hs b/src/Distribution/Types/TestType.hs
--- a/src/Distribution/Types/TestType.hs
+++ b/src/Distribution/Types/TestType.hs
@@ -30,7 +30,7 @@
 instance Binary TestType
 instance Structured TestType
 
-instance NFData TestType where rnf = genericRnf
+instance NFData TestType
 
 knownTestTypes :: [TestType]
 knownTestTypes =
diff --git a/src/Distribution/Types/Version.hs b/src/Distribution/Types/Version.hs
--- a/src/Distribution/Types/Version.hs
+++ b/src/Distribution/Types/Version.hs
@@ -99,7 +99,7 @@
       )
 
 instance Parsec Version where
-  parsec = mkVersion <$> toList <$> P.sepByNonEmpty versionDigitParser (P.char '.') <* tags
+  parsec = (mkVersion . toList <$> P.sepByNonEmpty versionDigitParser (P.char '.')) <* tags
     where
       tags = do
         ts <- many $ P.char '-' *> some (P.satisfy isAlphaNum)
@@ -141,13 +141,13 @@
 -- TODO: add validity check; disallow 'mkVersion []' (we have
 -- 'nullVersion' for that)
 mkVersion [] = nullVersion
-mkVersion (v1 : [])
+mkVersion [v1]
   | inWord16VerRep1 v1 = PV0 (mkWord64VerRep1 v1)
   | otherwise = PV1 v1 []
   where
     inWord16VerRep1 x1 = inWord16 (x1 .|. (x1 + 1))
     mkWord64VerRep1 y1 = mkWord64VerRep (y1 + 1) 0 0 0
-mkVersion (v1 : vs@(v2 : []))
+mkVersion (v1 : vs@[v2])
   | inWord16VerRep2 v1 v2 = PV0 (mkWord64VerRep2 v1 v2)
   | otherwise = PV1 v1 vs
   where
@@ -159,7 +159,7 @@
             .|. (x2 + 1)
         )
     mkWord64VerRep2 y1 y2 = mkWord64VerRep (y1 + 1) (y2 + 1) 0 0
-mkVersion (v1 : vs@(v2 : v3 : []))
+mkVersion (v1 : vs@[v2, v3])
   | inWord16VerRep3 v1 v2 v3 = PV0 (mkWord64VerRep3 v1 v2 v3)
   | otherwise = PV1 v1 vs
   where
@@ -173,7 +173,7 @@
             .|. (x3 + 1)
         )
     mkWord64VerRep3 y1 y2 y3 = mkWord64VerRep (y1 + 1) (y2 + 1) (y3 + 1) 0
-mkVersion (v1 : vs@(v2 : v3 : v4 : []))
+mkVersion (v1 : vs@[v2, v3, v4])
   | inWord16VerRep4 v1 v2 v3 v4 = PV0 (mkWord64VerRep4 v1 v2 v3 v4)
   | otherwise = PV1 v1 vs
   where
diff --git a/src/Distribution/Types/VersionInterval.hs b/src/Distribution/Types/VersionInterval.hs
--- a/src/Distribution/Types/VersionInterval.hs
+++ b/src/Distribution/Types/VersionInterval.hs
@@ -209,7 +209,7 @@
 -- Each interval is non-empty. The sequence is in increasing order and no
 -- intervals overlap or touch. Therefore only the first and last can be
 -- unbounded. The sequence can be empty if the range is empty
--- (e.g. a range expression like @< 1 && > 2@).
+-- (e.g. a range expression like @\< 1 && > 2@).
 --
 -- Other checks are trivial to implement using this view. For example:
 --
diff --git a/src/Distribution/Types/VersionInterval/Legacy.hs b/src/Distribution/Types/VersionInterval/Legacy.hs
--- a/src/Distribution/Types/VersionInterval/Legacy.hs
+++ b/src/Distribution/Types/VersionInterval/Legacy.hs
@@ -309,7 +309,7 @@
   -> VersionIntervals
   -> VersionIntervals
 unionVersionIntervals (VersionIntervals is0) (VersionIntervals is'0) =
-  checkInvariant (VersionIntervals (union is0 is'0))
+  checkInvariant (VersionIntervals (is0 `union` is'0))
   where
     union is [] = is
     union [] is' = is'
@@ -317,11 +317,11 @@
       -- @i < i'@ and separated: keep @i@.
       Left Nothing -> i : union is (i' : is')
       -- @i'' = i ∪ i'@ and @i@ ends first: drop @i@, replace @i'@ by @i''@.
-      Left (Just i'') -> union is (i'' : is')
+      Left (Just i'') -> is `union` (i'' : is')
       -- @i' < i@ and separated: keep @i'@.
       Right Nothing -> i' : union (i : is) is'
       -- @i'' = i ∪ i'@ and @i'@ ends first: drop @i'@, replace @i@ by @i''@.
-      Right (Just i'') -> union (i'' : is) is'
+      Right (Just i'') -> (i'' : is) `union` is'
 
 -- | Given two version intervals @i1@ and @i2@, return one of the following:
 --
@@ -364,17 +364,17 @@
   -> VersionIntervals
   -> VersionIntervals
 intersectVersionIntervals (VersionIntervals is0) (VersionIntervals is'0) =
-  checkInvariant (VersionIntervals (intersect is0 is'0))
+  checkInvariant (VersionIntervals (is0 `intersect` is'0))
   where
     intersect _ [] = []
     intersect [] _ = []
     intersect (i : is) (i' : is') = case intersectInterval i i' of
       -- @i < i'@: throw out @i@
-      Left Nothing -> intersect is (i' : is')
+      Left Nothing -> is `intersect` (i' : is')
       -- @i'' = i /\ i'@ and @i@ ends first: replace @i@ by @i''@.
       Left (Just i'') -> i'' : intersect is (i' : is')
       -- @i' < i@: throw out @i'@
-      Right Nothing -> intersect (i : is) is'
+      Right Nothing -> (i : is) `intersect` is'
       -- @i'' = i /\ i'@ and @i'@ ends first: replace @i'@ by @i''@.
       Right (Just i'') -> i'' : intersect (i : is) is'
 
diff --git a/src/Distribution/Types/VersionRange.hs b/src/Distribution/Types/VersionRange.hs
--- a/src/Distribution/Types/VersionRange.hs
+++ b/src/Distribution/Types/VersionRange.hs
@@ -96,12 +96,12 @@
 
     alg (ThisVersionF v) = this v
     alg (LaterVersionF v) = later v
-    alg (OrLaterVersionF v) = union (this v) (later v)
+    alg (OrLaterVersionF v) = this v `union` later v
     alg (EarlierVersionF v) = earlier v
-    alg (OrEarlierVersionF v) = union (this v) (earlier v)
+    alg (OrEarlierVersionF v) = this v `union` earlier v
     alg (MajorBoundVersionF v) = fold (majorBound v)
-    alg (UnionVersionRangesF v1 v2) = union v1 v2
-    alg (IntersectVersionRangesF v1 v2) = intersect v1 v2
+    alg (UnionVersionRangesF v1 v2) = v1 `union` v2
+    alg (IntersectVersionRangesF v1 v2) = v1 `intersect` v2
 
     majorBound v =
       intersectVersionRanges
@@ -183,7 +183,7 @@
 isWildcardRange :: Version -> Version -> Bool
 isWildcardRange ver1 ver2 = check (versionNumbers ver1) (versionNumbers ver2)
   where
-    check (n : []) (m : []) | n + 1 == m = True
+    check [n] [m] | n + 1 == m = True
     check (n : ns) (m : ms) | n == m = check ns ms
     check _ _ = False
 
diff --git a/src/Distribution/Types/VersionRange/Internal.hs b/src/Distribution/Types/VersionRange/Internal.hs
--- a/src/Distribution/Types/VersionRange/Internal.hs
+++ b/src/Distribution/Types/VersionRange/Internal.hs
@@ -2,6 +2,7 @@
 {-# LANGUAGE DeriveGeneric #-}
 {-# LANGUAGE DeriveTraversable #-}
 {-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE LambdaCase #-}
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE PatternSynonyms #-}
 {-# LANGUAGE ScopedTypeVariables #-}
@@ -36,6 +37,7 @@
   , wildcardUpperBound
   ) where
 
+import Data.Functor (($>))
 import Distribution.Compat.Prelude
 import Distribution.Types.Version
 import Prelude ()
@@ -62,7 +64,7 @@
 
 instance Binary VersionRange
 instance Structured VersionRange
-instance NFData VersionRange where rnf = genericRnf
+instance NFData VersionRange
 
 -- | The version range @-any@. That is, a version range containing all
 -- versions.
@@ -363,25 +365,23 @@
       P.spaces
       t <- term
       P.spaces
-      ( do
-          _ <- P.string "||"
-          checkOp
-          P.spaces
-          e <- expr
-          return (unionVersionRanges t e)
-          <|> return t
-        )
+      do
+        _ <- P.string "||"
+        checkOp
+        P.spaces
+        e <- expr
+        return (unionVersionRanges t e)
+        <|> return t
     term = do
       f <- factor
       P.spaces
-      ( do
-          _ <- P.string "&&"
-          checkOp
-          P.spaces
-          t <- term
-          return (intersectVersionRanges f t)
-          <|> return f
-        )
+      do
+        _ <- P.string "&&"
+        checkOp
+        P.spaces
+        t <- term
+        return (intersectVersionRanges f t)
+        <|> return f
     factor = parens expr <|> prim
 
     prim = do
@@ -390,22 +390,19 @@
         "-" -> anyVersion <$ P.string "any" <|> P.string "none" *> noVersion'
         "==" -> do
           P.spaces
-          ( do
-              (wild, v) <- verOrWild
-              checkWild wild
-              pure $ (if wild then withinVersion else thisVersion) v
-              <|> (verSet' thisVersion =<< verSet)
-            )
+          do
+            (wild, v) <- verOrWild
+            checkWild wild
+            pure $ (if wild then withinVersion else thisVersion) v
+            <|> (verSet' thisVersion =<< verSet)
         "^>=" -> do
           P.spaces
-          ( do
-              (wild, v) <- verOrWild
-              when wild $
-                P.unexpected $
-                  "wild-card version after ^>= operator"
-              majorBoundVersion' v
-              <|> (verSet' majorBoundVersion =<< verSet)
-            )
+          do
+            (wild, v) <- verOrWild
+            when wild $
+              P.unexpected "wild-card version after ^>= operator"
+            majorBoundVersion' v
+            <|> (verSet' majorBoundVersion =<< verSet)
         _ -> do
           P.spaces
           (wild, v) <- verOrWild
@@ -504,7 +501,7 @@
               , prettyShow (foldr1 unionVersionRanges (fmap op vs))
               ]
 
-    verSet :: CabalParsing m => m (NonEmpty Version)
+    verSet :: m (NonEmpty Version)
     verSet = do
       _ <- P.char '{'
       P.spaces
@@ -513,22 +510,22 @@
       pure vs
 
     -- a plain version without tags or wildcards
-    verPlain :: CabalParsing m => m Version
-    verPlain = mkVersion <$> toList <$> P.sepByNonEmpty digitParser (P.char '.')
+    verPlain :: m Version
+    verPlain = mkVersion . toList <$> P.sepByNonEmpty digitParser (P.char '.')
 
     -- either wildcard or normal version
-    verOrWild :: CabalParsing m => m (Bool, Version)
+    verOrWild :: m (Bool, Version)
     verOrWild = do
       x <- digitParser
       verLoop (DList.singleton x)
 
     -- trailing: wildcard (.y.*) or normal version (optional tags) (.y.z-tag)
-    verLoop :: CabalParsing m => DList.DList Int -> m (Bool, Version)
+    verLoop :: DList.DList Int -> m (Bool, Version)
     verLoop acc =
       verLoop' acc
-        <|> (tags *> pure (False, mkVersion (DList.toList acc)))
+        <|> (tags $> (False, mkVersion (DList.toList acc)))
 
-    verLoop' :: CabalParsing m => DList.DList Int -> m (Bool, Version)
+    verLoop' :: DList.DList Int -> m (Bool, Version)
     verLoop' acc = do
       _ <- P.char '.'
       let digit = digitParser >>= verLoop . DList.snoc acc
@@ -543,7 +540,7 @@
         P.spaces
         return a
 
-    tags :: CabalParsing m => m ()
+    tags :: m ()
     tags = do
       ts <- many $ P.char '-' *> some (P.satisfy isAlphaNum)
       case ts of
@@ -561,7 +558,7 @@
 --
 -- @since 2.2
 majorUpperBound :: Version -> Version
-majorUpperBound = alterVersion $ \numbers -> case numbers of
+majorUpperBound = alterVersion $ \case
   [] -> [0, 1] -- should not happen
   [m1] -> [m1, 1] -- e.g. version '1'
   (m1 : m2 : _) -> [m1, m2 + 1]
diff --git a/src/Distribution/Utils/Generic.hs b/src/Distribution/Utils/Generic.hs
--- a/src/Distribution/Utils/Generic.hs
+++ b/src/Distribution/Utils/Generic.hs
@@ -85,17 +85,23 @@
 import Distribution.Compat.Prelude
 import Prelude ()
 
-import Distribution.Utils.String
-
+import Control.Concurrent (threadDelay)
+import qualified Control.Exception as Exception
+import Control.Monad ((>=>))
 import Data.Bits (shiftL, (.&.), (.|.))
 import qualified Data.ByteString as SBS
 import qualified Data.ByteString.Lazy as LBS
+import Data.Char (isAsciiLower, isAsciiUpper)
 import Data.List
   ( isInfixOf
   )
 import qualified Data.Set as Set
-
-import qualified Control.Exception as Exception
+import qualified Data.Text as T
+import qualified Data.Text.Encoding as T
+import qualified Data.Text.Encoding.Error as T
+import qualified Data.Text.Lazy as TL
+import qualified Data.Text.Lazy.Encoding as TL
+import GHC.IO.Exception (IOErrorType (UnsupportedOperation))
 import System.Directory
   ( copyFile
   , getTemporaryDirectory
@@ -114,6 +120,7 @@
   , withBinaryFile
   , withFile
   )
+import System.IO.Error (ioeGetErrorType)
 
 -- -----------------------------------------------------------------------------
 -- Helper functions
@@ -155,11 +162,7 @@
 -- The file is read lazily; if it is not fully consumed by the action then an
 -- exception is thrown.
 withFileContents :: FilePath -> (String -> IO a) -> IO a
-withFileContents name action =
-  withFile
-    name
-    ReadMode
-    (\hnd -> hGetContents hnd >>= action)
+withFileContents name action = withFile name ReadMode (hGetContents >=> action)
 
 -- | Writes a file atomically.
 --
@@ -192,14 +195,37 @@
     ( \(tmpPath, handle) -> do
         LBS.hPut handle content
         hClose handle
-        Exception.catch
-          (renameFile tmpPath targetPath)
-          ( \(_ :: Exception.SomeException) -> do
-              copyFile tmpPath targetPath
-              removeFile tmpPath
-          )
+        renameFileWithRetry tmpPath targetPath
     )
 
+-- | A robust 'renameFile' which retries with delay and
+-- switches to 'copyFile' as a backup implementation.
+renameFileWithRetry :: FilePath -> FilePath -> IO ()
+renameFileWithRetry srcPath targetPath =
+  renameFile srcPath targetPath `Exception.catch` retryRename 3
+  where
+    retryRename :: Word -> IOException -> IO ()
+    -- If no retries left then throw whatever exception we ended up with.
+    retryRename 0 exception = throwIO exception
+    retryRename retriesLeft exception
+      -- UnsupportedOperation means EXDEV from rename(2) with source and target
+      -- on different devices. In such case we resort to copying instead of renaming.
+      | ioeGetErrorType exception == UnsupportedOperation =
+          copyFile srcPath targetPath `Exception.catch` retryCopy (retriesLeft - 1)
+      | otherwise = do
+          -- Wait 1ms between retries: maybe device is busy, maybe antivirus locked srcPath.
+          threadDelay 1000
+          renameFile srcPath targetPath `Exception.catch` retryRename (retriesLeft - 1)
+
+    retryCopy :: Word -> IOException -> IO ()
+    retryCopy 0 exception = throwIO exception
+    retryCopy retriesLeft _ = do
+      -- Wait 1ms between retries: maybe device is busy, maybe antivirus locked srcPath.
+      threadDelay 1000
+      copyFile srcPath targetPath `Exception.catch` retryCopy retriesLeft
+      -- It's nice to clean up, but not critical, so ignoring any exceptions.
+      removeFile srcPath `Exception.catch` (\(_ :: IOException) -> pure ())
+
 -- ------------------------------------------------------------
 
 -- * Unicode stuff
@@ -211,22 +237,22 @@
 -- Invalid data in the UTF8 stream (this includes code-points @U+D800@
 -- through @U+DFFF@) will be decoded as the replacement character (@U+FFFD@).
 fromUTF8BS :: SBS.ByteString -> String
-fromUTF8BS = decodeStringUtf8 . SBS.unpack
+fromUTF8BS = T.unpack . T.decodeUtf8With T.lenientDecode
 
 -- | Variant of 'fromUTF8BS' for lazy 'BS.ByteString's
 fromUTF8LBS :: LBS.ByteString -> String
-fromUTF8LBS = decodeStringUtf8 . LBS.unpack
+fromUTF8LBS = TL.unpack . TL.decodeUtf8With T.lenientDecode
 
 -- | Encode 'String' to UTF8-encoded 'SBS.ByteString'
 --
 -- Code-points in the @U+D800@-@U+DFFF@ range will be encoded
 -- as the replacement character (i.e. @U+FFFD@).
 toUTF8BS :: String -> SBS.ByteString
-toUTF8BS = SBS.pack . encodeStringUtf8
+toUTF8BS = T.encodeUtf8 . T.pack
 
 -- | Variant of 'toUTF8BS' for lazy 'BS.ByteString's
 toUTF8LBS :: String -> LBS.ByteString
-toUTF8LBS = LBS.pack . encodeStringUtf8
+toUTF8LBS = TL.encodeUtf8 . TL.pack
 
 -- | Check that strict 'ByteString' is valid UTF8. Returns 'Just offset' if it's not.
 validateUTF8 :: SBS.ByteString -> Maybe Int
@@ -278,7 +304,7 @@
 --
 -- Reads lazily using ordinary 'readFile'.
 readUTF8File :: FilePath -> IO String
-readUTF8File f = (ignoreBOM . fromUTF8LBS) <$> LBS.readFile f
+readUTF8File f = ignoreBOM . fromUTF8LBS <$> LBS.readFile f
 
 -- | Reads a UTF8 encoded text file as a Unicode String
 --
@@ -288,7 +314,7 @@
   withBinaryFile
     name
     ReadMode
-    (\hnd -> LBS.hGetContents hnd >>= action . ignoreBOM . fromUTF8LBS)
+    (LBS.hGetContents >=> action . ignoreBOM . fromUTF8LBS)
 
 -- | Writes a Unicode String as a UTF8 encoded text file.
 --
@@ -449,9 +475,7 @@
 
 -- | Ascii letters.
 isAsciiAlpha :: Char -> Bool
-isAsciiAlpha c =
-  ('a' <= c && c <= 'z')
-    || ('A' <= c && c <= 'Z')
+isAsciiAlpha c = isAsciiLower c || isAsciiUpper c
 
 -- | Ascii letters and digits.
 --
@@ -517,7 +541,7 @@
       m <- f b
       case m of
         Nothing -> return []
-        Just (a, b') -> liftM (a :) (go b')
+        Just (a, b') -> (a :) <$> go b'
 
 -- | The opposite of 'snoc', which is the reverse of 'cons'
 --
diff --git a/src/Distribution/Utils/MD5.hs b/src/Distribution/Utils/MD5.hs
--- a/src/Distribution/Utils/MD5.hs
+++ b/src/Distribution/Utils/MD5.hs
@@ -33,7 +33,7 @@
 -- >>> showMD5 $ md5 $ BS.pack [0..127]
 -- "37eff01866ba3f538421b30b7cbefcac"
 --
--- @since  3.2.0.0
+-- @since 3.2.0.0
 showMD5 :: MD5 -> String
 showMD5 (Fingerprint a b) = pad a' ++ pad b'
   where
@@ -41,18 +41,18 @@
     b' = showHex b ""
     pad s = replicate (16 - length s) '0' ++ s
 
--- | @since  3.2.0.0
+-- | @since 3.2.0.0
 md5 :: BS.ByteString -> MD5
 md5 bs = unsafeDupablePerformIO $ BS.unsafeUseAsCStringLen bs $ \(ptr, len) ->
   fingerprintData (castPtr ptr) len
 
--- | @since  3.2.0.0
+-- | @since 3.2.0.0
 binaryPutMD5 :: MD5 -> Put
 binaryPutMD5 (Fingerprint a b) = do
   putWord64le a
   putWord64le b
 
--- | @since  3.2.0.0
+-- | @since 3.2.0.0
 binaryGetMD5 :: Get MD5
 binaryGetMD5 = do
   a <- getWord64le
diff --git a/src/Distribution/Utils/Path.hs b/src/Distribution/Utils/Path.hs
--- a/src/Distribution/Utils/Path.hs
+++ b/src/Distribution/Utils/Path.hs
@@ -59,6 +59,7 @@
   , dropExtensionsSymbolicPath
   , replaceExtensionSymbolicPath
   , normaliseSymbolicPath
+  , relativePathMaybe
 
     -- ** Working directory handling
   , interpretSymbolicPathCWD
@@ -90,6 +91,9 @@
 import Data.Kind
   ( Type
   )
+import Data.List
+  ( stripPrefix
+  )
 import GHC.Stack
   ( HasCallStack
   )
@@ -227,7 +231,7 @@
 instance
   (Typeable allowAbsolute, Typeable from, Typeable to)
   => Structured (SymbolicPathX allowAbsolute from to)
-instance NFData (SymbolicPathX allowAbsolute from to) where rnf = genericRnf
+instance NFData (SymbolicPathX allowAbsolute from to)
 
 -- | Extract the 'FilePath' underlying a 'SymbolicPath' or 'RelativePath',
 -- without interpreting it.
@@ -337,6 +341,22 @@
 -- | Change what a symbolic path is pointing to.
 coerceSymbolicPath :: SymbolicPathX allowAbsolute from to1 -> SymbolicPathX allowAbsolute from to2
 coerceSymbolicPath = coerce
+
+-- | Does the second argument point to a sub-directory of the first one?
+-- If so, return the relative portion of the path, relative to the first argument.
+relativePathMaybe :: SymbolicPath from (Dir dir) -> SymbolicPath from to -> Maybe (RelativePath dir to)
+relativePathMaybe base fp =
+  let dirPieces =
+        FilePath.splitDirectories $
+          FilePath.dropTrailingPathSeparator $
+            FilePath.normalise $
+              getSymbolicPath base
+      pathPieces =
+        FilePath.splitDirectories $
+          FilePath.normalise $
+            getSymbolicPath fp
+   in unsafeMakeSymbolicPath . FilePath.joinPath
+        <$> stripPrefix dirPieces pathPieces
 
 -- | Change both what a symbolic path is pointing from and pointing to.
 --
diff --git a/src/Distribution/Utils/ShortText.hs b/src/Distribution/Utils/ShortText.hs
--- a/src/Distribution/Utils/ShortText.hs
+++ b/src/Distribution/Utils/ShortText.hs
@@ -1,8 +1,5 @@
-{-# LANGUAGE CPP #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric #-}
-
--- | Compact representation of short 'Strings'
+-- | This is a legacy compatibility layer,
+-- new developments can use "Data.Text" directly.
 --
 -- This module is designed to be import qualified
 --
@@ -20,141 +17,41 @@
     -- * Operations
   , null
   , length
-
-    -- * internal utilities
-  , decodeStringUtf8
-  , encodeStringUtf8
   ) where
 
 import Distribution.Compat.Prelude hiding (length, null)
 import Prelude ()
 
-import Distribution.Utils.String (decodeStringUtf8, encodeStringUtf8)
-import Distribution.Utils.Structured (Structured (..), nominalStructure)
-
-#if defined(MIN_VERSION_bytestring)
-# if MIN_VERSION_bytestring(0,10,4)
-# define HAVE_SHORTBYTESTRING 1
-# endif
-#endif
-
--- Hack for GHC bootstrapping
---
--- Currently (as of GHC 8.1), GHC bootstraps Cabal by building
--- binary and Cabal in one giant ghc --make command.  This
--- means no MIN_VERSION_binary macro is available.
---
--- We could try to cleverly figure something out in this case,
--- but there is a better plan: just use the unoptimized version
--- of the Binary instance.  We're not going to use it for anything
--- real in any case.
---
--- WARNING: Don't use MIN_VERSION_binary to smooth over a BC-break!
---
-#ifndef MIN_VERSION_binary
-#define MIN_VERSION_binary(x, y, z) 0
-#endif
-
 import qualified Data.ByteString as BS
-import qualified Data.List as List
-
-#if HAVE_SHORTBYTESTRING
-import qualified Data.ByteString.Short as BS.Short
-#else
-import Distribution.Utils.Generic (fromUTF8BS)
-#endif
+import qualified Data.Text as T
+import qualified Data.Text.Encoding as T
+import qualified Data.Text.Encoding.Error as T
 
 -- | Construct 'ShortText' from 'String'
 toShortText :: String -> ShortText
+toShortText = T.pack
 
 -- | Convert 'ShortText' to 'String'
 fromShortText :: ShortText -> String
+fromShortText = T.unpack
 
 -- | Convert from UTF-8 encoded strict 'ByteString'.
 --
 -- @since 3.2.0.0
 unsafeFromUTF8BS :: BS.ByteString -> ShortText
+unsafeFromUTF8BS = T.decodeUtf8With T.lenientDecode
 
 -- | Text whether 'ShortText' is empty.
 --
 -- @since 3.2.0.0
 null :: ShortText -> Bool
-
--- | Compact representation of short 'Strings'
---
--- The data is stored internally as UTF8 in an
--- 'BS.Short.ShortByteString' when compiled against @bytestring >=
--- 0.10.4@, and otherwise the fallback is to use plain old non-compat
--- '[Char]'.
---
--- Note: This type is for internal uses (such as e.g. 'PackageName')
--- and shall not be exposed in Cabal's API
---
--- @since 2.0.0.2
-#if HAVE_SHORTBYTESTRING
-newtype ShortText = ST { unST :: BS.Short.ShortByteString }
-                  deriving (Eq,Ord,Generic,Data)
-
-# if MIN_VERSION_binary(0,8,1)
-instance Binary ShortText where
-    put = put . unST
-    get = fmap ST get
-# else
-instance Binary ShortText where
-    put = put . BS.Short.fromShort . unST
-    get = fmap (ST . BS.Short.toShort) get
-# endif
-
-
-toShortText = ST . BS.Short.pack . encodeStringUtf8
-
-fromShortText = decodeStringUtf8 . BS.Short.unpack . unST
-
-unsafeFromUTF8BS = ST . BS.Short.toShort
-
-null = BS.Short.null . unST
-#else
-newtype ShortText = ST { unST :: String }
-                  deriving (Eq,Ord,Generic,Data)
-
-instance Binary ShortText where
-    put = put . encodeStringUtf8 . unST
-    get = fmap (ST . decodeStringUtf8) get
-
-toShortText = ST
-
-fromShortText = unST
-
-unsafeFromUTF8BS = ST . fromUTF8BS
-
-null = List.null . unST
-#endif
-
-instance Structured ShortText where structure = nominalStructure
-
-instance NFData ShortText where
-  rnf = rnf . unST
-
-instance Show ShortText where
-  show = show . fromShortText
-
-instance Read ShortText where
-  readsPrec p = map (first toShortText) . readsPrec p
-
-instance Semigroup ShortText where
-  ST a <> ST b = ST (mappend a b)
-
-instance Monoid ShortText where
-  mempty = ST mempty
-  mappend = (<>)
+null = T.null
 
-instance IsString ShortText where
-  fromString = toShortText
+-- | @since 2.0.0.2
+type ShortText = T.Text
 
--- | /O(n)/. Length in characters. /Slow/ as converts to string.
+-- | /O(n)/. Length in characters.
 --
 -- @since 3.2.0.0
 length :: ShortText -> Int
-length = List.length . fromShortText
-
--- Note: avoid using it, we use it @cabal check@ implementation, where it's ok.
+length = T.length
diff --git a/src/Distribution/Utils/String.hs b/src/Distribution/Utils/String.hs
--- a/src/Distribution/Utils/String.hs
+++ b/src/Distribution/Utils/String.hs
@@ -1,109 +1,9 @@
 module Distribution.Utils.String
-  ( -- * Encode to/from UTF8
-    decodeStringUtf8
-  , encodeStringUtf8
-  , trim
+  ( trim
   ) where
 
-import Data.Bits
-import Data.Char (chr, ord)
 import Data.List (dropWhileEnd)
-import Data.Word
 import GHC.Unicode (isSpace)
-
--- | Decode 'String' from UTF8-encoded octets.
---
--- Invalid data in the UTF8 stream (this includes code-points @U+D800@
--- through @U+DFFF@) will be decoded as the replacement character (@U+FFFD@).
---
--- See also 'encodeStringUtf8'
-decodeStringUtf8 :: [Word8] -> String
-decodeStringUtf8 = go
-  where
-    go :: [Word8] -> String
-    go [] = []
-    go (c : cs)
-      | c <= 0x7F = chr (fromIntegral c) : go cs
-      | c <= 0xBF = replacementChar : go cs
-      | c <= 0xDF = twoBytes c cs
-      | c <= 0xEF = moreBytes 3 0x800 cs (fromIntegral $ c .&. 0xF)
-      | c <= 0xF7 = moreBytes 4 0x10000 cs (fromIntegral $ c .&. 0x7)
-      | c <= 0xFB = moreBytes 5 0x200000 cs (fromIntegral $ c .&. 0x3)
-      | c <= 0xFD = moreBytes 6 0x4000000 cs (fromIntegral $ c .&. 0x1)
-      | otherwise = replacementChar : go cs
-
-    twoBytes :: Word8 -> [Word8] -> String
-    twoBytes c0 (c1 : cs')
-      | c1 .&. 0xC0 == 0x80 =
-          let d =
-                (fromIntegral (c0 .&. 0x1F) `shiftL` 6)
-                  .|. fromIntegral (c1 .&. 0x3F)
-           in if d >= 0x80
-                then chr d : go cs'
-                else replacementChar : go cs'
-    twoBytes _ cs' = replacementChar : go cs'
-
-    moreBytes :: Int -> Int -> [Word8] -> Int -> [Char]
-    moreBytes 1 overlong cs' acc
-      | overlong <= acc
-      , acc <= 0x10FFFF
-      , acc < 0xD800 || 0xDFFF < acc =
-          chr acc : go cs'
-      | otherwise =
-          replacementChar : go cs'
-    moreBytes byteCount overlong (cn : cs') acc
-      | cn .&. 0xC0 == 0x80 =
-          moreBytes
-            (byteCount - 1)
-            overlong
-            cs'
-            ((acc `shiftL` 6) .|. fromIntegral cn .&. 0x3F)
-    moreBytes _ _ cs' _ =
-      replacementChar : go cs'
-
-    replacementChar = '\xfffd'
-
--- | Encode 'String' to a list of UTF8-encoded octets
---
--- Code-points in the @U+D800@-@U+DFFF@ range will be encoded
--- as the replacement character (i.e. @U+FFFD@).
---
--- See also 'decodeUtf8'
-encodeStringUtf8 :: String -> [Word8]
-encodeStringUtf8 [] = []
-encodeStringUtf8 (c : cs)
-  | c <= '\x07F' =
-      w8
-        : encodeStringUtf8 cs
-  | c <= '\x7FF' =
-      (0xC0 .|. w8ShiftR 6)
-        : (0x80 .|. (w8 .&. 0x3F))
-        : encodeStringUtf8 cs
-  | c <= '\xD7FF' =
-      (0xE0 .|. w8ShiftR 12)
-        : (0x80 .|. (w8ShiftR 6 .&. 0x3F))
-        : (0x80 .|. (w8 .&. 0x3F))
-        : encodeStringUtf8 cs
-  | c <= '\xDFFF' =
-      0xEF
-        : 0xBF
-        : 0xBD -- U+FFFD
-        : encodeStringUtf8 cs
-  | c <= '\xFFFF' =
-      (0xE0 .|. w8ShiftR 12)
-        : (0x80 .|. (w8ShiftR 6 .&. 0x3F))
-        : (0x80 .|. (w8 .&. 0x3F))
-        : encodeStringUtf8 cs
-  | otherwise =
-      (0xf0 .|. w8ShiftR 18)
-        : (0x80 .|. (w8ShiftR 12 .&. 0x3F))
-        : (0x80 .|. (w8ShiftR 6 .&. 0x3F))
-        : (0x80 .|. (w8 .&. 0x3F))
-        : encodeStringUtf8 cs
-  where
-    w8 = fromIntegral (ord c) :: Word8
-    w8ShiftR :: Int -> Word8
-    w8ShiftR = fromIntegral . shiftR (ord c)
 
 -- @since 3.8.0.0
 trim :: String -> String
diff --git a/src/Distribution/Utils/Structured.hs b/src/Distribution/Utils/Structured.hs
--- a/src/Distribution/Utils/Structured.hs
+++ b/src/Distribution/Utils/Structured.hs
@@ -72,6 +72,7 @@
   , typeName
   ) where
 
+import Data.Functor ((<&>))
 import Data.Int (Int16, Int32, Int64, Int8)
 import Data.List.NonEmpty (NonEmpty)
 import Data.Proxy (Proxy (..))
@@ -85,12 +86,8 @@
 import GHC.Generics
 
 import qualified Data.ByteString as BS
+import qualified Data.ByteString.Builder as Builder
 import qualified Data.ByteString.Lazy as LBS
-#if MIN_VERSION_bytestring(0,10,4)
-import qualified Data.ByteString.Builder      as Builder
-#else
-import qualified Data.ByteString.Lazy.Builder as Builder
-#endif
 import qualified Data.IntMap as IM
 import qualified Data.IntSet as IS
 import qualified Data.Map as Map
@@ -110,7 +107,8 @@
 
 import Distribution.Utils.MD5
 
-import Data.Monoid (Last, mconcat)
+import qualified Data.Monoid as Monoid
+import qualified Data.Semigroup as Semigroup
 
 import qualified Data.Foldable
 import qualified Data.Semigroup
@@ -202,7 +200,7 @@
 
     part (cn, s) = do
       s' <- traverse go s
-      return $ Data.Monoid.mconcat [Builder.stringUtf8 cn, mconcat s']
+      return $ Monoid.mconcat [Builder.stringUtf8 cn, Monoid.mconcat s']
 
     insert :: TypeRep -> Map.Map String (NonEmpty TypeRep) -> Maybe (Map.Map String (NonEmpty TypeRep))
     insert tr m = case Map.lookup trShown m of
@@ -230,7 +228,7 @@
 -- @since 3.2.0.0
 class Typeable a => Structured a where
   structure :: Proxy a -> Structure
-  default structure :: (Generic a, GStructured (Rep a)) => Proxy a -> Structure
+  default structure :: GStructured (Rep a) => Proxy a -> Structure
   structure = genericStructure
 
   -- This member is hidden. It's there to precalc
@@ -274,7 +272,7 @@
 
 structuredDecodeOrFailIO :: (Binary.Binary a, Structured a) => LBS.ByteString -> IO (Either String a)
 structuredDecodeOrFailIO bs =
-  catch (evaluate (structuredDecode bs) >>= return . Right) handler
+  catch (evaluate (structuredDecode bs) <&> Right) handler
   where
     handler (ErrorCall str) = return $ Left str
 
@@ -335,7 +333,7 @@
 -------------------------------------------------------------------------------
 
 -- | Derive 'structure' generically.
-genericStructure :: forall a. (Typeable a, Generic a, GStructured (Rep a)) => Proxy a -> Structure
+genericStructure :: forall a. (Typeable a, GStructured (Rep a)) => Proxy a -> Structure
 genericStructure _ = gstructured (typeRep (Proxy :: Proxy a)) (Proxy :: Proxy (Rep a)) 0
 
 -- | Used to implement 'genericStructure'.
@@ -413,7 +411,8 @@
 instance Structured Double where structure = nominalStructure
 
 instance Structured a => Structured (Maybe a)
-instance Structured a => Structured (Last a)
+instance Structured a => Structured (Semigroup.Last a)
+instance Structured a => Structured (Monoid.Last a)
 instance (Structured a, Structured b) => Structured (Either a b)
 instance Structured a => Structured (Ratio a) where structure = containerStructure
 instance Structured a => Structured [a] where structure = containerStructure
diff --git a/src/Distribution/Version.hs b/src/Distribution/Version.hs
--- a/src/Distribution/Version.hs
+++ b/src/Distribution/Version.hs
@@ -67,11 +67,16 @@
   , majorUpperBound
 
     -- ** Modification
-  , removeUpperBound
-  , removeLowerBound
+    -- $modification
+
+    -- *** Preserving modification
   , transformCaret
+
+    -- *** Relaxing modification
   , transformCaretUpper
   , transformCaretLower
+  , removeUpperBound
+  , removeLowerBound
 
     -- * Version intervals view
   , asVersionIntervals
@@ -125,6 +130,13 @@
 -- Transformations
 -------------------------------------------------------------------------------
 
+-- $modification
+--
+-- Examples use the following function to map version ranges:
+--
+-- > mapVR :: (VersionRange -> VersionRange) -> [String] -> [String]
+-- > mapVR f xs = [pretty $ f v| Just v <- simpleParsec <$> xs]
+
 -- | Simplify a 'VersionRange' expression. For non-empty version ranges
 -- this produces a canonical form. Empty or inconsistent version ranges
 -- are left as-is because that provides more information.
@@ -151,18 +163,24 @@
     vi = toVersionIntervals vr
 
 -- | Given a version range, remove the highest upper bound. Example: @(>= 1 && <
--- 3) || (>= 4 && < 5)@ is converted to @(>= 1 && < 3) || (>= 4)@.
+-- 3) || (>= 4 && < 5)@ is converted to @(>= 1 && < 3) || (\>= 4)@.
 removeUpperBound :: VersionRange -> VersionRange
 removeUpperBound = fromVersionIntervals . relaxLastInterval . toVersionIntervals
 
 -- | Given a version range, remove the lowest lower bound.
--- Example: @(>= 1 && < 3) || (>= 4 && < 5)@ is converted to
--- @(>= 0 && < 3) || (>= 4 && < 5)@.
+-- Example: @(>= 1 && < 3) || (\>= 4 && < 5)@ is converted to
+-- @(>= 0 && < 3) || (\>= 4 && < 5)@.
 removeLowerBound :: VersionRange -> VersionRange
 removeLowerBound = fromVersionIntervals . relaxHeadInterval . toVersionIntervals
 
--- | Rewrite @^>= x.y.z@ into @>= x.y.z && < x.(y+1)@
+-- | Rewrite @^>= x.y.z@ into @>= x.y.z && < x.(y+1)@ with explicit lower bound
+-- and upper bound. It has the same effect as:
 --
+-- > \v -> transformCaretLower v `intersectVersionRanges` transformCaretUpper v
+--
+-- >>> mapVR transformCaret ["^>=1.2.3.4", "^>=1.2.3", "^>=1.2", "^>=1"]
+-- [>=1.2.3.4 && <1.3,>=1.2.3 && <1.3,>=1.2 && <1.3,>=1 && <1.1]
+--
 -- @since 3.6.0.0
 transformCaret :: VersionRange -> VersionRange
 transformCaret = hyloVersionRange embed projectVersionRange
@@ -170,8 +188,13 @@
     embed (MajorBoundVersionF v) = orLaterVersion v `intersectVersionRanges` earlierVersion (majorUpperBound v)
     embed vr = embedVersionRange vr
 
--- | Rewrite @^>= x.y.z@ into @>= x.y.z@
+-- | Rewrite @^>= x.y.z@ into explicit lower bound @>= x.y.z@, removing the
+-- upper bound. This function doesn't transform the lower bound. It changes the
+-- operator from @^>=@ to @>=@.
 --
+-- >>> mapVR transformCaretUpper ["^>=1.2.3.4", "^>=1.2.3", "^>=1.2", "^>=1"]
+-- [>=1.2.3.4,>=1.2.3,>=1.2,>=1]
+--
 -- @since 3.6.0.0
 transformCaretUpper :: VersionRange -> VersionRange
 transformCaretUpper = hyloVersionRange embed projectVersionRange
@@ -179,11 +202,25 @@
     embed (MajorBoundVersionF v) = orLaterVersion v
     embed vr = embedVersionRange vr
 
--- | Rewrite @^>= x.y.z@ into @<x.(y+1)@
+-- | Rewrite @^>= x.y.z@ into explicit upper bound @<x.(y+1)@, removing the
+-- lower bound.
 --
+-- >>> mapVR transformCaretLower ["^>=0.0.0.0", "^>=0.0.0", "^>=0.0", "^>=0"]
+-- [<0.1,<0.1,<0.1,<0.1]
+--
+-- >>> mapVR transformCaretLower ["^>=1.1.1.1", "^>=1.1.1", "^>=1.1", "^>=1"]
+-- [<1.2,<1.2,<1.2,<1.1]
+--
 -- @since 3.6.0.0
 transformCaretLower :: VersionRange -> VersionRange
 transformCaretLower = hyloVersionRange embed projectVersionRange
   where
     embed (MajorBoundVersionF v) = earlierVersion (majorUpperBound v)
     embed vr = embedVersionRange vr
+
+-- $setup
+-- >>> :set -XScopedTypeVariables
+-- >>> import Distribution.Parsec
+-- >>> import Distribution.Pretty
+-- >>>
+-- >>> mapVR f xs = [pretty $ f v| Just v <- simpleParsec <$> xs]
diff --git a/src/Language/Haskell/Extension.hs b/src/Language/Haskell/Extension.hs
--- a/src/Language/Haskell/Extension.hs
+++ b/src/Language/Haskell/Extension.hs
@@ -64,7 +64,7 @@
 instance Binary Language
 instance Structured Language
 
-instance NFData Language where rnf = genericRnf
+instance NFData Language
 
 -- | List of known (supported) languages for GHC, oldest first.
 knownLanguages :: [Language]
@@ -120,7 +120,7 @@
 instance Binary Extension
 instance Structured Extension
 
-instance NFData Extension where rnf = genericRnf
+instance NFData Extension
 
 -- | Known Haskell language extensions, including deprecated and undocumented
 -- ones.
@@ -556,12 +556,22 @@
   | -- | Allow use of or-pattern syntax, condensing multiple patterns
     -- into a single one.
     OrPatterns
+  | -- | Along with 'ImplicitStagePersistence', this gives fine-grained control
+    -- over which modules are needed at each stage of execution.
+    ExplicitLevelImports
+  | -- | Allow identifiers to be used at different levels than where they’re
+    -- defined, using path-based persistence.
+    ImplicitStagePersistence
+  | -- | Enable qualified string literals.
+    QualifiedStrings
+  | -- | Enable modifier syntax.
+    Modifiers
   deriving (Generic, Show, Read, Eq, Ord, Enum, Bounded, Data)
 
 instance Binary KnownExtension
 instance Structured KnownExtension
 
-instance NFData KnownExtension where rnf = genericRnf
+instance NFData KnownExtension
 
 -- | Extensions that have been deprecated, possibly paired with another
 -- extension that replaces it.
