packages feed

elmental 0.1.0.0 → 0.1.0.1

raw patch · 17 files changed

+5919/−1 lines, 17 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

Files

elmental.cabal view
@@ -2,7 +2,7 @@  maintainer:         Gaël Deest name:               elmental-version:            0.1.0.0+version:            0.1.0.1  license:            BSD-3-Clause synopsis: Generate Elm datatype definitions, encoders and decoders from Haskell datatypes.@@ -16,6 +16,9 @@ category:           Codegen  extra-doc-files: CHANGELOG.md+extra-source-files:+  test-output/codegen/golden/*.txt+  test-output/extraction/golden/*.txt source-repository head   type: git   location: https://github.com/gdeest/elmental.git
+ test-output/codegen/golden/SampleTypes.txt view
@@ -0,0 +1,1688 @@+################################################################################+Codegen.Either: +################################################################################+module Codegen.Either exposing (..)+++import Json.Encode+import Json.Encode exposing (Value)+import Json.Decode+import Json.Decode exposing (Decoder)+import Json.Decode.Extra exposing (andMap)+++type Either a0 a1+  = Left a0+  | Right a1++encodeEither : (e0 -> Value) -> (e1 -> Value) -> (Either e0 e1) -> Value+encodeEither e0 e1 v =+  case v of+    Left p0 -> Json.Encode.object+      [ ( "tag", Json.Encode.string "Left" )+      , ( "contents"+        , e0 p0+        )+      ]+    Right p0 -> Json.Encode.object+      [ ( "tag", Json.Encode.string "Right" )+      , ( "contents"+        , e1 p0+        )+      ]++decodeEither : Decoder a0 -> Decoder a1 -> Decoder (Either a0 a1)+decodeEither d0 d1 =+  let+    decide : String -> Decoder (Either a0 a1)+    decide tag =+      case tag of+        "Left" ->+          Json.Decode.field "contents" <| Json.Decode.map Left d0+        "Right" ->+          Json.Decode.field "contents" <| Json.Decode.map Right d1+        other ->+          Json.Decode.fail <| "(Either a0 a1) doesn't have constructor: " ++ other+  in+  Json.Decode.field "tag" Json.Decode.string+   |> Json.Decode.andThen decide+################################################################################++################################################################################+Codegen.Report: +################################################################################+module Codegen.Report exposing (..)++import Json.Decode+import Json.Encode+import Json.Encode.Extra+import Maybe+import Json.Encode+import Json.Encode exposing (Value)+import Json.Decode+import Json.Decode exposing (Decoder)+import Json.Decode.Extra exposing (andMap)+++type Form +  = Form+      { userName : (Maybe.Maybe String)+      , upload : (Maybe.Maybe FileUpload)+      }++type FileUpload +  = FileUpload+      { fileName : (Maybe.Maybe String)+      }++encodeForm : Form -> Value+encodeForm v =+  case v of+    Form r ->+      Json.Encode.object+        [ ("userName", (Json.Encode.Extra.maybe (Json.Encode.string)) r.userName)+        , ("upload", (Json.Encode.Extra.maybe (encodeFileUpload)) r.upload)+        ]++encodeFileUpload : FileUpload -> Value+encodeFileUpload v =+  case v of+    FileUpload r ->+      Json.Encode.object+        [ ("fileName", (Json.Encode.Extra.maybe (Json.Encode.string)) r.fileName)+        ]++decodeForm : Decoder Form+decodeForm  =+  let mkFunction =+        \userName upload ->+          { userName = userName+          , upload = upload+          }+      contentDecoder =+        Json.Decode.succeed mkFunction+          |> andMap (Json.Decode.field "userName" (Json.Decode.nullable Json.Decode.string))+          |> andMap (Json.Decode.field "upload" (Json.Decode.nullable decodeFileUpload))+  in Json.Decode.field "contents" (Json.Decode.map Form contentDecoder)++decodeFileUpload : Decoder FileUpload+decodeFileUpload  =+  let mkFunction =+        \fileName ->+          { fileName = fileName+          }+      contentDecoder =+        Json.Decode.succeed mkFunction+          |> andMap (Json.Decode.field "fileName" (Json.Decode.nullable Json.Decode.string))+  in Json.Decode.field "contents" (Json.Decode.map FileUpload contentDecoder)+################################################################################++################################################################################+Codegen.SampleTypes: +################################################################################+module Codegen.SampleTypes exposing (..)++import Codegen.Either+import Json.Decode+import Json.Encode+import Json.Encode.Extra+import Maybe+import Json.Encode+import Json.Encode exposing (Value)+import Json.Decode+import Json.Decode exposing (Decoder)+import Json.Decode.Extra exposing (andMap)+++type LargeRecord a0+  = LargeRecord+      { field0 : (LookMaNoPhantomParam a0)+      , field1 : (LookMaNoPhantomParam a0)+      , field2 : (LookMaNoPhantomParam a0)+      , field3 : (LookMaNoPhantomParam a0)+      , field4 : (LookMaNoPhantomParam a0)+      , field5 : (LookMaNoPhantomParam a0)+      , field6 : (LookMaNoPhantomParam a0)+      , field7 : (LookMaNoPhantomParam a0)+      , field8 : (LookMaNoPhantomParam a0)+      , field9 : (LookMaNoPhantomParam a0)+      , field10 : (LookMaNoPhantomParam a0)+      , field11 : (LookMaNoPhantomParam a0)+      , field12 : (LookMaNoPhantomParam a0)+      , field13 : (LookMaNoPhantomParam a0)+      , field14 : (LookMaNoPhantomParam a0)+      , field15 : (LookMaNoPhantomParam a0)+      , field16 : (LookMaNoPhantomParam a0)+      , field17 : (LookMaNoPhantomParam a0)+      , field18 : (LookMaNoPhantomParam a0)+      , field19 : (LookMaNoPhantomParam a0)+      , field20 : (LookMaNoPhantomParam a0)+      , field21 : (LookMaNoPhantomParam a0)+      , field22 : (LookMaNoPhantomParam a0)+      , field23 : (LookMaNoPhantomParam a0)+      , field24 : (LookMaNoPhantomParam a0)+      , field25 : (LookMaNoPhantomParam a0)+      , field26 : (LookMaNoPhantomParam a0)+      , field27 : (LookMaNoPhantomParam a0)+      , field28 : (LookMaNoPhantomParam a0)+      , field29 : (LookMaNoPhantomParam a0)+      , field30 : (LookMaNoPhantomParam a0)+      , field31 : (LookMaNoPhantomParam a0)+      , field32 : (LookMaNoPhantomParam a0)+      , field33 : (LookMaNoPhantomParam a0)+      , field34 : (LookMaNoPhantomParam a0)+      , field35 : (LookMaNoPhantomParam a0)+      , field36 : (LookMaNoPhantomParam a0)+      , field37 : (LookMaNoPhantomParam a0)+      , field38 : (LookMaNoPhantomParam a0)+      , field39 : (LookMaNoPhantomParam a0)+      , field40 : (LookMaNoPhantomParam a0)+      , field41 : (LookMaNoPhantomParam a0)+      , field42 : (LookMaNoPhantomParam a0)+      , field43 : (LookMaNoPhantomParam a0)+      , field44 : (LookMaNoPhantomParam a0)+      , field45 : (LookMaNoPhantomParam a0)+      , field46 : (LookMaNoPhantomParam a0)+      , field47 : (LookMaNoPhantomParam a0)+      , field48 : (LookMaNoPhantomParam a0)+      , field49 : (LookMaNoPhantomParam a0)+      , field50 : (LookMaNoPhantomParam a0)+      , field51 : (LookMaNoPhantomParam a0)+      , field52 : (LookMaNoPhantomParam a0)+      , field53 : (LookMaNoPhantomParam a0)+      , field54 : (LookMaNoPhantomParam a0)+      , field55 : (LookMaNoPhantomParam a0)+      , field56 : (LookMaNoPhantomParam a0)+      , field57 : (LookMaNoPhantomParam a0)+      , field58 : (LookMaNoPhantomParam a0)+      , field59 : (LookMaNoPhantomParam a0)+      , field60 : (LookMaNoPhantomParam a0)+      , field61 : (LookMaNoPhantomParam a0)+      , field62 : (LookMaNoPhantomParam a0)+      , field63 : (LookMaNoPhantomParam a0)+      , field64 : (LookMaNoPhantomParam a0)+      , field65 : (LookMaNoPhantomParam a0)+      , field66 : (LookMaNoPhantomParam a0)+      , field67 : (LookMaNoPhantomParam a0)+      , field68 : (LookMaNoPhantomParam a0)+      , field69 : (LookMaNoPhantomParam a0)+      , field70 : (LookMaNoPhantomParam a0)+      , field71 : (LookMaNoPhantomParam a0)+      , field72 : (LookMaNoPhantomParam a0)+      , field73 : (LookMaNoPhantomParam a0)+      , field74 : (LookMaNoPhantomParam a0)+      , field75 : (LookMaNoPhantomParam a0)+      , field76 : (LookMaNoPhantomParam a0)+      , field77 : (LookMaNoPhantomParam a0)+      , field78 : (LookMaNoPhantomParam a0)+      , field79 : (LookMaNoPhantomParam a0)+      , field80 : (LookMaNoPhantomParam a0)+      , field81 : (LookMaNoPhantomParam a0)+      , field82 : (LookMaNoPhantomParam a0)+      , field83 : (LookMaNoPhantomParam a0)+      , field84 : (LookMaNoPhantomParam a0)+      , field85 : (LookMaNoPhantomParam a0)+      , field86 : (LookMaNoPhantomParam a0)+      , field87 : (LookMaNoPhantomParam a0)+      , field88 : (LookMaNoPhantomParam a0)+      , field89 : (LookMaNoPhantomParam a0)+      , field90 : (LookMaNoPhantomParam a0)+      , field91 : (LookMaNoPhantomParam a0)+      , field92 : (LookMaNoPhantomParam a0)+      , field93 : (LookMaNoPhantomParam a0)+      , field94 : (LookMaNoPhantomParam a0)+      , field95 : (LookMaNoPhantomParam a0)+      , field96 : (LookMaNoPhantomParam a0)+      , field97 : (LookMaNoPhantomParam a0)+      , field98 : (LookMaNoPhantomParam a0)+      , field99 : (LookMaNoPhantomParam a0)+      }++type RecordWithMultipleConstructors +  = FirstRecordConstructor+      { foo : Bool+      }+  | SecondRecordConstructor+      { bar : (Maybe.Maybe Int)+      }++type LookMaNoPhantomParam a0+  = NatPhantomParameter (List a0)++type HKTWithUnspecializedParams a0 a1+  = HKTWithUnspecializedParams (Codegen.Either.Either Int (Codegen.Either.Either Int (Codegen.Either.Either Int a0))) a1++type HKTWithSpecializedKindStarParams +  = HKTWithSpecializedKindStarParams String (Maybe.Maybe Int)++type SimpleHKTMaybe +  = SimpleHKT (Maybe.Maybe String)++type PolymorphicRecursiveType a0+  = SPRTNil+  | SPRTCons a0 (PolymorphicRecursiveType a0)++type MonomorphicRecursiveType +  = SMRTNil+  | SMRTCons Int MonomorphicRecursiveType++type alias EmptyAlias =+  {}++type alias SimpleRecordAlias =+  { name : (PolymorphicRecursiveType SimpleType)+  , age : SimpleType+  }++type SimpleRecord +  = SimpleRecord+      { name : (PolymorphicRecursiveType SimpleType)+      , age : SimpleType+      }++type SimpleType +  = SimpleType Int++encodeLargeRecord : (e0 -> Value) -> (LargeRecord e0) -> Value+encodeLargeRecord e0 v =+  case v of+    LargeRecord r ->+      Json.Encode.object+        [ ("field0", (encodeNatPhantomParameter e0) r.field0)+        , ("field1", (encodeNatPhantomParameter e0) r.field1)+        , ("field2", (encodeNatPhantomParameter e0) r.field2)+        , ("field3", (encodeNatPhantomParameter e0) r.field3)+        , ("field4", (encodeNatPhantomParameter e0) r.field4)+        , ("field5", (encodeNatPhantomParameter e0) r.field5)+        , ("field6", (encodeNatPhantomParameter e0) r.field6)+        , ("field7", (encodeNatPhantomParameter e0) r.field7)+        , ("field8", (encodeNatPhantomParameter e0) r.field8)+        , ("field9", (encodeNatPhantomParameter e0) r.field9)+        , ("field10", (encodeNatPhantomParameter e0) r.field10)+        , ("field11", (encodeNatPhantomParameter e0) r.field11)+        , ("field12", (encodeNatPhantomParameter e0) r.field12)+        , ("field13", (encodeNatPhantomParameter e0) r.field13)+        , ("field14", (encodeNatPhantomParameter e0) r.field14)+        , ("field15", (encodeNatPhantomParameter e0) r.field15)+        , ("field16", (encodeNatPhantomParameter e0) r.field16)+        , ("field17", (encodeNatPhantomParameter e0) r.field17)+        , ("field18", (encodeNatPhantomParameter e0) r.field18)+        , ("field19", (encodeNatPhantomParameter e0) r.field19)+        , ("field20", (encodeNatPhantomParameter e0) r.field20)+        , ("field21", (encodeNatPhantomParameter e0) r.field21)+        , ("field22", (encodeNatPhantomParameter e0) r.field22)+        , ("field23", (encodeNatPhantomParameter e0) r.field23)+        , ("field24", (encodeNatPhantomParameter e0) r.field24)+        , ("field25", (encodeNatPhantomParameter e0) r.field25)+        , ("field26", (encodeNatPhantomParameter e0) r.field26)+        , ("field27", (encodeNatPhantomParameter e0) r.field27)+        , ("field28", (encodeNatPhantomParameter e0) r.field28)+        , ("field29", (encodeNatPhantomParameter e0) r.field29)+        , ("field30", (encodeNatPhantomParameter e0) r.field30)+        , ("field31", (encodeNatPhantomParameter e0) r.field31)+        , ("field32", (encodeNatPhantomParameter e0) r.field32)+        , ("field33", (encodeNatPhantomParameter e0) r.field33)+        , ("field34", (encodeNatPhantomParameter e0) r.field34)+        , ("field35", (encodeNatPhantomParameter e0) r.field35)+        , ("field36", (encodeNatPhantomParameter e0) r.field36)+        , ("field37", (encodeNatPhantomParameter e0) r.field37)+        , ("field38", (encodeNatPhantomParameter e0) r.field38)+        , ("field39", (encodeNatPhantomParameter e0) r.field39)+        , ("field40", (encodeNatPhantomParameter e0) r.field40)+        , ("field41", (encodeNatPhantomParameter e0) r.field41)+        , ("field42", (encodeNatPhantomParameter e0) r.field42)+        , ("field43", (encodeNatPhantomParameter e0) r.field43)+        , ("field44", (encodeNatPhantomParameter e0) r.field44)+        , ("field45", (encodeNatPhantomParameter e0) r.field45)+        , ("field46", (encodeNatPhantomParameter e0) r.field46)+        , ("field47", (encodeNatPhantomParameter e0) r.field47)+        , ("field48", (encodeNatPhantomParameter e0) r.field48)+        , ("field49", (encodeNatPhantomParameter e0) r.field49)+        , ("field50", (encodeNatPhantomParameter e0) r.field50)+        , ("field51", (encodeNatPhantomParameter e0) r.field51)+        , ("field52", (encodeNatPhantomParameter e0) r.field52)+        , ("field53", (encodeNatPhantomParameter e0) r.field53)+        , ("field54", (encodeNatPhantomParameter e0) r.field54)+        , ("field55", (encodeNatPhantomParameter e0) r.field55)+        , ("field56", (encodeNatPhantomParameter e0) r.field56)+        , ("field57", (encodeNatPhantomParameter e0) r.field57)+        , ("field58", (encodeNatPhantomParameter e0) r.field58)+        , ("field59", (encodeNatPhantomParameter e0) r.field59)+        , ("field60", (encodeNatPhantomParameter e0) r.field60)+        , ("field61", (encodeNatPhantomParameter e0) r.field61)+        , ("field62", (encodeNatPhantomParameter e0) r.field62)+        , ("field63", (encodeNatPhantomParameter e0) r.field63)+        , ("field64", (encodeNatPhantomParameter e0) r.field64)+        , ("field65", (encodeNatPhantomParameter e0) r.field65)+        , ("field66", (encodeNatPhantomParameter e0) r.field66)+        , ("field67", (encodeNatPhantomParameter e0) r.field67)+        , ("field68", (encodeNatPhantomParameter e0) r.field68)+        , ("field69", (encodeNatPhantomParameter e0) r.field69)+        , ("field70", (encodeNatPhantomParameter e0) r.field70)+        , ("field71", (encodeNatPhantomParameter e0) r.field71)+        , ("field72", (encodeNatPhantomParameter e0) r.field72)+        , ("field73", (encodeNatPhantomParameter e0) r.field73)+        , ("field74", (encodeNatPhantomParameter e0) r.field74)+        , ("field75", (encodeNatPhantomParameter e0) r.field75)+        , ("field76", (encodeNatPhantomParameter e0) r.field76)+        , ("field77", (encodeNatPhantomParameter e0) r.field77)+        , ("field78", (encodeNatPhantomParameter e0) r.field78)+        , ("field79", (encodeNatPhantomParameter e0) r.field79)+        , ("field80", (encodeNatPhantomParameter e0) r.field80)+        , ("field81", (encodeNatPhantomParameter e0) r.field81)+        , ("field82", (encodeNatPhantomParameter e0) r.field82)+        , ("field83", (encodeNatPhantomParameter e0) r.field83)+        , ("field84", (encodeNatPhantomParameter e0) r.field84)+        , ("field85", (encodeNatPhantomParameter e0) r.field85)+        , ("field86", (encodeNatPhantomParameter e0) r.field86)+        , ("field87", (encodeNatPhantomParameter e0) r.field87)+        , ("field88", (encodeNatPhantomParameter e0) r.field88)+        , ("field89", (encodeNatPhantomParameter e0) r.field89)+        , ("field90", (encodeNatPhantomParameter e0) r.field90)+        , ("field91", (encodeNatPhantomParameter e0) r.field91)+        , ("field92", (encodeNatPhantomParameter e0) r.field92)+        , ("field93", (encodeNatPhantomParameter e0) r.field93)+        , ("field94", (encodeNatPhantomParameter e0) r.field94)+        , ("field95", (encodeNatPhantomParameter e0) r.field95)+        , ("field96", (encodeNatPhantomParameter e0) r.field96)+        , ("field97", (encodeNatPhantomParameter e0) r.field97)+        , ("field98", (encodeNatPhantomParameter e0) r.field98)+        , ("field99", (encodeNatPhantomParameter e0) r.field99)+        ]++encodeRecordWithMultipleConstructors : RecordWithMultipleConstructors -> Value+encodeRecordWithMultipleConstructors v =+  case v of+    FirstRecordConstructor r -> Json.Encode.object+      [ ( "tag", Json.Encode.string "FirstRecordConstructor" )+      , ( "contents"+        , Json.Encode.object+          [ ("foo", (Json.Encode.bool) r.foo)+          ]+        )+      ]+    SecondRecordConstructor r -> Json.Encode.object+      [ ( "tag", Json.Encode.string "SecondRecordConstructor" )+      , ( "contents"+        , Json.Encode.object+          [ ("bar", (Json.Encode.Extra.maybe (Json.Encode.int)) r.bar)+          ]+        )+      ]++encodeNatPhantomParameter : (e0 -> Value) -> (LookMaNoPhantomParam e0) -> Value+encodeNatPhantomParameter e0 v =+  case v of+    NatPhantomParameter p0 ->+      (Json.Encode.list e0) p0++encodeHKTWithUnspecializedParams : (e0 -> Value) -> (e1 -> Value) -> (HKTWithUnspecializedParams e0 e1) -> Value+encodeHKTWithUnspecializedParams e0 e1 v =+  case v of+    HKTWithUnspecializedParams p0 p1 ->+      Json.Encode.list identity+        [ (Codegen.Either.encodeEither (Json.Encode.int) (Codegen.Either.encodeEither (Json.Encode.int) (Codegen.Either.encodeEither (Json.Encode.int) e0))) p0+        , e1 p1+        ]++encodeHKTWithSpecializedKindStarParams : HKTWithSpecializedKindStarParams -> Value+encodeHKTWithSpecializedKindStarParams v =+  case v of+    HKTWithSpecializedKindStarParams p0 p1 ->+      Json.Encode.list identity+        [ (Json.Encode.string) p0+        , (Json.Encode.Extra.maybe (Json.Encode.int)) p1+        ]++encodeSimpleHKT : SimpleHKTMaybe -> Value+encodeSimpleHKT v =+  case v of+    SimpleHKT p0 ->+      (Json.Encode.Extra.maybe (Json.Encode.string)) p0++encodePolymorphicRecursiveType : (e0 -> Value) -> (PolymorphicRecursiveType e0) -> Value+encodePolymorphicRecursiveType e0 v =+  case v of+    SPRTNil -> Json.Encode.object+      [ ( "tag", Json.Encode.string "SPRTNil" )]+    SPRTCons p0 p1 -> Json.Encode.object+      [ ( "tag", Json.Encode.string "SPRTCons" )+      , ( "contents"+        , Json.Encode.list identity+          [ e0 p0+          , (encodePolymorphicRecursiveType e0) p1+          ]+        )+      ]++encodeMonomorphicRecursiveType : MonomorphicRecursiveType -> Value+encodeMonomorphicRecursiveType v =+  case v of+    SMRTNil -> Json.Encode.object+      [ ( "tag", Json.Encode.string "SMRTNil" )]+    SMRTCons p0 p1 -> Json.Encode.object+      [ ( "tag", Json.Encode.string "SMRTCons" )+      , ( "contents"+        , Json.Encode.list identity+          [ (Json.Encode.int) p0+          , (encodeMonomorphicRecursiveType) p1+          ]+        )+      ]++encodeEmptyAlias : EmptyAlias -> Value+encodeEmptyAlias r =+  Json.Encode.list identity []++encodeSimpleRecordAlias : SimpleRecordAlias -> Value+encodeSimpleRecordAlias r =+  Json.Encode.object+    [ ("name", (encodePolymorphicRecursiveType (encodeSimpleType)) r.name)+    , ("age", (encodeSimpleType) r.age)+    ]++encodeSimpleRecord : SimpleRecord -> Value+encodeSimpleRecord v =+  case v of+    SimpleRecord r ->+      Json.Encode.object+        [ ("name", (encodePolymorphicRecursiveType (encodeSimpleType)) r.name)+        , ("age", (encodeSimpleType) r.age)+        ]++encodeSimpleType : SimpleType -> Value+encodeSimpleType v =+  case v of+    SimpleType p0 ->+      (Json.Encode.int) p0++decodeLargeRecord : Decoder a0 -> Decoder (LargeRecord a0)+decodeLargeRecord d0 =+  let mkFunction =+        \field0 field1 field2 field3 field4 field5 field6 field7 field8 field9 field10 field11 field12 field13 field14 field15 field16 field17 field18 field19 field20 field21 field22 field23 field24 field25 field26 field27 field28 field29 field30 field31 field32 field33 field34 field35 field36 field37 field38 field39 field40 field41 field42 field43 field44 field45 field46 field47 field48 field49 field50 field51 field52 field53 field54 field55 field56 field57 field58 field59 field60 field61 field62 field63 field64 field65 field66 field67 field68 field69 field70 field71 field72 field73 field74 field75 field76 field77 field78 field79 field80 field81 field82 field83 field84 field85 field86 field87 field88 field89 field90 field91 field92 field93 field94 field95 field96 field97 field98 field99 ->+          { field0 = field0+          , field1 = field1+          , field2 = field2+          , field3 = field3+          , field4 = field4+          , field5 = field5+          , field6 = field6+          , field7 = field7+          , field8 = field8+          , field9 = field9+          , field10 = field10+          , field11 = field11+          , field12 = field12+          , field13 = field13+          , field14 = field14+          , field15 = field15+          , field16 = field16+          , field17 = field17+          , field18 = field18+          , field19 = field19+          , field20 = field20+          , field21 = field21+          , field22 = field22+          , field23 = field23+          , field24 = field24+          , field25 = field25+          , field26 = field26+          , field27 = field27+          , field28 = field28+          , field29 = field29+          , field30 = field30+          , field31 = field31+          , field32 = field32+          , field33 = field33+          , field34 = field34+          , field35 = field35+          , field36 = field36+          , field37 = field37+          , field38 = field38+          , field39 = field39+          , field40 = field40+          , field41 = field41+          , field42 = field42+          , field43 = field43+          , field44 = field44+          , field45 = field45+          , field46 = field46+          , field47 = field47+          , field48 = field48+          , field49 = field49+          , field50 = field50+          , field51 = field51+          , field52 = field52+          , field53 = field53+          , field54 = field54+          , field55 = field55+          , field56 = field56+          , field57 = field57+          , field58 = field58+          , field59 = field59+          , field60 = field60+          , field61 = field61+          , field62 = field62+          , field63 = field63+          , field64 = field64+          , field65 = field65+          , field66 = field66+          , field67 = field67+          , field68 = field68+          , field69 = field69+          , field70 = field70+          , field71 = field71+          , field72 = field72+          , field73 = field73+          , field74 = field74+          , field75 = field75+          , field76 = field76+          , field77 = field77+          , field78 = field78+          , field79 = field79+          , field80 = field80+          , field81 = field81+          , field82 = field82+          , field83 = field83+          , field84 = field84+          , field85 = field85+          , field86 = field86+          , field87 = field87+          , field88 = field88+          , field89 = field89+          , field90 = field90+          , field91 = field91+          , field92 = field92+          , field93 = field93+          , field94 = field94+          , field95 = field95+          , field96 = field96+          , field97 = field97+          , field98 = field98+          , field99 = field99+          }+      contentDecoder =+        Json.Decode.succeed mkFunction+          |> andMap (Json.Decode.field "field0" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field1" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field2" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field3" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field4" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field5" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field6" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field7" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field8" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field9" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field10" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field11" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field12" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field13" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field14" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field15" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field16" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field17" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field18" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field19" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field20" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field21" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field22" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field23" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field24" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field25" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field26" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field27" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field28" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field29" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field30" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field31" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field32" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field33" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field34" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field35" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field36" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field37" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field38" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field39" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field40" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field41" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field42" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field43" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field44" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field45" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field46" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field47" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field48" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field49" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field50" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field51" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field52" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field53" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field54" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field55" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field56" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field57" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field58" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field59" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field60" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field61" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field62" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field63" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field64" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field65" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field66" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field67" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field68" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field69" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field70" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field71" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field72" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field73" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field74" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field75" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field76" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field77" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field78" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field79" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field80" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field81" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field82" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field83" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field84" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field85" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field86" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field87" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field88" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field89" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field90" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field91" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field92" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field93" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field94" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field95" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field96" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field97" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field98" (decodeNatPhantomParameter d0))+          |> andMap (Json.Decode.field "field99" (decodeNatPhantomParameter d0))+  in Json.Decode.field "contents" (Json.Decode.map LargeRecord contentDecoder)++decodeRecordWithMultipleConstructors : Decoder RecordWithMultipleConstructors+decodeRecordWithMultipleConstructors  =+  let+    decide : String -> Decoder RecordWithMultipleConstructors+    decide tag =+      case tag of+        "FirstRecordConstructor" ->+          let mkFunction =+                \foo ->+                  { foo = foo+                  }+              contentDecoder =+                Json.Decode.succeed mkFunction+                  |> andMap (Json.Decode.field "foo" Json.Decode.bool)+          in Json.Decode.field "contents" (Json.Decode.map FirstRecordConstructor contentDecoder)+        "SecondRecordConstructor" ->+          let mkFunction =+                \bar ->+                  { bar = bar+                  }+              contentDecoder =+                Json.Decode.succeed mkFunction+                  |> andMap (Json.Decode.field "bar" (Json.Decode.nullable Json.Decode.int))+          in Json.Decode.field "contents" (Json.Decode.map SecondRecordConstructor contentDecoder)+        other ->+          Json.Decode.fail <| "RecordWithMultipleConstructors doesn't have constructor: " ++ other+  in+  Json.Decode.field "tag" Json.Decode.string+   |> Json.Decode.andThen decide++decodeNatPhantomParameter : Decoder a0 -> Decoder (LookMaNoPhantomParam a0)+decodeNatPhantomParameter d0 =+  Json.Decode.field "contents" <| Json.Decode.map NatPhantomParameter (Json.Decode.list d0)++decodeHKTWithUnspecializedParams : Decoder a0 -> Decoder a1 -> Decoder (HKTWithUnspecializedParams a0 a1)+decodeHKTWithUnspecializedParams d0 d1 =+  let contentDecoder =+        Json.Decode.succeed HKTWithUnspecializedParams+          |> andMap (Json.Decode.index 0 (Codegen.Either.decodeEither Json.Decode.int (Codegen.Either.decodeEither Json.Decode.int (Codegen.Either.decodeEither Json.Decode.int d0))))+          |> andMap (Json.Decode.index 1 d1)+  in+  Json.Decode.field "contents" contentDecoder++decodeHKTWithSpecializedKindStarParams : Decoder HKTWithSpecializedKindStarParams+decodeHKTWithSpecializedKindStarParams  =+  let contentDecoder =+        Json.Decode.succeed HKTWithSpecializedKindStarParams+          |> andMap (Json.Decode.index 0 Json.Decode.string)+          |> andMap (Json.Decode.index 1 (Json.Decode.nullable Json.Decode.int))+  in+  Json.Decode.field "contents" contentDecoder++decodeSimpleHKT : Decoder SimpleHKTMaybe+decodeSimpleHKT  =+  Json.Decode.field "contents" <| Json.Decode.map SimpleHKT (Json.Decode.nullable Json.Decode.string)++decodePolymorphicRecursiveType : Decoder a0 -> Decoder (PolymorphicRecursiveType a0)+decodePolymorphicRecursiveType d0 =+  let+    decide : String -> Decoder (PolymorphicRecursiveType a0)+    decide tag =+      case tag of+        "SPRTNil" ->+          Json.Decode.succeed SPRTNil+        "SPRTCons" ->+          let contentDecoder =+                Json.Decode.succeed SPRTCons+                  |> andMap (Json.Decode.index 0 d0)+                  |> andMap (Json.Decode.index 1 (Json.Decode.lazy (\_ -> decodePolymorphicRecursiveType d0)))+          in+          Json.Decode.field "contents" contentDecoder+        other ->+          Json.Decode.fail <| "(PolymorphicRecursiveType a0) doesn't have constructor: " ++ other+  in+  Json.Decode.field "tag" Json.Decode.string+   |> Json.Decode.andThen decide++decodeMonomorphicRecursiveType : Decoder MonomorphicRecursiveType+decodeMonomorphicRecursiveType  =+  let+    decide : String -> Decoder MonomorphicRecursiveType+    decide tag =+      case tag of+        "SMRTNil" ->+          Json.Decode.succeed SMRTNil+        "SMRTCons" ->+          let contentDecoder =+                Json.Decode.succeed SMRTCons+                  |> andMap (Json.Decode.index 0 Json.Decode.int)+                  |> andMap (Json.Decode.index 1 (Json.Decode.lazy (\_ -> decodeMonomorphicRecursiveType )))+          in+          Json.Decode.field "contents" contentDecoder+        other ->+          Json.Decode.fail <| "MonomorphicRecursiveType doesn't have constructor: " ++ other+  in+  Json.Decode.field "tag" Json.Decode.string+   |> Json.Decode.andThen decide++decodeEmptyAlias : Decoder EmptyAlias+decodeEmptyAlias  =+  Json.Decode.succeed {}++decodeSimpleRecordAlias : Decoder SimpleRecordAlias+decodeSimpleRecordAlias  =+  let mkFunction =+        \name age ->+          { name = name+          , age = age+          }+      contentDecoder =+        Json.Decode.succeed mkFunction+          |> andMap (Json.Decode.field "name" (decodePolymorphicRecursiveType decodeSimpleType))+          |> andMap (Json.Decode.field "age" decodeSimpleType)+  in contentDecoder++decodeSimpleRecord : Decoder SimpleRecord+decodeSimpleRecord  =+  let mkFunction =+        \name age ->+          { name = name+          , age = age+          }+      contentDecoder =+        Json.Decode.succeed mkFunction+          |> andMap (Json.Decode.field "name" (decodePolymorphicRecursiveType decodeSimpleType))+          |> andMap (Json.Decode.field "age" decodeSimpleType)+  in Json.Decode.field "contents" (Json.Decode.map SimpleRecord contentDecoder)++decodeSimpleType : Decoder SimpleType+decodeSimpleType  =+  Json.Decode.field "contents" <| Json.Decode.map SimpleType Json.Decode.int+################################################################################++################################################################################+Codegen.Submission: +################################################################################+module Codegen.Submission exposing (..)++import Json.Decode+import Json.Encode+import Json.Encode.Extra+import Maybe+import Json.Encode+import Json.Encode exposing (Value)+import Json.Decode+import Json.Decode exposing (Decoder)+import Json.Decode.Extra exposing (andMap)+++type Form +  = Form+      { userName : String+      , upload : (Maybe.Maybe FileUpload)+      }++type FileUpload +  = FileUpload+      { fileName : String+      }++encodeForm : Form -> Value+encodeForm v =+  case v of+    Form r ->+      Json.Encode.object+        [ ("userName", (Json.Encode.string) r.userName)+        , ("upload", (Json.Encode.Extra.maybe (encodeFileUpload)) r.upload)+        ]++encodeFileUpload : FileUpload -> Value+encodeFileUpload v =+  case v of+    FileUpload r ->+      Json.Encode.object+        [ ("fileName", (Json.Encode.string) r.fileName)+        ]++decodeForm : Decoder Form+decodeForm  =+  let mkFunction =+        \userName upload ->+          { userName = userName+          , upload = upload+          }+      contentDecoder =+        Json.Decode.succeed mkFunction+          |> andMap (Json.Decode.field "userName" Json.Decode.string)+          |> andMap (Json.Decode.field "upload" (Json.Decode.nullable decodeFileUpload))+  in Json.Decode.field "contents" (Json.Decode.map Form contentDecoder)++decodeFileUpload : Decoder FileUpload+decodeFileUpload  =+  let mkFunction =+        \fileName ->+          { fileName = fileName+          }+      contentDecoder =+        Json.Decode.succeed mkFunction+          |> andMap (Json.Decode.field "fileName" Json.Decode.string)+  in Json.Decode.field "contents" (Json.Decode.map FileUpload contentDecoder)+################################################################################++################################################################################+Data.CountryCode: +################################################################################+module Data.CountryCode exposing (..)+++import Json.Encode+import Json.Encode exposing (Value)+import Json.Decode+import Json.Decode exposing (Decoder)+import Json.Decode.Extra exposing (andMap)+++type CountryCode +  = AD+  | AE+  | AF+  | AG+  | AI+  | AL+  | AM+  | AO+  | AQ+  | AR+  | AS+  | AT+  | AU+  | AW+  | AX+  | AZ+  | BA+  | BB+  | BD+  | BE+  | BF+  | BG+  | BH+  | BI+  | BJ+  | BL+  | BM+  | BN+  | BO+  | BQ+  | BR+  | BS+  | BT+  | BV+  | BW+  | BY+  | BZ+  | CA+  | CC+  | CD+  | CF+  | CG+  | CH+  | CI+  | CK+  | CL+  | CM+  | CN+  | CO+  | CR+  | CU+  | CV+  | CW+  | CX+  | CY+  | CZ+  | DE+  | DJ+  | DK+  | DM+  | DO+  | DZ+  | EC+  | EE+  | EG+  | EH+  | ER+  | ES+  | ET+  | FI+  | FJ+  | FK+  | FM+  | FO+  | FR+  | GA+  | GB+  | GD+  | GE+  | GF+  | GG+  | GH+  | GI+  | GL+  | GM+  | GN+  | GP+  | GQ+  | GR+  | GS+  | GT+  | GU+  | GW+  | GY+  | HK+  | HM+  | HN+  | HR+  | HT+  | HU+  | ID+  | IE+  | IL+  | IM+  | IN+  | IO+  | IQ+  | IR+  | IS+  | IT+  | JE+  | JM+  | JO+  | JP+  | KE+  | KG+  | KH+  | KI+  | KM+  | KN+  | KP+  | KR+  | KW+  | KY+  | KZ+  | LA+  | LB+  | LC+  | LI+  | LK+  | LR+  | LS+  | LT+  | LU+  | LV+  | LY+  | MA+  | MC+  | MD+  | ME+  | MF+  | MG+  | MH+  | MK+  | ML+  | MM+  | MN+  | MO+  | MP+  | MQ+  | MR+  | MS+  | MT+  | MU+  | MV+  | MW+  | MX+  | MY+  | MZ+  | NA+  | NC+  | NE+  | NF+  | NG+  | NI+  | NL+  | NO+  | NP+  | NR+  | NU+  | NZ+  | OM+  | PA+  | PE+  | PF+  | PG+  | PH+  | PK+  | PL+  | PM+  | PN+  | PR+  | PS+  | PT+  | PW+  | PY+  | QA+  | RE+  | RO+  | RS+  | RU+  | RW+  | SA+  | SB+  | SC+  | SD+  | SE+  | SG+  | SH+  | SI+  | SJ+  | SK+  | SL+  | SM+  | SN+  | SO+  | SR+  | SS+  | ST+  | SV+  | SX+  | SY+  | SZ+  | TC+  | TD+  | TF+  | TG+  | TH+  | TJ+  | TK+  | TL+  | TM+  | TN+  | TO+  | TR+  | TT+  | TV+  | TW+  | TZ+  | UA+  | UG+  | UM+  | US+  | UY+  | UZ+  | VA+  | VC+  | VE+  | VG+  | VI+  | VN+  | VU+  | WF+  | WS+  | YE+  | YT+  | ZA+  | ZM+  | ZW++encodeCountryCode : CountryCode -> Value+encodeCountryCode v =+  case v of+    AD -> Json.Encode.string "AD"+    AE -> Json.Encode.string "AE"+    AF -> Json.Encode.string "AF"+    AG -> Json.Encode.string "AG"+    AI -> Json.Encode.string "AI"+    AL -> Json.Encode.string "AL"+    AM -> Json.Encode.string "AM"+    AO -> Json.Encode.string "AO"+    AQ -> Json.Encode.string "AQ"+    AR -> Json.Encode.string "AR"+    AS -> Json.Encode.string "AS"+    AT -> Json.Encode.string "AT"+    AU -> Json.Encode.string "AU"+    AW -> Json.Encode.string "AW"+    AX -> Json.Encode.string "AX"+    AZ -> Json.Encode.string "AZ"+    BA -> Json.Encode.string "BA"+    BB -> Json.Encode.string "BB"+    BD -> Json.Encode.string "BD"+    BE -> Json.Encode.string "BE"+    BF -> Json.Encode.string "BF"+    BG -> Json.Encode.string "BG"+    BH -> Json.Encode.string "BH"+    BI -> Json.Encode.string "BI"+    BJ -> Json.Encode.string "BJ"+    BL -> Json.Encode.string "BL"+    BM -> Json.Encode.string "BM"+    BN -> Json.Encode.string "BN"+    BO -> Json.Encode.string "BO"+    BQ -> Json.Encode.string "BQ"+    BR -> Json.Encode.string "BR"+    BS -> Json.Encode.string "BS"+    BT -> Json.Encode.string "BT"+    BV -> Json.Encode.string "BV"+    BW -> Json.Encode.string "BW"+    BY -> Json.Encode.string "BY"+    BZ -> Json.Encode.string "BZ"+    CA -> Json.Encode.string "CA"+    CC -> Json.Encode.string "CC"+    CD -> Json.Encode.string "CD"+    CF -> Json.Encode.string "CF"+    CG -> Json.Encode.string "CG"+    CH -> Json.Encode.string "CH"+    CI -> Json.Encode.string "CI"+    CK -> Json.Encode.string "CK"+    CL -> Json.Encode.string "CL"+    CM -> Json.Encode.string "CM"+    CN -> Json.Encode.string "CN"+    CO -> Json.Encode.string "CO"+    CR -> Json.Encode.string "CR"+    CU -> Json.Encode.string "CU"+    CV -> Json.Encode.string "CV"+    CW -> Json.Encode.string "CW"+    CX -> Json.Encode.string "CX"+    CY -> Json.Encode.string "CY"+    CZ -> Json.Encode.string "CZ"+    DE -> Json.Encode.string "DE"+    DJ -> Json.Encode.string "DJ"+    DK -> Json.Encode.string "DK"+    DM -> Json.Encode.string "DM"+    DO -> Json.Encode.string "DO"+    DZ -> Json.Encode.string "DZ"+    EC -> Json.Encode.string "EC"+    EE -> Json.Encode.string "EE"+    EG -> Json.Encode.string "EG"+    EH -> Json.Encode.string "EH"+    ER -> Json.Encode.string "ER"+    ES -> Json.Encode.string "ES"+    ET -> Json.Encode.string "ET"+    FI -> Json.Encode.string "FI"+    FJ -> Json.Encode.string "FJ"+    FK -> Json.Encode.string "FK"+    FM -> Json.Encode.string "FM"+    FO -> Json.Encode.string "FO"+    FR -> Json.Encode.string "FR"+    GA -> Json.Encode.string "GA"+    GB -> Json.Encode.string "GB"+    GD -> Json.Encode.string "GD"+    GE -> Json.Encode.string "GE"+    GF -> Json.Encode.string "GF"+    GG -> Json.Encode.string "GG"+    GH -> Json.Encode.string "GH"+    GI -> Json.Encode.string "GI"+    GL -> Json.Encode.string "GL"+    GM -> Json.Encode.string "GM"+    GN -> Json.Encode.string "GN"+    GP -> Json.Encode.string "GP"+    GQ -> Json.Encode.string "GQ"+    GR -> Json.Encode.string "GR"+    GS -> Json.Encode.string "GS"+    GT -> Json.Encode.string "GT"+    GU -> Json.Encode.string "GU"+    GW -> Json.Encode.string "GW"+    GY -> Json.Encode.string "GY"+    HK -> Json.Encode.string "HK"+    HM -> Json.Encode.string "HM"+    HN -> Json.Encode.string "HN"+    HR -> Json.Encode.string "HR"+    HT -> Json.Encode.string "HT"+    HU -> Json.Encode.string "HU"+    ID -> Json.Encode.string "ID"+    IE -> Json.Encode.string "IE"+    IL -> Json.Encode.string "IL"+    IM -> Json.Encode.string "IM"+    IN -> Json.Encode.string "IN"+    IO -> Json.Encode.string "IO"+    IQ -> Json.Encode.string "IQ"+    IR -> Json.Encode.string "IR"+    IS -> Json.Encode.string "IS"+    IT -> Json.Encode.string "IT"+    JE -> Json.Encode.string "JE"+    JM -> Json.Encode.string "JM"+    JO -> Json.Encode.string "JO"+    JP -> Json.Encode.string "JP"+    KE -> Json.Encode.string "KE"+    KG -> Json.Encode.string "KG"+    KH -> Json.Encode.string "KH"+    KI -> Json.Encode.string "KI"+    KM -> Json.Encode.string "KM"+    KN -> Json.Encode.string "KN"+    KP -> Json.Encode.string "KP"+    KR -> Json.Encode.string "KR"+    KW -> Json.Encode.string "KW"+    KY -> Json.Encode.string "KY"+    KZ -> Json.Encode.string "KZ"+    LA -> Json.Encode.string "LA"+    LB -> Json.Encode.string "LB"+    LC -> Json.Encode.string "LC"+    LI -> Json.Encode.string "LI"+    LK -> Json.Encode.string "LK"+    LR -> Json.Encode.string "LR"+    LS -> Json.Encode.string "LS"+    LT -> Json.Encode.string "LT"+    LU -> Json.Encode.string "LU"+    LV -> Json.Encode.string "LV"+    LY -> Json.Encode.string "LY"+    MA -> Json.Encode.string "MA"+    MC -> Json.Encode.string "MC"+    MD -> Json.Encode.string "MD"+    ME -> Json.Encode.string "ME"+    MF -> Json.Encode.string "MF"+    MG -> Json.Encode.string "MG"+    MH -> Json.Encode.string "MH"+    MK -> Json.Encode.string "MK"+    ML -> Json.Encode.string "ML"+    MM -> Json.Encode.string "MM"+    MN -> Json.Encode.string "MN"+    MO -> Json.Encode.string "MO"+    MP -> Json.Encode.string "MP"+    MQ -> Json.Encode.string "MQ"+    MR -> Json.Encode.string "MR"+    MS -> Json.Encode.string "MS"+    MT -> Json.Encode.string "MT"+    MU -> Json.Encode.string "MU"+    MV -> Json.Encode.string "MV"+    MW -> Json.Encode.string "MW"+    MX -> Json.Encode.string "MX"+    MY -> Json.Encode.string "MY"+    MZ -> Json.Encode.string "MZ"+    NA -> Json.Encode.string "NA"+    NC -> Json.Encode.string "NC"+    NE -> Json.Encode.string "NE"+    NF -> Json.Encode.string "NF"+    NG -> Json.Encode.string "NG"+    NI -> Json.Encode.string "NI"+    NL -> Json.Encode.string "NL"+    NO -> Json.Encode.string "NO"+    NP -> Json.Encode.string "NP"+    NR -> Json.Encode.string "NR"+    NU -> Json.Encode.string "NU"+    NZ -> Json.Encode.string "NZ"+    OM -> Json.Encode.string "OM"+    PA -> Json.Encode.string "PA"+    PE -> Json.Encode.string "PE"+    PF -> Json.Encode.string "PF"+    PG -> Json.Encode.string "PG"+    PH -> Json.Encode.string "PH"+    PK -> Json.Encode.string "PK"+    PL -> Json.Encode.string "PL"+    PM -> Json.Encode.string "PM"+    PN -> Json.Encode.string "PN"+    PR -> Json.Encode.string "PR"+    PS -> Json.Encode.string "PS"+    PT -> Json.Encode.string "PT"+    PW -> Json.Encode.string "PW"+    PY -> Json.Encode.string "PY"+    QA -> Json.Encode.string "QA"+    RE -> Json.Encode.string "RE"+    RO -> Json.Encode.string "RO"+    RS -> Json.Encode.string "RS"+    RU -> Json.Encode.string "RU"+    RW -> Json.Encode.string "RW"+    SA -> Json.Encode.string "SA"+    SB -> Json.Encode.string "SB"+    SC -> Json.Encode.string "SC"+    SD -> Json.Encode.string "SD"+    SE -> Json.Encode.string "SE"+    SG -> Json.Encode.string "SG"+    SH -> Json.Encode.string "SH"+    SI -> Json.Encode.string "SI"+    SJ -> Json.Encode.string "SJ"+    SK -> Json.Encode.string "SK"+    SL -> Json.Encode.string "SL"+    SM -> Json.Encode.string "SM"+    SN -> Json.Encode.string "SN"+    SO -> Json.Encode.string "SO"+    SR -> Json.Encode.string "SR"+    SS -> Json.Encode.string "SS"+    ST -> Json.Encode.string "ST"+    SV -> Json.Encode.string "SV"+    SX -> Json.Encode.string "SX"+    SY -> Json.Encode.string "SY"+    SZ -> Json.Encode.string "SZ"+    TC -> Json.Encode.string "TC"+    TD -> Json.Encode.string "TD"+    TF -> Json.Encode.string "TF"+    TG -> Json.Encode.string "TG"+    TH -> Json.Encode.string "TH"+    TJ -> Json.Encode.string "TJ"+    TK -> Json.Encode.string "TK"+    TL -> Json.Encode.string "TL"+    TM -> Json.Encode.string "TM"+    TN -> Json.Encode.string "TN"+    TO -> Json.Encode.string "TO"+    TR -> Json.Encode.string "TR"+    TT -> Json.Encode.string "TT"+    TV -> Json.Encode.string "TV"+    TW -> Json.Encode.string "TW"+    TZ -> Json.Encode.string "TZ"+    UA -> Json.Encode.string "UA"+    UG -> Json.Encode.string "UG"+    UM -> Json.Encode.string "UM"+    US -> Json.Encode.string "US"+    UY -> Json.Encode.string "UY"+    UZ -> Json.Encode.string "UZ"+    VA -> Json.Encode.string "VA"+    VC -> Json.Encode.string "VC"+    VE -> Json.Encode.string "VE"+    VG -> Json.Encode.string "VG"+    VI -> Json.Encode.string "VI"+    VN -> Json.Encode.string "VN"+    VU -> Json.Encode.string "VU"+    WF -> Json.Encode.string "WF"+    WS -> Json.Encode.string "WS"+    YE -> Json.Encode.string "YE"+    YT -> Json.Encode.string "YT"+    ZA -> Json.Encode.string "ZA"+    ZM -> Json.Encode.string "ZM"+    ZW -> Json.Encode.string "ZW"++decodeCountryCode : Decoder CountryCode+decodeCountryCode  =+  let+    decide : String -> Decoder CountryCode+    decide tag =+      case tag of+        "AD" -> Json.Decode.succeed AD+        "AE" -> Json.Decode.succeed AE+        "AF" -> Json.Decode.succeed AF+        "AG" -> Json.Decode.succeed AG+        "AI" -> Json.Decode.succeed AI+        "AL" -> Json.Decode.succeed AL+        "AM" -> Json.Decode.succeed AM+        "AO" -> Json.Decode.succeed AO+        "AQ" -> Json.Decode.succeed AQ+        "AR" -> Json.Decode.succeed AR+        "AS" -> Json.Decode.succeed AS+        "AT" -> Json.Decode.succeed AT+        "AU" -> Json.Decode.succeed AU+        "AW" -> Json.Decode.succeed AW+        "AX" -> Json.Decode.succeed AX+        "AZ" -> Json.Decode.succeed AZ+        "BA" -> Json.Decode.succeed BA+        "BB" -> Json.Decode.succeed BB+        "BD" -> Json.Decode.succeed BD+        "BE" -> Json.Decode.succeed BE+        "BF" -> Json.Decode.succeed BF+        "BG" -> Json.Decode.succeed BG+        "BH" -> Json.Decode.succeed BH+        "BI" -> Json.Decode.succeed BI+        "BJ" -> Json.Decode.succeed BJ+        "BL" -> Json.Decode.succeed BL+        "BM" -> Json.Decode.succeed BM+        "BN" -> Json.Decode.succeed BN+        "BO" -> Json.Decode.succeed BO+        "BQ" -> Json.Decode.succeed BQ+        "BR" -> Json.Decode.succeed BR+        "BS" -> Json.Decode.succeed BS+        "BT" -> Json.Decode.succeed BT+        "BV" -> Json.Decode.succeed BV+        "BW" -> Json.Decode.succeed BW+        "BY" -> Json.Decode.succeed BY+        "BZ" -> Json.Decode.succeed BZ+        "CA" -> Json.Decode.succeed CA+        "CC" -> Json.Decode.succeed CC+        "CD" -> Json.Decode.succeed CD+        "CF" -> Json.Decode.succeed CF+        "CG" -> Json.Decode.succeed CG+        "CH" -> Json.Decode.succeed CH+        "CI" -> Json.Decode.succeed CI+        "CK" -> Json.Decode.succeed CK+        "CL" -> Json.Decode.succeed CL+        "CM" -> Json.Decode.succeed CM+        "CN" -> Json.Decode.succeed CN+        "CO" -> Json.Decode.succeed CO+        "CR" -> Json.Decode.succeed CR+        "CU" -> Json.Decode.succeed CU+        "CV" -> Json.Decode.succeed CV+        "CW" -> Json.Decode.succeed CW+        "CX" -> Json.Decode.succeed CX+        "CY" -> Json.Decode.succeed CY+        "CZ" -> Json.Decode.succeed CZ+        "DE" -> Json.Decode.succeed DE+        "DJ" -> Json.Decode.succeed DJ+        "DK" -> Json.Decode.succeed DK+        "DM" -> Json.Decode.succeed DM+        "DO" -> Json.Decode.succeed DO+        "DZ" -> Json.Decode.succeed DZ+        "EC" -> Json.Decode.succeed EC+        "EE" -> Json.Decode.succeed EE+        "EG" -> Json.Decode.succeed EG+        "EH" -> Json.Decode.succeed EH+        "ER" -> Json.Decode.succeed ER+        "ES" -> Json.Decode.succeed ES+        "ET" -> Json.Decode.succeed ET+        "FI" -> Json.Decode.succeed FI+        "FJ" -> Json.Decode.succeed FJ+        "FK" -> Json.Decode.succeed FK+        "FM" -> Json.Decode.succeed FM+        "FO" -> Json.Decode.succeed FO+        "FR" -> Json.Decode.succeed FR+        "GA" -> Json.Decode.succeed GA+        "GB" -> Json.Decode.succeed GB+        "GD" -> Json.Decode.succeed GD+        "GE" -> Json.Decode.succeed GE+        "GF" -> Json.Decode.succeed GF+        "GG" -> Json.Decode.succeed GG+        "GH" -> Json.Decode.succeed GH+        "GI" -> Json.Decode.succeed GI+        "GL" -> Json.Decode.succeed GL+        "GM" -> Json.Decode.succeed GM+        "GN" -> Json.Decode.succeed GN+        "GP" -> Json.Decode.succeed GP+        "GQ" -> Json.Decode.succeed GQ+        "GR" -> Json.Decode.succeed GR+        "GS" -> Json.Decode.succeed GS+        "GT" -> Json.Decode.succeed GT+        "GU" -> Json.Decode.succeed GU+        "GW" -> Json.Decode.succeed GW+        "GY" -> Json.Decode.succeed GY+        "HK" -> Json.Decode.succeed HK+        "HM" -> Json.Decode.succeed HM+        "HN" -> Json.Decode.succeed HN+        "HR" -> Json.Decode.succeed HR+        "HT" -> Json.Decode.succeed HT+        "HU" -> Json.Decode.succeed HU+        "ID" -> Json.Decode.succeed ID+        "IE" -> Json.Decode.succeed IE+        "IL" -> Json.Decode.succeed IL+        "IM" -> Json.Decode.succeed IM+        "IN" -> Json.Decode.succeed IN+        "IO" -> Json.Decode.succeed IO+        "IQ" -> Json.Decode.succeed IQ+        "IR" -> Json.Decode.succeed IR+        "IS" -> Json.Decode.succeed IS+        "IT" -> Json.Decode.succeed IT+        "JE" -> Json.Decode.succeed JE+        "JM" -> Json.Decode.succeed JM+        "JO" -> Json.Decode.succeed JO+        "JP" -> Json.Decode.succeed JP+        "KE" -> Json.Decode.succeed KE+        "KG" -> Json.Decode.succeed KG+        "KH" -> Json.Decode.succeed KH+        "KI" -> Json.Decode.succeed KI+        "KM" -> Json.Decode.succeed KM+        "KN" -> Json.Decode.succeed KN+        "KP" -> Json.Decode.succeed KP+        "KR" -> Json.Decode.succeed KR+        "KW" -> Json.Decode.succeed KW+        "KY" -> Json.Decode.succeed KY+        "KZ" -> Json.Decode.succeed KZ+        "LA" -> Json.Decode.succeed LA+        "LB" -> Json.Decode.succeed LB+        "LC" -> Json.Decode.succeed LC+        "LI" -> Json.Decode.succeed LI+        "LK" -> Json.Decode.succeed LK+        "LR" -> Json.Decode.succeed LR+        "LS" -> Json.Decode.succeed LS+        "LT" -> Json.Decode.succeed LT+        "LU" -> Json.Decode.succeed LU+        "LV" -> Json.Decode.succeed LV+        "LY" -> Json.Decode.succeed LY+        "MA" -> Json.Decode.succeed MA+        "MC" -> Json.Decode.succeed MC+        "MD" -> Json.Decode.succeed MD+        "ME" -> Json.Decode.succeed ME+        "MF" -> Json.Decode.succeed MF+        "MG" -> Json.Decode.succeed MG+        "MH" -> Json.Decode.succeed MH+        "MK" -> Json.Decode.succeed MK+        "ML" -> Json.Decode.succeed ML+        "MM" -> Json.Decode.succeed MM+        "MN" -> Json.Decode.succeed MN+        "MO" -> Json.Decode.succeed MO+        "MP" -> Json.Decode.succeed MP+        "MQ" -> Json.Decode.succeed MQ+        "MR" -> Json.Decode.succeed MR+        "MS" -> Json.Decode.succeed MS+        "MT" -> Json.Decode.succeed MT+        "MU" -> Json.Decode.succeed MU+        "MV" -> Json.Decode.succeed MV+        "MW" -> Json.Decode.succeed MW+        "MX" -> Json.Decode.succeed MX+        "MY" -> Json.Decode.succeed MY+        "MZ" -> Json.Decode.succeed MZ+        "NA" -> Json.Decode.succeed NA+        "NC" -> Json.Decode.succeed NC+        "NE" -> Json.Decode.succeed NE+        "NF" -> Json.Decode.succeed NF+        "NG" -> Json.Decode.succeed NG+        "NI" -> Json.Decode.succeed NI+        "NL" -> Json.Decode.succeed NL+        "NO" -> Json.Decode.succeed NO+        "NP" -> Json.Decode.succeed NP+        "NR" -> Json.Decode.succeed NR+        "NU" -> Json.Decode.succeed NU+        "NZ" -> Json.Decode.succeed NZ+        "OM" -> Json.Decode.succeed OM+        "PA" -> Json.Decode.succeed PA+        "PE" -> Json.Decode.succeed PE+        "PF" -> Json.Decode.succeed PF+        "PG" -> Json.Decode.succeed PG+        "PH" -> Json.Decode.succeed PH+        "PK" -> Json.Decode.succeed PK+        "PL" -> Json.Decode.succeed PL+        "PM" -> Json.Decode.succeed PM+        "PN" -> Json.Decode.succeed PN+        "PR" -> Json.Decode.succeed PR+        "PS" -> Json.Decode.succeed PS+        "PT" -> Json.Decode.succeed PT+        "PW" -> Json.Decode.succeed PW+        "PY" -> Json.Decode.succeed PY+        "QA" -> Json.Decode.succeed QA+        "RE" -> Json.Decode.succeed RE+        "RO" -> Json.Decode.succeed RO+        "RS" -> Json.Decode.succeed RS+        "RU" -> Json.Decode.succeed RU+        "RW" -> Json.Decode.succeed RW+        "SA" -> Json.Decode.succeed SA+        "SB" -> Json.Decode.succeed SB+        "SC" -> Json.Decode.succeed SC+        "SD" -> Json.Decode.succeed SD+        "SE" -> Json.Decode.succeed SE+        "SG" -> Json.Decode.succeed SG+        "SH" -> Json.Decode.succeed SH+        "SI" -> Json.Decode.succeed SI+        "SJ" -> Json.Decode.succeed SJ+        "SK" -> Json.Decode.succeed SK+        "SL" -> Json.Decode.succeed SL+        "SM" -> Json.Decode.succeed SM+        "SN" -> Json.Decode.succeed SN+        "SO" -> Json.Decode.succeed SO+        "SR" -> Json.Decode.succeed SR+        "SS" -> Json.Decode.succeed SS+        "ST" -> Json.Decode.succeed ST+        "SV" -> Json.Decode.succeed SV+        "SX" -> Json.Decode.succeed SX+        "SY" -> Json.Decode.succeed SY+        "SZ" -> Json.Decode.succeed SZ+        "TC" -> Json.Decode.succeed TC+        "TD" -> Json.Decode.succeed TD+        "TF" -> Json.Decode.succeed TF+        "TG" -> Json.Decode.succeed TG+        "TH" -> Json.Decode.succeed TH+        "TJ" -> Json.Decode.succeed TJ+        "TK" -> Json.Decode.succeed TK+        "TL" -> Json.Decode.succeed TL+        "TM" -> Json.Decode.succeed TM+        "TN" -> Json.Decode.succeed TN+        "TO" -> Json.Decode.succeed TO+        "TR" -> Json.Decode.succeed TR+        "TT" -> Json.Decode.succeed TT+        "TV" -> Json.Decode.succeed TV+        "TW" -> Json.Decode.succeed TW+        "TZ" -> Json.Decode.succeed TZ+        "UA" -> Json.Decode.succeed UA+        "UG" -> Json.Decode.succeed UG+        "UM" -> Json.Decode.succeed UM+        "US" -> Json.Decode.succeed US+        "UY" -> Json.Decode.succeed UY+        "UZ" -> Json.Decode.succeed UZ+        "VA" -> Json.Decode.succeed VA+        "VC" -> Json.Decode.succeed VC+        "VE" -> Json.Decode.succeed VE+        "VG" -> Json.Decode.succeed VG+        "VI" -> Json.Decode.succeed VI+        "VN" -> Json.Decode.succeed VN+        "VU" -> Json.Decode.succeed VU+        "WF" -> Json.Decode.succeed WF+        "WS" -> Json.Decode.succeed WS+        "YE" -> Json.Decode.succeed YE+        "YT" -> Json.Decode.succeed YT+        "ZA" -> Json.Decode.succeed ZA+        "ZM" -> Json.Decode.succeed ZM+        "ZW" -> Json.Decode.succeed ZW+        other ->+          Json.Decode.fail <| "CountryCode doesn't have constructor: " ++ other+  in+  Json.Decode.string+    |> Json.Decode.andThen decide+################################################################################+
+ test-output/extraction/golden/CountryCode.txt view
@@ -0,0 +1,275 @@+DatatypeStructure+  { mapping =+      ElmMapping+        { typeName = "CountryCode"+        , moduleName = Just "Data.CountryCode"+        , encoderLocation =+            Just+              SymbolLocation+                { symbolName = "encodeCountryCode"+                , symbolModuleName = "Data.CountryCode"+                }+        , decoderLocation =+            Just+              SymbolLocation+                { symbolName = "decodeCountryCode"+                , symbolModuleName = "Data.CountryCode"+                }+        , args = []+        , isTypeAlias = False+        , urlPiece = Nothing+        , queryParam = Nothing+        }+  , nParams = 0+  , constructors =+      [ Constructor { constructorName = "AD" , constructorFields = [] }+      , Constructor { constructorName = "AE" , constructorFields = [] }+      , Constructor { constructorName = "AF" , constructorFields = [] }+      , Constructor { constructorName = "AG" , constructorFields = [] }+      , Constructor { constructorName = "AI" , constructorFields = [] }+      , Constructor { constructorName = "AL" , constructorFields = [] }+      , Constructor { constructorName = "AM" , constructorFields = [] }+      , Constructor { constructorName = "AO" , constructorFields = [] }+      , Constructor { constructorName = "AQ" , constructorFields = [] }+      , Constructor { constructorName = "AR" , constructorFields = [] }+      , Constructor { constructorName = "AS" , constructorFields = [] }+      , Constructor { constructorName = "AT" , constructorFields = [] }+      , Constructor { constructorName = "AU" , constructorFields = [] }+      , Constructor { constructorName = "AW" , constructorFields = [] }+      , Constructor { constructorName = "AX" , constructorFields = [] }+      , Constructor { constructorName = "AZ" , constructorFields = [] }+      , Constructor { constructorName = "BA" , constructorFields = [] }+      , Constructor { constructorName = "BB" , constructorFields = [] }+      , Constructor { constructorName = "BD" , constructorFields = [] }+      , Constructor { constructorName = "BE" , constructorFields = [] }+      , Constructor { constructorName = "BF" , constructorFields = [] }+      , Constructor { constructorName = "BG" , constructorFields = [] }+      , Constructor { constructorName = "BH" , constructorFields = [] }+      , Constructor { constructorName = "BI" , constructorFields = [] }+      , Constructor { constructorName = "BJ" , constructorFields = [] }+      , Constructor { constructorName = "BL" , constructorFields = [] }+      , Constructor { constructorName = "BM" , constructorFields = [] }+      , Constructor { constructorName = "BN" , constructorFields = [] }+      , Constructor { constructorName = "BO" , constructorFields = [] }+      , Constructor { constructorName = "BQ" , constructorFields = [] }+      , Constructor { constructorName = "BR" , constructorFields = [] }+      , Constructor { constructorName = "BS" , constructorFields = [] }+      , Constructor { constructorName = "BT" , constructorFields = [] }+      , Constructor { constructorName = "BV" , constructorFields = [] }+      , Constructor { constructorName = "BW" , constructorFields = [] }+      , Constructor { constructorName = "BY" , constructorFields = [] }+      , Constructor { constructorName = "BZ" , constructorFields = [] }+      , Constructor { constructorName = "CA" , constructorFields = [] }+      , Constructor { constructorName = "CC" , constructorFields = [] }+      , Constructor { constructorName = "CD" , constructorFields = [] }+      , Constructor { constructorName = "CF" , constructorFields = [] }+      , Constructor { constructorName = "CG" , constructorFields = [] }+      , Constructor { constructorName = "CH" , constructorFields = [] }+      , Constructor { constructorName = "CI" , constructorFields = [] }+      , Constructor { constructorName = "CK" , constructorFields = [] }+      , Constructor { constructorName = "CL" , constructorFields = [] }+      , Constructor { constructorName = "CM" , constructorFields = [] }+      , Constructor { constructorName = "CN" , constructorFields = [] }+      , Constructor { constructorName = "CO" , constructorFields = [] }+      , Constructor { constructorName = "CR" , constructorFields = [] }+      , Constructor { constructorName = "CU" , constructorFields = [] }+      , Constructor { constructorName = "CV" , constructorFields = [] }+      , Constructor { constructorName = "CW" , constructorFields = [] }+      , Constructor { constructorName = "CX" , constructorFields = [] }+      , Constructor { constructorName = "CY" , constructorFields = [] }+      , Constructor { constructorName = "CZ" , constructorFields = [] }+      , Constructor { constructorName = "DE" , constructorFields = [] }+      , Constructor { constructorName = "DJ" , constructorFields = [] }+      , Constructor { constructorName = "DK" , constructorFields = [] }+      , Constructor { constructorName = "DM" , constructorFields = [] }+      , Constructor { constructorName = "DO" , constructorFields = [] }+      , Constructor { constructorName = "DZ" , constructorFields = [] }+      , Constructor { constructorName = "EC" , constructorFields = [] }+      , Constructor { constructorName = "EE" , constructorFields = [] }+      , Constructor { constructorName = "EG" , constructorFields = [] }+      , Constructor { constructorName = "EH" , constructorFields = [] }+      , Constructor { constructorName = "ER" , constructorFields = [] }+      , Constructor { constructorName = "ES" , constructorFields = [] }+      , Constructor { constructorName = "ET" , constructorFields = [] }+      , Constructor { constructorName = "FI" , constructorFields = [] }+      , Constructor { constructorName = "FJ" , constructorFields = [] }+      , Constructor { constructorName = "FK" , constructorFields = [] }+      , Constructor { constructorName = "FM" , constructorFields = [] }+      , Constructor { constructorName = "FO" , constructorFields = [] }+      , Constructor { constructorName = "FR" , constructorFields = [] }+      , Constructor { constructorName = "GA" , constructorFields = [] }+      , Constructor { constructorName = "GB" , constructorFields = [] }+      , Constructor { constructorName = "GD" , constructorFields = [] }+      , Constructor { constructorName = "GE" , constructorFields = [] }+      , Constructor { constructorName = "GF" , constructorFields = [] }+      , Constructor { constructorName = "GG" , constructorFields = [] }+      , Constructor { constructorName = "GH" , constructorFields = [] }+      , Constructor { constructorName = "GI" , constructorFields = [] }+      , Constructor { constructorName = "GL" , constructorFields = [] }+      , Constructor { constructorName = "GM" , constructorFields = [] }+      , Constructor { constructorName = "GN" , constructorFields = [] }+      , Constructor { constructorName = "GP" , constructorFields = [] }+      , Constructor { constructorName = "GQ" , constructorFields = [] }+      , Constructor { constructorName = "GR" , constructorFields = [] }+      , Constructor { constructorName = "GS" , constructorFields = [] }+      , Constructor { constructorName = "GT" , constructorFields = [] }+      , Constructor { constructorName = "GU" , constructorFields = [] }+      , Constructor { constructorName = "GW" , constructorFields = [] }+      , Constructor { constructorName = "GY" , constructorFields = [] }+      , Constructor { constructorName = "HK" , constructorFields = [] }+      , Constructor { constructorName = "HM" , constructorFields = [] }+      , Constructor { constructorName = "HN" , constructorFields = [] }+      , Constructor { constructorName = "HR" , constructorFields = [] }+      , Constructor { constructorName = "HT" , constructorFields = [] }+      , Constructor { constructorName = "HU" , constructorFields = [] }+      , Constructor { constructorName = "ID" , constructorFields = [] }+      , Constructor { constructorName = "IE" , constructorFields = [] }+      , Constructor { constructorName = "IL" , constructorFields = [] }+      , Constructor { constructorName = "IM" , constructorFields = [] }+      , Constructor { constructorName = "IN" , constructorFields = [] }+      , Constructor { constructorName = "IO" , constructorFields = [] }+      , Constructor { constructorName = "IQ" , constructorFields = [] }+      , Constructor { constructorName = "IR" , constructorFields = [] }+      , Constructor { constructorName = "IS" , constructorFields = [] }+      , Constructor { constructorName = "IT" , constructorFields = [] }+      , Constructor { constructorName = "JE" , constructorFields = [] }+      , Constructor { constructorName = "JM" , constructorFields = [] }+      , Constructor { constructorName = "JO" , constructorFields = [] }+      , Constructor { constructorName = "JP" , constructorFields = [] }+      , Constructor { constructorName = "KE" , constructorFields = [] }+      , Constructor { constructorName = "KG" , constructorFields = [] }+      , Constructor { constructorName = "KH" , constructorFields = [] }+      , Constructor { constructorName = "KI" , constructorFields = [] }+      , Constructor { constructorName = "KM" , constructorFields = [] }+      , Constructor { constructorName = "KN" , constructorFields = [] }+      , Constructor { constructorName = "KP" , constructorFields = [] }+      , Constructor { constructorName = "KR" , constructorFields = [] }+      , Constructor { constructorName = "KW" , constructorFields = [] }+      , Constructor { constructorName = "KY" , constructorFields = [] }+      , Constructor { constructorName = "KZ" , constructorFields = [] }+      , Constructor { constructorName = "LA" , constructorFields = [] }+      , Constructor { constructorName = "LB" , constructorFields = [] }+      , Constructor { constructorName = "LC" , constructorFields = [] }+      , Constructor { constructorName = "LI" , constructorFields = [] }+      , Constructor { constructorName = "LK" , constructorFields = [] }+      , Constructor { constructorName = "LR" , constructorFields = [] }+      , Constructor { constructorName = "LS" , constructorFields = [] }+      , Constructor { constructorName = "LT" , constructorFields = [] }+      , Constructor { constructorName = "LU" , constructorFields = [] }+      , Constructor { constructorName = "LV" , constructorFields = [] }+      , Constructor { constructorName = "LY" , constructorFields = [] }+      , Constructor { constructorName = "MA" , constructorFields = [] }+      , Constructor { constructorName = "MC" , constructorFields = [] }+      , Constructor { constructorName = "MD" , constructorFields = [] }+      , Constructor { constructorName = "ME" , constructorFields = [] }+      , Constructor { constructorName = "MF" , constructorFields = [] }+      , Constructor { constructorName = "MG" , constructorFields = [] }+      , Constructor { constructorName = "MH" , constructorFields = [] }+      , Constructor { constructorName = "MK" , constructorFields = [] }+      , Constructor { constructorName = "ML" , constructorFields = [] }+      , Constructor { constructorName = "MM" , constructorFields = [] }+      , Constructor { constructorName = "MN" , constructorFields = [] }+      , Constructor { constructorName = "MO" , constructorFields = [] }+      , Constructor { constructorName = "MP" , constructorFields = [] }+      , Constructor { constructorName = "MQ" , constructorFields = [] }+      , Constructor { constructorName = "MR" , constructorFields = [] }+      , Constructor { constructorName = "MS" , constructorFields = [] }+      , Constructor { constructorName = "MT" , constructorFields = [] }+      , Constructor { constructorName = "MU" , constructorFields = [] }+      , Constructor { constructorName = "MV" , constructorFields = [] }+      , Constructor { constructorName = "MW" , constructorFields = [] }+      , Constructor { constructorName = "MX" , constructorFields = [] }+      , Constructor { constructorName = "MY" , constructorFields = [] }+      , Constructor { constructorName = "MZ" , constructorFields = [] }+      , Constructor { constructorName = "NA" , constructorFields = [] }+      , Constructor { constructorName = "NC" , constructorFields = [] }+      , Constructor { constructorName = "NE" , constructorFields = [] }+      , Constructor { constructorName = "NF" , constructorFields = [] }+      , Constructor { constructorName = "NG" , constructorFields = [] }+      , Constructor { constructorName = "NI" , constructorFields = [] }+      , Constructor { constructorName = "NL" , constructorFields = [] }+      , Constructor { constructorName = "NO" , constructorFields = [] }+      , Constructor { constructorName = "NP" , constructorFields = [] }+      , Constructor { constructorName = "NR" , constructorFields = [] }+      , Constructor { constructorName = "NU" , constructorFields = [] }+      , Constructor { constructorName = "NZ" , constructorFields = [] }+      , Constructor { constructorName = "OM" , constructorFields = [] }+      , Constructor { constructorName = "PA" , constructorFields = [] }+      , Constructor { constructorName = "PE" , constructorFields = [] }+      , Constructor { constructorName = "PF" , constructorFields = [] }+      , Constructor { constructorName = "PG" , constructorFields = [] }+      , Constructor { constructorName = "PH" , constructorFields = [] }+      , Constructor { constructorName = "PK" , constructorFields = [] }+      , Constructor { constructorName = "PL" , constructorFields = [] }+      , Constructor { constructorName = "PM" , constructorFields = [] }+      , Constructor { constructorName = "PN" , constructorFields = [] }+      , Constructor { constructorName = "PR" , constructorFields = [] }+      , Constructor { constructorName = "PS" , constructorFields = [] }+      , Constructor { constructorName = "PT" , constructorFields = [] }+      , Constructor { constructorName = "PW" , constructorFields = [] }+      , Constructor { constructorName = "PY" , constructorFields = [] }+      , Constructor { constructorName = "QA" , constructorFields = [] }+      , Constructor { constructorName = "RE" , constructorFields = [] }+      , Constructor { constructorName = "RO" , constructorFields = [] }+      , Constructor { constructorName = "RS" , constructorFields = [] }+      , Constructor { constructorName = "RU" , constructorFields = [] }+      , Constructor { constructorName = "RW" , constructorFields = [] }+      , Constructor { constructorName = "SA" , constructorFields = [] }+      , Constructor { constructorName = "SB" , constructorFields = [] }+      , Constructor { constructorName = "SC" , constructorFields = [] }+      , Constructor { constructorName = "SD" , constructorFields = [] }+      , Constructor { constructorName = "SE" , constructorFields = [] }+      , Constructor { constructorName = "SG" , constructorFields = [] }+      , Constructor { constructorName = "SH" , constructorFields = [] }+      , Constructor { constructorName = "SI" , constructorFields = [] }+      , Constructor { constructorName = "SJ" , constructorFields = [] }+      , Constructor { constructorName = "SK" , constructorFields = [] }+      , Constructor { constructorName = "SL" , constructorFields = [] }+      , Constructor { constructorName = "SM" , constructorFields = [] }+      , Constructor { constructorName = "SN" , constructorFields = [] }+      , Constructor { constructorName = "SO" , constructorFields = [] }+      , Constructor { constructorName = "SR" , constructorFields = [] }+      , Constructor { constructorName = "SS" , constructorFields = [] }+      , Constructor { constructorName = "ST" , constructorFields = [] }+      , Constructor { constructorName = "SV" , constructorFields = [] }+      , Constructor { constructorName = "SX" , constructorFields = [] }+      , Constructor { constructorName = "SY" , constructorFields = [] }+      , Constructor { constructorName = "SZ" , constructorFields = [] }+      , Constructor { constructorName = "TC" , constructorFields = [] }+      , Constructor { constructorName = "TD" , constructorFields = [] }+      , Constructor { constructorName = "TF" , constructorFields = [] }+      , Constructor { constructorName = "TG" , constructorFields = [] }+      , Constructor { constructorName = "TH" , constructorFields = [] }+      , Constructor { constructorName = "TJ" , constructorFields = [] }+      , Constructor { constructorName = "TK" , constructorFields = [] }+      , Constructor { constructorName = "TL" , constructorFields = [] }+      , Constructor { constructorName = "TM" , constructorFields = [] }+      , Constructor { constructorName = "TN" , constructorFields = [] }+      , Constructor { constructorName = "TO" , constructorFields = [] }+      , Constructor { constructorName = "TR" , constructorFields = [] }+      , Constructor { constructorName = "TT" , constructorFields = [] }+      , Constructor { constructorName = "TV" , constructorFields = [] }+      , Constructor { constructorName = "TW" , constructorFields = [] }+      , Constructor { constructorName = "TZ" , constructorFields = [] }+      , Constructor { constructorName = "UA" , constructorFields = [] }+      , Constructor { constructorName = "UG" , constructorFields = [] }+      , Constructor { constructorName = "UM" , constructorFields = [] }+      , Constructor { constructorName = "US" , constructorFields = [] }+      , Constructor { constructorName = "UY" , constructorFields = [] }+      , Constructor { constructorName = "UZ" , constructorFields = [] }+      , Constructor { constructorName = "VA" , constructorFields = [] }+      , Constructor { constructorName = "VC" , constructorFields = [] }+      , Constructor { constructorName = "VE" , constructorFields = [] }+      , Constructor { constructorName = "VG" , constructorFields = [] }+      , Constructor { constructorName = "VI" , constructorFields = [] }+      , Constructor { constructorName = "VN" , constructorFields = [] }+      , Constructor { constructorName = "VU" , constructorFields = [] }+      , Constructor { constructorName = "WF" , constructorFields = [] }+      , Constructor { constructorName = "WS" , constructorFields = [] }+      , Constructor { constructorName = "YE" , constructorFields = [] }+      , Constructor { constructorName = "YT" , constructorFields = [] }+      , Constructor { constructorName = "ZA" , constructorFields = [] }+      , Constructor { constructorName = "ZM" , constructorFields = [] }+      , Constructor { constructorName = "ZW" , constructorFields = [] }+      ]+  }
+ test-output/extraction/golden/EmptyAlias.txt view
@@ -0,0 +1,28 @@+DatatypeStructure+  { mapping =+      ElmMapping+        { typeName = "EmptyAlias"+        , moduleName = Just "Codegen.SampleTypes"+        , encoderLocation =+            Just+              SymbolLocation+                { symbolName = "encodeEmptyAlias"+                , symbolModuleName = "Codegen.SampleTypes"+                }+        , decoderLocation =+            Just+              SymbolLocation+                { symbolName = "decodeEmptyAlias"+                , symbolModuleName = "Codegen.SampleTypes"+                }+        , args = []+        , isTypeAlias = True+        , urlPiece = Nothing+        , queryParam = Nothing+        }+  , nParams = 0+  , constructors =+      [ Constructor+          { constructorName = "EmptyAlias" , constructorFields = [] }+      ]+  }
+ test-output/extraction/golden/Form_Report.txt view
@@ -0,0 +1,129 @@+DatatypeStructure+  { mapping =+      ElmMapping+        { typeName = "Form"+        , moduleName = Just "Codegen.Report"+        , encoderLocation =+            Just+              SymbolLocation+                { symbolName = "encodeForm" , symbolModuleName = "Codegen.Report" }+        , decoderLocation =+            Just+              SymbolLocation+                { symbolName = "decodeForm" , symbolModuleName = "Codegen.Report" }+        , args = []+        , isTypeAlias = False+        , urlPiece = Nothing+        , queryParam = Nothing+        }+  , nParams = 0+  , constructors =+      [ Constructor+          { constructorName = "Form"+          , constructorFields =+              [ ( Just "userName"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "Maybe"+                            , moduleName = Just "Maybe"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "maybe"+                                    , symbolModuleName = "Json.Encode.Extra"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "nullable" , symbolModuleName = "Json.Decode" }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs =+                        [ TyRef+                            { tyCon =+                                TyMapping+                                  ElmMapping+                                    { typeName = "String"+                                    , moduleName = Nothing+                                    , encoderLocation =+                                        Just+                                          SymbolLocation+                                            { symbolName = "string"+                                            , symbolModuleName = "Json.Encode"+                                            }+                                    , decoderLocation =+                                        Just+                                          SymbolLocation+                                            { symbolName = "string"+                                            , symbolModuleName = "Json.Decode"+                                            }+                                    , args = []+                                    , isTypeAlias = False+                                    , urlPiece = Nothing+                                    , queryParam = Nothing+                                    }+                            , tyArgs = []+                            }+                        ]+                    }+                )+              , ( Just "upload"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "Maybe"+                            , moduleName = Just "Maybe"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "maybe"+                                    , symbolModuleName = "Json.Encode.Extra"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "nullable" , symbolModuleName = "Json.Decode" }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs =+                        [ TyRef+                            { tyCon =+                                TyMapping+                                  ElmMapping+                                    { typeName = "FileUpload"+                                    , moduleName = Just "Codegen.Report"+                                    , encoderLocation =+                                        Just+                                          SymbolLocation+                                            { symbolName = "encodeFileUpload"+                                            , symbolModuleName = "Codegen.Report"+                                            }+                                    , decoderLocation =+                                        Just+                                          SymbolLocation+                                            { symbolName = "decodeFileUpload"+                                            , symbolModuleName = "Codegen.Report"+                                            }+                                    , args = []+                                    , isTypeAlias = False+                                    , urlPiece = Nothing+                                    , queryParam = Nothing+                                    }+                            , tyArgs = []+                            }+                        ]+                    }+                )+              ]+          }+      ]+  }
+ test-output/extraction/golden/Form_Submission.txt view
@@ -0,0 +1,105 @@+DatatypeStructure+  { mapping =+      ElmMapping+        { typeName = "Form"+        , moduleName = Just "Codegen.Submission"+        , encoderLocation =+            Just+              SymbolLocation+                { symbolName = "encodeForm"+                , symbolModuleName = "Codegen.Submission"+                }+        , decoderLocation =+            Just+              SymbolLocation+                { symbolName = "decodeForm"+                , symbolModuleName = "Codegen.Submission"+                }+        , args = []+        , isTypeAlias = False+        , urlPiece = Nothing+        , queryParam = Nothing+        }+  , nParams = 0+  , constructors =+      [ Constructor+          { constructorName = "Form"+          , constructorFields =+              [ ( Just "userName"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "String"+                            , moduleName = Nothing+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "string" , symbolModuleName = "Json.Encode" }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "string" , symbolModuleName = "Json.Decode" }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = []+                    }+                )+              , ( Just "upload"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "Maybe"+                            , moduleName = Just "Maybe"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "maybe"+                                    , symbolModuleName = "Json.Encode.Extra"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "nullable" , symbolModuleName = "Json.Decode" }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs =+                        [ TyRef+                            { tyCon =+                                TyMapping+                                  ElmMapping+                                    { typeName = "FileUpload"+                                    , moduleName = Just "Codegen.Submission"+                                    , encoderLocation =+                                        Just+                                          SymbolLocation+                                            { symbolName = "encodeFileUpload"+                                            , symbolModuleName = "Codegen.Submission"+                                            }+                                    , decoderLocation =+                                        Just+                                          SymbolLocation+                                            { symbolName = "decodeFileUpload"+                                            , symbolModuleName = "Codegen.Submission"+                                            }+                                    , args = []+                                    , isTypeAlias = False+                                    , urlPiece = Nothing+                                    , queryParam = Nothing+                                    }+                            , tyArgs = []+                            }+                        ]+                    }+                )+              ]+          }+      ]+  }
+ test-output/extraction/golden/HKTWithSpecializedKindStarparams_Int_Text_Maybe.txt view
@@ -0,0 +1,105 @@+DatatypeStructure+  { mapping =+      ElmMapping+        { typeName = "HKTWithSpecializedKindStarParams"+        , moduleName = Just "Codegen.SampleTypes"+        , encoderLocation =+            Just+              SymbolLocation+                { symbolName = "encodeHKTWithSpecializedKindStarParams"+                , symbolModuleName = "Codegen.SampleTypes"+                }+        , decoderLocation =+            Just+              SymbolLocation+                { symbolName = "decodeHKTWithSpecializedKindStarParams"+                , symbolModuleName = "Codegen.SampleTypes"+                }+        , args = []+        , isTypeAlias = False+        , urlPiece = Nothing+        , queryParam = Nothing+        }+  , nParams = 0+  , constructors =+      [ Constructor+          { constructorName = "HKTWithSpecializedKindStarParams"+          , constructorFields =+              [ ( Nothing+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "String"+                            , moduleName = Nothing+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "string" , symbolModuleName = "Json.Encode" }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "string" , symbolModuleName = "Json.Decode" }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = []+                    }+                )+              , ( Nothing+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "Maybe"+                            , moduleName = Just "Maybe"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "maybe"+                                    , symbolModuleName = "Json.Encode.Extra"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "nullable" , symbolModuleName = "Json.Decode" }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs =+                        [ TyRef+                            { tyCon =+                                TyMapping+                                  ElmMapping+                                    { typeName = "Int"+                                    , moduleName = Nothing+                                    , encoderLocation =+                                        Just+                                          SymbolLocation+                                            { symbolName = "int"+                                            , symbolModuleName = "Json.Encode"+                                            }+                                    , decoderLocation =+                                        Just+                                          SymbolLocation+                                            { symbolName = "int"+                                            , symbolModuleName = "Json.Decode"+                                            }+                                    , args = []+                                    , isTypeAlias = False+                                    , urlPiece = Nothing+                                    , queryParam = Nothing+                                    }+                            , tyArgs = []+                            }+                        ]+                    }+                )+              ]+          }+      ]+  }
+ test-output/extraction/golden/HKTWithUnspecializedParams_(Either_Int).txt view
@@ -0,0 +1,188 @@+DatatypeStructure+  { mapping =+      ElmMapping+        { typeName = "HKTWithUnspecializedParams"+        , moduleName = Just "Codegen.SampleTypes"+        , encoderLocation =+            Just+              SymbolLocation+                { symbolName = "encodeHKTWithUnspecializedParams"+                , symbolModuleName = "Codegen.SampleTypes"+                }+        , decoderLocation =+            Just+              SymbolLocation+                { symbolName = "decodeHKTWithUnspecializedParams"+                , symbolModuleName = "Codegen.SampleTypes"+                }+        , args = []+        , isTypeAlias = False+        , urlPiece = Nothing+        , queryParam = Nothing+        }+  , nParams = 2+  , constructors =+      [ Constructor+          { constructorName = "HKTWithUnspecializedParams"+          , constructorFields =+              [ ( Nothing+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "Either"+                            , moduleName = Just "Codegen.Either"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeEither"+                                    , symbolModuleName = "Codegen.Either"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeEither"+                                    , symbolModuleName = "Codegen.Either"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs =+                        [ TyRef+                            { tyCon =+                                TyMapping+                                  ElmMapping+                                    { typeName = "Int"+                                    , moduleName = Nothing+                                    , encoderLocation =+                                        Just+                                          SymbolLocation+                                            { symbolName = "int"+                                            , symbolModuleName = "Json.Encode"+                                            }+                                    , decoderLocation =+                                        Just+                                          SymbolLocation+                                            { symbolName = "int"+                                            , symbolModuleName = "Json.Decode"+                                            }+                                    , args = []+                                    , isTypeAlias = False+                                    , urlPiece = Nothing+                                    , queryParam = Nothing+                                    }+                            , tyArgs = []+                            }+                        , TyRef+                            { tyCon =+                                TyMapping+                                  ElmMapping+                                    { typeName = "Either"+                                    , moduleName = Just "Codegen.Either"+                                    , encoderLocation =+                                        Just+                                          SymbolLocation+                                            { symbolName = "encodeEither"+                                            , symbolModuleName = "Codegen.Either"+                                            }+                                    , decoderLocation =+                                        Just+                                          SymbolLocation+                                            { symbolName = "decodeEither"+                                            , symbolModuleName = "Codegen.Either"+                                            }+                                    , args = []+                                    , isTypeAlias = False+                                    , urlPiece = Nothing+                                    , queryParam = Nothing+                                    }+                            , tyArgs =+                                [ TyRef+                                    { tyCon =+                                        TyMapping+                                          ElmMapping+                                            { typeName = "Int"+                                            , moduleName = Nothing+                                            , encoderLocation =+                                                Just+                                                  SymbolLocation+                                                    { symbolName = "int"+                                                    , symbolModuleName = "Json.Encode"+                                                    }+                                            , decoderLocation =+                                                Just+                                                  SymbolLocation+                                                    { symbolName = "int"+                                                    , symbolModuleName = "Json.Decode"+                                                    }+                                            , args = []+                                            , isTypeAlias = False+                                            , urlPiece = Nothing+                                            , queryParam = Nothing+                                            }+                                    , tyArgs = []+                                    }+                                , TyRef+                                    { tyCon =+                                        TyMapping+                                          ElmMapping+                                            { typeName = "Either"+                                            , moduleName = Just "Codegen.Either"+                                            , encoderLocation =+                                                Just+                                                  SymbolLocation+                                                    { symbolName = "encodeEither"+                                                    , symbolModuleName = "Codegen.Either"+                                                    }+                                            , decoderLocation =+                                                Just+                                                  SymbolLocation+                                                    { symbolName = "decodeEither"+                                                    , symbolModuleName = "Codegen.Either"+                                                    }+                                            , args = []+                                            , isTypeAlias = False+                                            , urlPiece = Nothing+                                            , queryParam = Nothing+                                            }+                                    , tyArgs =+                                        [ TyRef+                                            { tyCon =+                                                TyMapping+                                                  ElmMapping+                                                    { typeName = "Int"+                                                    , moduleName = Nothing+                                                    , encoderLocation =+                                                        Just+                                                          SymbolLocation+                                                            { symbolName = "int"+                                                            , symbolModuleName = "Json.Encode"+                                                            }+                                                    , decoderLocation =+                                                        Just+                                                          SymbolLocation+                                                            { symbolName = "int"+                                                            , symbolModuleName = "Json.Decode"+                                                            }+                                                    , args = []+                                                    , isTypeAlias = False+                                                    , urlPiece = Nothing+                                                    , queryParam = Nothing+                                                    }+                                            , tyArgs = []+                                            }+                                        , TyRef { tyCon = TyVar "a0" , tyArgs = [] }+                                        ]+                                    }+                                ]+                            }+                        ]+                    }+                )+              , ( Nothing , TyRef { tyCon = TyVar "a1" , tyArgs = [] } )+              ]+          }+      ]+  }
+ test-output/extraction/golden/LargeRecord.txt view
@@ -0,0 +1,2731 @@+DatatypeStructure+  { mapping =+      ElmMapping+        { typeName = "LargeRecord"+        , moduleName = Just "Codegen.SampleTypes"+        , encoderLocation =+            Just+              SymbolLocation+                { symbolName = "encodeLargeRecord"+                , symbolModuleName = "Codegen.SampleTypes"+                }+        , decoderLocation =+            Just+              SymbolLocation+                { symbolName = "decodeLargeRecord"+                , symbolModuleName = "Codegen.SampleTypes"+                }+        , args = []+        , isTypeAlias = False+        , urlPiece = Nothing+        , queryParam = Nothing+        }+  , nParams = 1+  , constructors =+      [ Constructor+          { constructorName = "LargeRecord"+          , constructorFields =+              [ ( Just "field0"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field1"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field2"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field3"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field4"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field5"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field6"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field7"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field8"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field9"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field10"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field11"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field12"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field13"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field14"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field15"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field16"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field17"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field18"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field19"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field20"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field21"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field22"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field23"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field24"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field25"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field26"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field27"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field28"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field29"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field30"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field31"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field32"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field33"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field34"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field35"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field36"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field37"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field38"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field39"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field40"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field41"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field42"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field43"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field44"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field45"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field46"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field47"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field48"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field49"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field50"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field51"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field52"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field53"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field54"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field55"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field56"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field57"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field58"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field59"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field60"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field61"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field62"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field63"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field64"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field65"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field66"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field67"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field68"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field69"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field70"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field71"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field72"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field73"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field74"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field75"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field76"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field77"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field78"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field79"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field80"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field81"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field82"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field83"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field84"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field85"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field86"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field87"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field88"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field89"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field90"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field91"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field92"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field93"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field94"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field95"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field96"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field97"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field98"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              , ( Just "field99"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "LookMaNoPhantomParam"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeNatPhantomParameter"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              ]+          }+      ]+  }
+ test-output/extraction/golden/MonomorphicRecursiveType.txt view
@@ -0,0 +1,83 @@+DatatypeStructure+  { mapping =+      ElmMapping+        { typeName = "MonomorphicRecursiveType"+        , moduleName = Just "Codegen.SampleTypes"+        , encoderLocation =+            Just+              SymbolLocation+                { symbolName = "encodeMonomorphicRecursiveType"+                , symbolModuleName = "Codegen.SampleTypes"+                }+        , decoderLocation =+            Just+              SymbolLocation+                { symbolName = "decodeMonomorphicRecursiveType"+                , symbolModuleName = "Codegen.SampleTypes"+                }+        , args = []+        , isTypeAlias = False+        , urlPiece = Nothing+        , queryParam = Nothing+        }+  , nParams = 0+  , constructors =+      [ Constructor+          { constructorName = "SMRTNil" , constructorFields = [] }+      , Constructor+          { constructorName = "SMRTCons"+          , constructorFields =+              [ ( Nothing+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "Int"+                            , moduleName = Nothing+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "int" , symbolModuleName = "Json.Encode" }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "int" , symbolModuleName = "Json.Decode" }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = []+                    }+                )+              , ( Nothing+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "MonomorphicRecursiveType"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeMonomorphicRecursiveType"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeMonomorphicRecursiveType"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = []+                    }+                )+              ]+          }+      ]+  }
+ test-output/extraction/golden/NatPhantomparameter_3.txt view
@@ -0,0 +1,54 @@+DatatypeStructure+  { mapping =+      ElmMapping+        { typeName = "LookMaNoPhantomParam"+        , moduleName = Just "Codegen.SampleTypes"+        , encoderLocation =+            Just+              SymbolLocation+                { symbolName = "encodeNatPhantomParameter"+                , symbolModuleName = "Codegen.SampleTypes"+                }+        , decoderLocation =+            Just+              SymbolLocation+                { symbolName = "decodeNatPhantomParameter"+                , symbolModuleName = "Codegen.SampleTypes"+                }+        , args = []+        , isTypeAlias = False+        , urlPiece = Nothing+        , queryParam = Nothing+        }+  , nParams = 1+  , constructors =+      [ Constructor+          { constructorName = "NatPhantomParameter"+          , constructorFields =+              [ ( Nothing+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "List"+                            , moduleName = Nothing+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "list" , symbolModuleName = "Json.Encode" }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "list" , symbolModuleName = "Json.Decode" }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              ]+          }+      ]+  }
+ test-output/extraction/golden/PolymorphicRecursiveType.txt view
@@ -0,0 +1,61 @@+DatatypeStructure+  { mapping =+      ElmMapping+        { typeName = "PolymorphicRecursiveType"+        , moduleName = Just "Codegen.SampleTypes"+        , encoderLocation =+            Just+              SymbolLocation+                { symbolName = "encodePolymorphicRecursiveType"+                , symbolModuleName = "Codegen.SampleTypes"+                }+        , decoderLocation =+            Just+              SymbolLocation+                { symbolName = "decodePolymorphicRecursiveType"+                , symbolModuleName = "Codegen.SampleTypes"+                }+        , args = []+        , isTypeAlias = False+        , urlPiece = Nothing+        , queryParam = Nothing+        }+  , nParams = 1+  , constructors =+      [ Constructor+          { constructorName = "SPRTNil" , constructorFields = [] }+      , Constructor+          { constructorName = "SPRTCons"+          , constructorFields =+              [ ( Nothing , TyRef { tyCon = TyVar "a0" , tyArgs = [] } )+              , ( Nothing+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "PolymorphicRecursiveType"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodePolymorphicRecursiveType"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodePolymorphicRecursiveType"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = [ TyRef { tyCon = TyVar "a0" , tyArgs = [] } ]+                    }+                )+              ]+          }+      ]+  }
+ test-output/extraction/golden/RecordWithMultipleConstructors.txt view
@@ -0,0 +1,110 @@+DatatypeStructure+  { mapping =+      ElmMapping+        { typeName = "RecordWithMultipleConstructors"+        , moduleName = Just "Codegen.SampleTypes"+        , encoderLocation =+            Just+              SymbolLocation+                { symbolName = "encodeRecordWithMultipleConstructors"+                , symbolModuleName = "Codegen.SampleTypes"+                }+        , decoderLocation =+            Just+              SymbolLocation+                { symbolName = "decodeRecordWithMultipleConstructors"+                , symbolModuleName = "Codegen.SampleTypes"+                }+        , args = []+        , isTypeAlias = False+        , urlPiece = Nothing+        , queryParam = Nothing+        }+  , nParams = 0+  , constructors =+      [ Constructor+          { constructorName = "FirstRecordConstructor"+          , constructorFields =+              [ ( Just "foo"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "Bool"+                            , moduleName = Nothing+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "bool" , symbolModuleName = "Json.Encode" }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "bool" , symbolModuleName = "Json.Decode" }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = []+                    }+                )+              ]+          }+      , Constructor+          { constructorName = "SecondRecordConstructor"+          , constructorFields =+              [ ( Just "bar"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "Maybe"+                            , moduleName = Just "Maybe"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "maybe"+                                    , symbolModuleName = "Json.Encode.Extra"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "nullable" , symbolModuleName = "Json.Decode" }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs =+                        [ TyRef+                            { tyCon =+                                TyMapping+                                  ElmMapping+                                    { typeName = "Int"+                                    , moduleName = Nothing+                                    , encoderLocation =+                                        Just+                                          SymbolLocation+                                            { symbolName = "int"+                                            , symbolModuleName = "Json.Encode"+                                            }+                                    , decoderLocation =+                                        Just+                                          SymbolLocation+                                            { symbolName = "int"+                                            , symbolModuleName = "Json.Decode"+                                            }+                                    , args = []+                                    , isTypeAlias = False+                                    , urlPiece = Nothing+                                    , queryParam = Nothing+                                    }+                            , tyArgs = []+                            }+                        ]+                    }+                )+              ]+          }+      ]+  }
+ test-output/extraction/golden/SimpleHKT_Maybe.txt view
@@ -0,0 +1,82 @@+DatatypeStructure+  { mapping =+      ElmMapping+        { typeName = "SimpleHKTMaybe"+        , moduleName = Just "Codegen.SampleTypes"+        , encoderLocation =+            Just+              SymbolLocation+                { symbolName = "encodeSimpleHKT"+                , symbolModuleName = "Codegen.SampleTypes"+                }+        , decoderLocation =+            Just+              SymbolLocation+                { symbolName = "decodeSimpleHKT"+                , symbolModuleName = "Codegen.SampleTypes"+                }+        , args = []+        , isTypeAlias = False+        , urlPiece = Nothing+        , queryParam = Nothing+        }+  , nParams = 0+  , constructors =+      [ Constructor+          { constructorName = "SimpleHKT"+          , constructorFields =+              [ ( Nothing+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "Maybe"+                            , moduleName = Just "Maybe"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "maybe"+                                    , symbolModuleName = "Json.Encode.Extra"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "nullable" , symbolModuleName = "Json.Decode" }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs =+                        [ TyRef+                            { tyCon =+                                TyMapping+                                  ElmMapping+                                    { typeName = "String"+                                    , moduleName = Nothing+                                    , encoderLocation =+                                        Just+                                          SymbolLocation+                                            { symbolName = "string"+                                            , symbolModuleName = "Json.Encode"+                                            }+                                    , decoderLocation =+                                        Just+                                          SymbolLocation+                                            { symbolName = "string"+                                            , symbolModuleName = "Json.Decode"+                                            }+                                    , args = []+                                    , isTypeAlias = False+                                    , urlPiece = Nothing+                                    , queryParam = Nothing+                                    }+                            , tyArgs = []+                            }+                        ]+                    }+                )+              ]+          }+      ]+  }
+ test-output/extraction/golden/SimpleRecord.txt view
@@ -0,0 +1,111 @@+DatatypeStructure+  { mapping =+      ElmMapping+        { typeName = "SimpleRecord"+        , moduleName = Just "Codegen.SampleTypes"+        , encoderLocation =+            Just+              SymbolLocation+                { symbolName = "encodeSimpleRecord"+                , symbolModuleName = "Codegen.SampleTypes"+                }+        , decoderLocation =+            Just+              SymbolLocation+                { symbolName = "decodeSimpleRecord"+                , symbolModuleName = "Codegen.SampleTypes"+                }+        , args = []+        , isTypeAlias = False+        , urlPiece = Nothing+        , queryParam = Nothing+        }+  , nParams = 0+  , constructors =+      [ Constructor+          { constructorName = "SimpleRecord"+          , constructorFields =+              [ ( Just "name"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "PolymorphicRecursiveType"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodePolymorphicRecursiveType"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodePolymorphicRecursiveType"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs =+                        [ TyRef+                            { tyCon =+                                TyMapping+                                  ElmMapping+                                    { typeName = "SimpleType"+                                    , moduleName = Just "Codegen.SampleTypes"+                                    , encoderLocation =+                                        Just+                                          SymbolLocation+                                            { symbolName = "encodeSimpleType"+                                            , symbolModuleName = "Codegen.SampleTypes"+                                            }+                                    , decoderLocation =+                                        Just+                                          SymbolLocation+                                            { symbolName = "decodeSimpleType"+                                            , symbolModuleName = "Codegen.SampleTypes"+                                            }+                                    , args = []+                                    , isTypeAlias = False+                                    , urlPiece = Nothing+                                    , queryParam = Nothing+                                    }+                            , tyArgs = []+                            }+                        ]+                    }+                )+              , ( Just "age"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "SimpleType"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeSimpleType"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeSimpleType"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = []+                    }+                )+              ]+          }+      ]+  }
+ test-output/extraction/golden/SimpleRecordAlias.txt view
@@ -0,0 +1,111 @@+DatatypeStructure+  { mapping =+      ElmMapping+        { typeName = "SimpleRecordAlias"+        , moduleName = Just "Codegen.SampleTypes"+        , encoderLocation =+            Just+              SymbolLocation+                { symbolName = "encodeSimpleRecordAlias"+                , symbolModuleName = "Codegen.SampleTypes"+                }+        , decoderLocation =+            Just+              SymbolLocation+                { symbolName = "decodeSimpleRecordAlias"+                , symbolModuleName = "Codegen.SampleTypes"+                }+        , args = []+        , isTypeAlias = True+        , urlPiece = Nothing+        , queryParam = Nothing+        }+  , nParams = 0+  , constructors =+      [ Constructor+          { constructorName = "SimpleRecordAlias"+          , constructorFields =+              [ ( Just "name"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "PolymorphicRecursiveType"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodePolymorphicRecursiveType"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodePolymorphicRecursiveType"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs =+                        [ TyRef+                            { tyCon =+                                TyMapping+                                  ElmMapping+                                    { typeName = "SimpleType"+                                    , moduleName = Just "Codegen.SampleTypes"+                                    , encoderLocation =+                                        Just+                                          SymbolLocation+                                            { symbolName = "encodeSimpleType"+                                            , symbolModuleName = "Codegen.SampleTypes"+                                            }+                                    , decoderLocation =+                                        Just+                                          SymbolLocation+                                            { symbolName = "decodeSimpleType"+                                            , symbolModuleName = "Codegen.SampleTypes"+                                            }+                                    , args = []+                                    , isTypeAlias = False+                                    , urlPiece = Nothing+                                    , queryParam = Nothing+                                    }+                            , tyArgs = []+                            }+                        ]+                    }+                )+              , ( Just "age"+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "SimpleType"+                            , moduleName = Just "Codegen.SampleTypes"+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "encodeSimpleType"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "decodeSimpleType"+                                    , symbolModuleName = "Codegen.SampleTypes"+                                    }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = []+                    }+                )+              ]+          }+      ]+  }
+ test-output/extraction/golden/SimpleType.txt view
@@ -0,0 +1,54 @@+DatatypeStructure+  { mapping =+      ElmMapping+        { typeName = "SimpleType"+        , moduleName = Just "Codegen.SampleTypes"+        , encoderLocation =+            Just+              SymbolLocation+                { symbolName = "encodeSimpleType"+                , symbolModuleName = "Codegen.SampleTypes"+                }+        , decoderLocation =+            Just+              SymbolLocation+                { symbolName = "decodeSimpleType"+                , symbolModuleName = "Codegen.SampleTypes"+                }+        , args = []+        , isTypeAlias = False+        , urlPiece = Nothing+        , queryParam = Nothing+        }+  , nParams = 0+  , constructors =+      [ Constructor+          { constructorName = "SimpleType"+          , constructorFields =+              [ ( Nothing+                , TyRef+                    { tyCon =+                        TyMapping+                          ElmMapping+                            { typeName = "Int"+                            , moduleName = Nothing+                            , encoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "int" , symbolModuleName = "Json.Encode" }+                            , decoderLocation =+                                Just+                                  SymbolLocation+                                    { symbolName = "int" , symbolModuleName = "Json.Decode" }+                            , args = []+                            , isTypeAlias = False+                            , urlPiece = Nothing+                            , queryParam = Nothing+                            }+                    , tyArgs = []+                    }+                )+              ]+          }+      ]+  }