diff --git a/.gitignore b/.gitignore
--- a/.gitignore
+++ b/.gitignore
@@ -27,3 +27,9 @@
 # dependencies between it and the rest of the library.
 /examples/Capnp
 /tests/Capnp
+
+# I sometimes leave notes for myself in my working directory:
+/NOTES
+
+# Benchmark outputs:
+*.html
diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,7 +1,45 @@
+
+# 0.11.0.0
+
+* This release introduces some experimental new APIs; see the blog post
+  for details: <https://zenhack.net/2021/07/30/new-haskell-capnp-release-reworked-apis.html>
+  * The new APIs include support for RPC pipelining, which is not
+    possible with the old APIs.
+* The traversal limit is tracked at a coarser granularity. This results
+  in a modest performance improvement, and may result in slightly
+  different (but similar) amounts of the limit being used for a given
+  computation than with the old implementation.
+* Bounds on pointers are checked a bit earlier (when the pointer is
+  read, rather than when its referent is accessed). As a result, some
+  malformed messages may trigger bounds check errors which did not
+  previously, because the offending portion of the message was not
+  read.
+* The limit on how many capabilities can be attached to a single message
+  has been increased.
+* `LimitT m` now has an instance of `MonadCatch` if `m` has an instance.
+* Some harmless warnings triggered by the generated code are now
+  silenced.
+* `Capnp.Rpc.Promise` exposes a new function `newReadyPromise`, which
+  can be used to create an already-fulfilled promise.
+* Fixed a race condition where if the supervisor for a client is killed
+  before the server has finished spawning, the shutdown method might
+  not be run.
+* `Capnp.Rpc.Server.runServer` no longer calls handleStop on exit.
+  Most users of the library will not be affected, as this function is
+  mostly a low-level implementation detail that is called by higher
+  level functionality.
+* In `Capnp.Message` some uses of the type `Int` in the API have been
+  strengthened to type `WordCount`.
+
+# 0.10.0.1
+
+* Fix a bug causing spurious exceptions when creating very large
+  messages.
+
 # 0.10.0.0
 
 * The parametrization of messages has been reworked. Most things that
-  per parametrized over a message type are now parametrized over a
+  were parametrized over a message type are now parametrized over a
   type parameter of kind `Mutability` (defined in `Capnp.Message`).
   * The Message type class has been replaced with a type `Message` of
     kind `Mutability -> *`, and a type class `MonadReadMessage` for
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -29,11 +29,6 @@
 * The implementation is *not* robust against resource exhaustion
   attacks; for now users are strongly discouraged from using it to do
   RPC with untrusted peers.
-* While most of the machinery for it is in place, the API does not
-  currently expose a way to do field projection on remote promises.
-  As a consequence, actually pipelining method calls is not currently
-  possible, so the library is currently best suited to environments
-  which are already low-latency.
 
 The API is considered unstable. It will likely see changes, for the
 sake of polish, consistency, etc. as well as to improve performance and
@@ -45,7 +40,7 @@
 [issue27]: https://github.com/zenhack/haskell-capnp/issues/27
 [issue28]: https://github.com/zenhack/haskell-capnp/issues/28
 
-[ci-img]: https://gitlab.com/isd/haskell-capnp/badges/master/build.svg
+[ci-img]: https://gitlab.com/isd/haskell-capnp/badges/master/pipeline.svg
 [ci]: https://gitlab.com/isd/haskell-capnp/pipelines
 
 [hackage-img]: https://img.shields.io/hackage/v/capnp.svg
diff --git a/bench/Main.hs b/bench/Main.hs
new file mode 100644
--- /dev/null
+++ b/bench/Main.hs
@@ -0,0 +1,57 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE QuasiQuotes       #-}
+module Main (main) where
+
+
+import qualified Capnp                     as C
+import qualified Capnp.Untyped             as U
+import           Control.DeepSeq           (NFData(..))
+import           Control.Monad             (unless)
+import           Criterion.Main
+import qualified Data.ByteString           as BS
+import           System.Exit               (ExitCode(..))
+import qualified System.Process.ByteString as PB
+
+-- Get the raw bytes of a CodeGeneratorRequest for all of the bundled
+-- capnproto core schema. Useful as a source of generic test data.
+getCGRBytes :: IO BS.ByteString
+getCGRBytes = do
+    (exit, cgrBytes, _) <- PB.readProcessWithExitCode "capnp"
+        [ "compile", "-o-"
+        , "-I", "core-schema/"
+        , "--src-prefix=core-schema/"
+        , "core-schema/capnp/schema.capnp"
+        , "core-schema/capnp/stream.capnp"
+        , "core-schema/capnp/rpc-twoparty.capnp"
+        , "core-schema/capnp/persistent.capnp"
+        , "core-schema/capnp/rpc.capnp"
+        , "core-schema/capnp/compat/json.capnp"
+        , "core-schema/capnp/c++.capnp"
+        ]
+        ""
+    unless (exit == ExitSuccess) $ error "capnp compile failed"
+    pure cgrBytes
+
+instance NFData (C.Message mut) where
+    rnf = (`seq` ())
+
+main :: IO ()
+main = do
+    cgrBytes <- getCGRBytes
+    msg <- C.bsToMsg cgrBytes
+    let whnfLTIO = whnfIO . C.evalLimitT maxBound
+    defaultMain
+        [ bench "canonicalize" $ whnfLTIO $ do
+            root <- U.rootPtr msg
+            C.canonicalize root
+        , env
+            (C.evalLimitT maxBound $ do
+                mutMsg <- C.thaw msg
+                newMsg <- C.newMessage Nothing
+                pure (mutMsg, newMsg)
+            )
+            (\ ~(mutMsg, newMsg) -> bench "copy" $ whnfLTIO $ do
+                root <- U.rootPtr mutMsg
+                U.copyPtr newMsg (Just (U.PtrStruct root))
+            )
+        ]
diff --git a/capnp.cabal b/capnp.cabal
--- a/capnp.cabal
+++ b/capnp.cabal
@@ -1,8 +1,8 @@
 cabal-version:            2.2
 name:                     capnp
-version:                  0.10.0.1
+version:                  0.11.0.0
 category:                 Data, Serialization, Network, Rpc
-copyright:                2016-2020 haskell-capnp contributors (see CONTRIBUTORS file).
+copyright:                2016-2021 haskell-capnp contributors (see CONTRIBUTORS file).
 author:                   Ian Denhardt
 maintainer:               ian@zenhack.net
 license:                  MIT
@@ -65,6 +65,7 @@
       , containers                        >= 0.5.9 && <0.7
       , data-default                      ^>= 0.7.1
       , exceptions                        ^>= 0.10.0
+      , ghc-prim                          ^>= 0.6.1
       , mtl                               ^>= 2.2.2
       , primitive                         >= 0.6.3 && <0.8
       , safe-exceptions                   ^>= 0.1.7
@@ -104,16 +105,26 @@
       , Capnp.Bits
       , Capnp.Canonicalize
       , Capnp.Classes
+      , Capnp.New
+      , Capnp.New.Accessors
+      , Capnp.New.Basics
+      , Capnp.New.Classes
+      , Capnp.New.Constraints
       , Capnp.Convert
       , Capnp.Errors
+      , Capnp.Fields
       , Capnp.GenHelpers
       , Capnp.GenHelpers.Pure
       , Capnp.GenHelpers.Rpc
+      , Capnp.GenHelpers.New
       , Capnp.IO
       , Capnp.Message
       , Capnp.Pointer
       , Capnp.Untyped
       , Capnp.Untyped.Pure
+      , Capnp.Repr
+      , Capnp.Repr.Methods
+      , Capnp.Repr.Parsed
       , Capnp.TraversalLimit
       , Capnp.Rpc
       , Capnp.Rpc.Promise
@@ -153,6 +164,15 @@
       , Capnp.Gen.Capnp.RpcTwoparty
       , Capnp.Gen.Capnp.Schema
       , Capnp.Gen.Capnp.Stream
+
+      , Capnp.Gen.Capnp.Cxx.New
+      , Capnp.Gen.Capnp.Compat.Json.New
+      , Capnp.Gen.Capnp.Persistent.New
+      , Capnp.Gen.Capnp.Rpc.New
+      , Capnp.Gen.Capnp.RpcTwoparty.New
+      , Capnp.Gen.Capnp.Schema.New
+      , Capnp.Gen.Capnp.Stream.New
+
       , Capnp.Gen.ById.Xbdf87d7bb8304e81.Pure
       , Capnp.Gen.ById.X8ef99297a43a5e34.Pure
       , Capnp.Gen.ById.Xb8630836983feed7.Pure
@@ -160,6 +180,13 @@
       , Capnp.Gen.ById.Xa184c7885cdaf2a1.Pure
       , Capnp.Gen.ById.Xa93fc509624c72d9.Pure
       , Capnp.Gen.ById.X86c366a91393f3f8.Pure
+      , Capnp.Gen.ById.Xbdf87d7bb8304e81.New
+      , Capnp.Gen.ById.X8ef99297a43a5e34.New
+      , Capnp.Gen.ById.Xb8630836983feed7.New
+      , Capnp.Gen.ById.Xb312981b2552a250.New
+      , Capnp.Gen.ById.Xa184c7885cdaf2a1.New
+      , Capnp.Gen.ById.Xa93fc509624c72d9.New
+      , Capnp.Gen.ById.X86c366a91393f3f8.New
       , Capnp.Gen.ById.Xbdf87d7bb8304e81
       , Capnp.Gen.ById.X8ef99297a43a5e34
       , Capnp.Gen.ById.Xb8630836983feed7
@@ -170,7 +197,6 @@
       -- END GENERATED SCHEMA MODULES
     other-modules:
         Internal.AppendVec
-      , Internal.Finalizer
       , Internal.SnocList
       , Internal.Rc
       , Internal.TCloseQ
@@ -179,8 +205,7 @@
       , Codec.Capnp
     -- other-extensions:
     build-depends:
-        cpu                               ^>= 0.1.2
-      , hashable                          >= 1.2.7 && <1.4
+        hashable                          >= 1.2.7 && <1.4
       , data-default-instances-vector     ^>= 0.0.1
       , stm                               ^>= 2.5.0
       , stm-containers                    >= 1.1.0 && <1.3
@@ -188,8 +213,9 @@
       , focus                             ^>= 1.0.1
       , async                             ^>= 2.2.1
       , network-simple                    ^>= 0.4
-      , network                           ^>= 3.1
-      , supervisors                       ^>= 0.2.0
+      , network                           >= 3 && <3.2
+      , supervisors                       ^>= 0.2.1
+      , lifetimes                         ^>= 0.1
       , pretty-show                       >= 1.9.5 && <1.11
       , template-haskell                  ^>=2.16.0
 
@@ -202,6 +228,7 @@
   main-is: Main.hs
   other-modules:
       IR.Name
+      IR.New
     , IR.Common
     , IR.Stage1
     , IR.Flat
@@ -212,9 +239,11 @@
     , Trans.Stage1ToFlat
     , Trans.FlatToRaw
     , Trans.FlatToPure
+    , Trans.FlatToNew
     , Trans.ToHaskellCommon
     , Trans.PureToHaskell
     , Trans.RawToHaskell
+    , Trans.NewToHaskell
     , Trans.HaskellToText
     , Check
   build-depends:
@@ -247,28 +276,36 @@
       , Examples.Rpc.CalculatorServer
 
       -- Generated code for examples/calculator.capnp
-      , Capnp.Gen.ById.X85150b117366d14b
-      , Capnp.Gen.ById.X85150b117366d14b.Pure
       , Capnp.Gen.Calculator
       , Capnp.Gen.Calculator.Pure
+      , Capnp.Gen.Calculator.New
+      , Capnp.Gen.ById.X85150b117366d14b
+      , Capnp.Gen.ById.X85150b117366d14b.Pure
+      , Capnp.Gen.ById.X85150b117366d14b.New
 
       -- Generated code for examples/echo.capnp
       , Capnp.Gen.Echo
       , Capnp.Gen.Echo.Pure
+      , Capnp.Gen.Echo.New
       , Capnp.Gen.ById.Xd0a87f36fa0182f5
       , Capnp.Gen.ById.Xd0a87f36fa0182f5.Pure
+      , Capnp.Gen.ById.Xd0a87f36fa0182f5.New
 
       -- generated from tests/data/aircraft.capnp
       , Capnp.Gen.Aircraft
       , Capnp.Gen.Aircraft.Pure
+      , Capnp.Gen.Aircraft.New
       , Capnp.Gen.ById.X832bcc6686a26d56
       , Capnp.Gen.ById.X832bcc6686a26d56.Pure
+      , Capnp.Gen.ById.X832bcc6686a26d56.New
 
       -- generated from tests/data/generics.capnp
       , Capnp.Gen.Generics
       , Capnp.Gen.Generics.Pure
+      , Capnp.Gen.Generics.New
       , Capnp.Gen.ById.Xb6421fb8e478d144
       , Capnp.Gen.ById.Xb6421fb8e478d144.Pure
+      , Capnp.Gen.ById.Xb6421fb8e478d144.New
 
       -- Actual tests:
       , Module.Capnp.Gen.Capnp.Schema
@@ -280,6 +317,7 @@
       , Module.Capnp.Bits
       , Module.Capnp.Basics
       , Module.Capnp.Canonicalize
+      , PointerOOB
       , Regression
       , WalkSchemaCodeGenRequest
       , SchemaQuickCheck
@@ -303,3 +341,15 @@
       , deepseq
       , pretty-show
       , supervisors
+
+
+benchmark bench
+  import: shared-opts
+  type: exitcode-stdio-1.0
+  main-is: Main.hs
+  hs-source-dirs: bench
+  build-depends:
+      capnp
+    , criterion ^>=1.5.9
+    , deepseq
+    , process-extras
diff --git a/cmd/capnpc-haskell/Check.hs b/cmd/capnpc-haskell/Check.hs
--- a/cmd/capnpc-haskell/Check.hs
+++ b/cmd/capnpc-haskell/Check.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE DuplicateRecordFields #-}
-{-# LANGUAGE LambdaCase            #-}
 {-# LANGUAGE NamedFieldPuns        #-}
 module Check (reportIssues) where
 
@@ -8,14 +7,14 @@
 
 import qualified Data.Vector as V
 
-import Capnp.Gen.Capnp.Schema.Pure
+import Capnp.Gen.Capnp.Schema.New
 
 -- | Scan the code generator request for certain issues, and warn the user
 -- if found.
 --
 -- We still assume the input is *valid*, so these are issues regarding things
 -- that our implementation can't handle.
-reportIssues :: CodeGeneratorRequest -> IO ()
+reportIssues :: Parsed CodeGeneratorRequest -> IO ()
 reportIssues CodeGeneratorRequest{nodes} =
     let problemFields =
             [ (displayName, name)
@@ -39,8 +38,8 @@
             , "for more information.\n"
             ]
 
-isPtrValue :: Value -> Bool
-isPtrValue = \case
+isPtrValue :: Parsed Value -> Bool
+isPtrValue (Value v) = case v of
     Value'void      -> False
     Value'bool _    -> False
     Value'int8 _    -> False
diff --git a/cmd/capnpc-haskell/IR/Common.hs b/cmd/capnpc-haskell/IR/Common.hs
--- a/cmd/capnpc-haskell/IR/Common.hs
+++ b/cmd/capnpc-haskell/IR/Common.hs
@@ -7,11 +7,12 @@
 
 import Data.Word
 
-import qualified Capnp.Untyped.Pure as U
-import           Data.Bifunctor     (Bifunctor (..))
-import qualified Data.Map.Strict    as M
-import qualified Data.Vector        as V
-import qualified IR.Name            as Name
+import qualified Capnp.New.Basics  as B
+import           Capnp.Repr.Parsed (Parsed)
+import           Data.Bifunctor    (Bifunctor(..))
+import qualified Data.Map.Strict   as M
+import qualified Data.Vector       as V
+import qualified IR.Name           as Name
 
 newtype TypeId = TypeId Word64
     deriving(Show, Read, Eq, Ord)
@@ -195,7 +196,7 @@
 data Value b r
     = VoidValue
     | WordValue (WordType r) !Word64
-    | PtrValue (PtrType b r) (Maybe U.Ptr)
+    | PtrValue (PtrType b r) (Parsed B.AnyPointer)
     deriving(Show, Eq, Functor)
 
 instance Bifunctor Value where
diff --git a/cmd/capnpc-haskell/IR/Haskell.hs b/cmd/capnpc-haskell/IR/Haskell.hs
--- a/cmd/capnpc-haskell/IR/Haskell.hs
+++ b/cmd/capnpc-haskell/IR/Haskell.hs
@@ -89,6 +89,11 @@
         , typ  :: Type
         , defs :: [InstanceDef]
         }
+    | DcTypeInstance Type Type
+    | DcDeriveInstance
+        { ctx :: [Type]
+        , typ :: Type
+        }
     | DcClass
         { ctx     :: [Type]
         , name    :: Name.LocalQ
@@ -108,6 +113,9 @@
     -- ^ A list of type classes to include in the deriving clause.
     , dataNewtype  :: !Bool
     -- ^ Whether the declarationis a "newtype" or "data" declaration.
+    , dataInstance :: !Bool
+    -- ^ If true, this is actually an instance of a data family, rather
+    -- than a stand-alone type.
     }
     deriving(Show, Read, Eq)
 
@@ -158,10 +166,12 @@
     | TPrim Common.PrimWord
     | TUnit
     | TKindAnnotated Type Type
+    | TString T.Text -- type-level string literal
     deriving(Show, Read, Eq)
 
 data Exp
-    = EApp Exp [Exp]
+    = EVar T.Text
+    | EApp Exp [Exp]
     | EFApp Exp [Exp]
     -- ^ "Functorial" application, i.e. f <$> x <*> y <*> z.
     | EGName Name.GlobalQ
@@ -176,6 +186,7 @@
     | ETypeAnno Exp Type
     | ELambda [Pattern] Exp
     | ERecord Exp [(Name.UnQ, Exp)]
+    | ELabel Name.UnQ
     deriving(Show, Read, Eq)
 
 data Do
diff --git a/cmd/capnpc-haskell/IR/Name.hs b/cmd/capnpc-haskell/IR/Name.hs
--- a/cmd/capnpc-haskell/IR/Name.hs
+++ b/cmd/capnpc-haskell/IR/Name.hs
@@ -28,7 +28,7 @@
     getUnQ GlobalQ{local} = getUnQ local
 
 newtype UnQ = UnQ T.Text
-    deriving(Show, Read, Eq, Ord, IsString)
+    deriving(Show, Read, Eq, Ord, IsString, Semigroup)
 
 newtype NS = NS [T.Text]
     deriving(Show, Read, Eq, Ord)
diff --git a/cmd/capnpc-haskell/IR/New.hs b/cmd/capnpc-haskell/IR/New.hs
new file mode 100644
--- /dev/null
+++ b/cmd/capnpc-haskell/IR/New.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DuplicateRecordFields #-}
+module IR.New where
+
+import qualified Capnp.Repr as R
+import           Data.Word
+import qualified IR.Common  as C
+import qualified IR.Name    as Name
+
+type Brand = C.ListBrand Name.CapnpQ
+
+data File
+    = File
+        { fileId   :: !Word64
+        , decls    :: [Decl]
+        , fileName :: FilePath
+        }
+
+data Decl
+    = TypeDecl
+        { name          :: Name.LocalQ
+        , nodeId        :: !Word64
+        , params        :: [Name.UnQ]
+        , repr          :: R.Repr
+        , extraTypeInfo :: Maybe ExtraTypeInfo
+        }
+    | FieldDecl
+        { containerType :: Name.LocalQ
+        , typeParams    :: [Name.UnQ]
+        , fieldName     :: Name.UnQ
+        , fieldLocType  :: C.FieldLocType Brand Name.CapnpQ
+        }
+    | UnionDecl
+        { name       :: Name.LocalQ
+        , typeParams :: [Name.UnQ]
+        , tagLoc     :: C.DataLoc
+        , variants   :: [UnionVariant]
+        }
+    | MethodDecl
+        { interfaceName :: Name.LocalQ
+        , typeParams    :: [Name.UnQ]
+        , interfaceId   :: !Word64
+        , methodName    :: Name.UnQ
+        , methodId      :: !Word16
+        , paramType     :: C.CompositeType Brand Name.CapnpQ
+        , resultType    :: C.CompositeType Brand Name.CapnpQ
+        }
+    | ParsedInstanceDecl
+        { typeName        :: Name.LocalQ
+        , typeParams      :: [Name.UnQ]
+        , parsedInstances :: ParsedInstances
+        }
+    | ConstDecl
+        { name  :: Name.LocalQ
+        , value :: C.Value Brand Name.CapnpQ
+        }
+
+-- | Data needed for declaring a Parsed instance, and instances
+-- of related classes.
+data ParsedInstances
+    = ParsedStruct
+        { fields       :: [(Name.UnQ, C.FieldLocType Brand Name.CapnpQ)]
+        , hasUnion     :: !Bool
+        , dataCtorName :: Name.LocalQ
+        }
+    | ParsedUnion
+        { variants :: [(Name.UnQ, C.FieldLocType Brand Name.CapnpQ)]
+        }
+
+data ExtraTypeInfo
+    = StructTypeInfo
+        { nWords :: !Word16
+        , nPtrs  :: !Word16
+        }
+    | EnumTypeInfo [Name.UnQ]
+    | InterfaceTypeInfo
+
+data UnionVariant = UnionVariant
+    { variantName  :: Name.UnQ
+    , tagValue     :: !Word16
+    , fieldLocType :: C.FieldLocType Brand Name.CapnpQ
+    }
diff --git a/cmd/capnpc-haskell/Main.hs b/cmd/capnpc-haskell/Main.hs
--- a/cmd/capnpc-haskell/Main.hs
+++ b/cmd/capnpc-haskell/Main.hs
@@ -10,23 +10,26 @@
 import qualified Data.Text.Lazy    as LT
 import qualified Data.Text.Lazy.IO as TIO
 
-import Capnp                       (defaultLimit, getValue)
-import Capnp.Gen.Capnp.Schema.Pure (CodeGeneratorRequest)
+import Capnp                      (defaultLimit, getParsed)
+import Capnp.Gen.Capnp.Schema.New (CodeGeneratorRequest)
+import Capnp.Repr.Parsed          (Parsed)
 
 import qualified Check
 import qualified IR.Flat             as Flat
 import qualified IR.Haskell          as Haskell
 import qualified Trans.CgrToStage1
+import qualified Trans.FlatToNew
 import qualified Trans.FlatToPure
 import qualified Trans.FlatToRaw
 import qualified Trans.HaskellToText
+import qualified Trans.NewToHaskell
 import qualified Trans.PureToHaskell
 import qualified Trans.RawToHaskell
 import qualified Trans.Stage1ToFlat
 
 main :: IO ()
 main = do
-    cgr <- getValue defaultLimit
+    cgr <- getParsed defaultLimit
     Check.reportIssues cgr
     for_ (handleCGR cgr) $ \(path, contents) -> do
         createDirectoryIfMissing True (takeDirectory path)
@@ -34,13 +37,17 @@
             TIO.hPutStr h contents
 
 -- | Convert a 'CodeGeneratorRequest' to a list of files to create.
-handleCGR :: CodeGeneratorRequest -> [(FilePath, LT.Text)]
+handleCGR :: Parsed CodeGeneratorRequest -> [(FilePath, LT.Text)]
 handleCGR cgr =
     let flat =
             Trans.Stage1ToFlat.cgrToCgr $
             Trans.CgrToStage1.cgrToCgr cgr
         modules =
-            handleFlatRaw flat ++ handleFlatPure flat
+            concatMap ($ flat)
+                [ handleFlatRaw
+                , handleFlatPure
+                , handleFlatNew
+                ]
     in
     map
         (\mod ->
@@ -50,7 +57,7 @@
         )
         modules
 
-handleFlatPure, handleFlatRaw :: Flat.CodeGenReq -> [Haskell.Module]
+handleFlatPure, handleFlatRaw, handleFlatNew :: Flat.CodeGenReq -> [Haskell.Module]
 
 handleFlatPure =
     concatMap Trans.PureToHaskell.fileToModules
@@ -59,3 +66,7 @@
 handleFlatRaw =
     concatMap Trans.RawToHaskell.fileToModules
     . Trans.FlatToRaw.cgrToFiles
+
+handleFlatNew =
+    concatMap Trans.NewToHaskell.fileToModules
+    . Trans.FlatToNew.cgrToFiles
diff --git a/cmd/capnpc-haskell/Trans/CgrToStage1.hs b/cmd/capnpc-haskell/Trans/CgrToStage1.hs
--- a/cmd/capnpc-haskell/Trans/CgrToStage1.hs
+++ b/cmd/capnpc-haskell/Trans/CgrToStage1.hs
@@ -17,17 +17,19 @@
 import qualified Data.Text       as T
 import qualified Data.Vector     as V
 
-import Capnp.Classes (toWord)
+import Capnp.Classes     (toWord)
+import Capnp.Fields      (HasUnion(..))
+import Capnp.Repr.Parsed (Parsed)
 
-import qualified Capnp.Gen.Capnp.Schema.Pure as Schema
-import qualified Capnp.Untyped.Pure          as U
-import qualified IR.Common                   as C
-import qualified IR.Name                     as Name
-import qualified IR.Stage1                   as Stage1
+import qualified Capnp.Gen.Capnp.Schema.New as Schema
+import qualified Capnp.New.Basics           as B
+import qualified IR.Common                  as C
+import qualified IR.Name                    as Name
+import qualified IR.Stage1                  as Stage1
 
 type NodeMap v = M.Map Word64 v
 
-nodesToNodes :: NodeMap Schema.Node -> NodeMap Stage1.Node
+nodesToNodes :: NodeMap (Parsed Schema.Node) -> NodeMap Stage1.Node
 nodesToNodes inMap = outMap
   where
     outMap = M.map translate inMap
@@ -75,7 +77,8 @@
                         | Schema.Superclass{id, brand} <- V.toList superclasses
                         ]
                     }
-            Schema.Node'const Schema.Node'const'{ type_, value } -> Stage1.NodeConstant $
+            Schema.Node'const Schema.Node'const'{ type_ = Schema.Type type_, value = Schema.Value value } ->
+              Stage1.NodeConstant $
                 let mismatch = error "ERROR: Constant's type and value do not agree"
                 in case value of
                     Schema.Value'void ->
@@ -108,19 +111,19 @@
                         C.WordValue (C.PrimWord C.PrimFloat64) (toWord v)
 
                     Schema.Value'text v ->
-                        C.PtrValue (C.PrimPtr C.PrimText) $ Just $ U.PtrList $ U.List8 $
+                        C.PtrValue (C.PrimPtr C.PrimText) $ B.PtrList $ B.List8 $
                             encodeUtf8 v
                             & BS.unpack
                             & (++ [0])
                             & V.fromList
                     Schema.Value'data_ v ->
-                        C.PtrValue (C.PrimPtr C.PrimText) $ Just $ U.PtrList $ U.List8 $
+                        C.PtrValue (C.PrimPtr C.PrimText) $ B.PtrList $ B.List8 $
                             BS.unpack v
                             & V.fromList
 
                     Schema.Value'list v ->
                         case type_ of
-                            Schema.Type'list Schema.Type'list'{ elementType } ->
+                            Schema.Type'list (Schema.Type'list' (Schema.Type elementType)) ->
                                 C.PtrValue
                                     (C.ListOf (typeToType outMap elementType))
                                     v
@@ -152,7 +155,7 @@
                             Schema.Type'interface Schema.Type'interface'{ typeId, brand } ->
                                 C.PtrValue
                                     (C.PtrInterface (C.InterfaceType (outMap M.! typeId) (brandToBrand outMap brand)))
-                                    Nothing
+                                    B.PtrNull
                             _ ->
                                 mismatch
 
@@ -165,7 +168,7 @@
                 Stage1.NodeOther
         }
 
-brandToBrand :: NodeMap Stage1.Node -> Schema.Brand -> Stage1.Brand
+brandToBrand :: NodeMap Stage1.Node -> Parsed Schema.Brand -> Stage1.Brand
 brandToBrand nodeMap Schema.Brand{scopes} =
     C.MapBrand $ M.fromList $ mapMaybe scopeToScope (V.toList scopes)
   where
@@ -175,21 +178,22 @@
         Schema.Brand'Scope'bind bindings -> Just
             ( scopeId
             , C.Bind $ bindings
-                & V.map (\case
-                    Schema.Brand'Binding'type_ typ -> case typeToType nodeMap typ of
-                        C.PtrType t ->
-                            C.BoundType t
-                        C.CompositeType t ->
-                            C.BoundType (C.PtrComposite t)
-                        _ -> error
-                            "Invalid schema: a type parameter was set to a non-pointer type."
+                & V.map (\(Schema.Brand'Binding b) -> case b of
+                    Schema.Brand'Binding'type_ (Schema.Type typ) ->
+                        case typeToType nodeMap typ of
+                            C.PtrType t ->
+                                C.BoundType t
+                            C.CompositeType t ->
+                                C.BoundType (C.PtrComposite t)
+                            _ -> error
+                                "Invalid schema: a type parameter was set to a non-pointer type."
 
                     Schema.Brand'Binding'unbound -> C.Unbound
                     Schema.Brand'Binding'unknown' _ -> C.Unbound
                 )
             )
 
-methodToMethod :: NodeMap Stage1.Node -> Schema.Method -> Stage1.Method
+methodToMethod :: NodeMap Stage1.Node -> Parsed Schema.Method -> Stage1.Method
 methodToMethod nodeMap Schema.Method
     { name
     , paramStructType, paramBrand
@@ -201,10 +205,10 @@
         , resultType = structTypeToType nodeMap resultStructType resultBrand
         }
 
-enumerantToName :: Schema.Enumerant -> Name.UnQ
+enumerantToName :: Parsed Schema.Enumerant -> Name.UnQ
 enumerantToName Schema.Enumerant{name} = Name.UnQ name
 
-fieldToField :: NodeMap Stage1.Node -> Schema.Field -> Stage1.Field
+fieldToField :: NodeMap Stage1.Node -> Parsed Schema.Field -> Stage1.Field
 fieldToField nodeMap Schema.Field{name, discriminantValue, union'} =
     Stage1.Field
         { name = Name.UnQ name
@@ -216,9 +220,13 @@
         , locType = getFieldLocType nodeMap union'
         }
 
-getFieldLocType :: NodeMap Stage1.Node -> Schema.Field' -> C.FieldLocType Stage1.Brand Stage1.Node
+getFieldLocType :: NodeMap Stage1.Node -> Parsed (Which Schema.Field) -> C.FieldLocType Stage1.Brand Stage1.Node
 getFieldLocType nodeMap = \case
-    Schema.Field'slot Schema.Field'slot'{type_, defaultValue, offset} ->
+    Schema.Field'slot Schema.Field'slot'
+      { type_ = Schema.Type type_
+      , defaultValue = Schema.Value defaultValue
+      , offset
+      } ->
         case typeToType nodeMap type_ of
             C.VoidType ->
                 C.VoidField
@@ -259,7 +267,7 @@
 -- in a struct's data section.
 --
 -- returns Nothing if the value is a non-word type.
-valueBits :: Schema.Value -> Maybe Word64
+valueBits :: Parsed (Which Schema.Value) -> Maybe Word64
 valueBits = \case
     Schema.Value'bool b    -> Just $ fromIntegral $ fromEnum b
     Schema.Value'int8 n    -> Just $ fromIntegral n
@@ -275,7 +283,7 @@
     Schema.Value'enum n    -> Just $ fromIntegral n
     _                      -> Nothing -- some non-word type.
 
-reqFileToReqFile :: NodeMap Stage1.Node -> Schema.CodeGeneratorRequest'RequestedFile -> Stage1.ReqFile
+reqFileToReqFile :: NodeMap Stage1.Node -> Parsed Schema.CodeGeneratorRequest'RequestedFile -> Stage1.ReqFile
 reqFileToReqFile nodeMap Schema.CodeGeneratorRequest'RequestedFile{id, filename} =
     let Stage1.Node{nodeCommon=Stage1.NodeCommon{nodeNested}} = nodeMap M.! id
     in Stage1.ReqFile
@@ -286,7 +294,7 @@
             }
         }
 
-cgrToCgr :: Schema.CodeGeneratorRequest -> Stage1.CodeGenReq
+cgrToCgr :: Parsed Schema.CodeGeneratorRequest -> Stage1.CodeGenReq
 cgrToCgr Schema.CodeGeneratorRequest{nodes, requestedFiles} =
     Stage1.CodeGenReq{allFiles, reqFiles}
   where
@@ -311,12 +319,12 @@
 structTypeToType
     :: NodeMap Stage1.Node
     -> Word64
-    -> Schema.Brand
+    -> Parsed Schema.Brand
     -> C.CompositeType Stage1.Brand Stage1.Node
 structTypeToType nodeMap typeId brand =
     C.StructType (nodeMap M.! typeId) (brandToBrand nodeMap brand)
 
-typeToType :: NodeMap Stage1.Node -> Schema.Type -> C.Type Stage1.Brand Stage1.Node
+typeToType :: NodeMap Stage1.Node -> Parsed (Which Schema.Type) -> C.Type Stage1.Brand Stage1.Node
 typeToType nodeMap = \case
     Schema.Type'void       -> C.VoidType
     Schema.Type'bool       -> C.WordType $ C.PrimWord C.PrimBool
@@ -332,8 +340,8 @@
     Schema.Type'float64    -> C.WordType $ C.PrimWord C.PrimFloat64
     Schema.Type'text       -> C.PtrType $ C.PrimPtr C.PrimText
     Schema.Type'data_      -> C.PtrType $ C.PrimPtr C.PrimData
-    Schema.Type'list Schema.Type'list'{elementType} ->
-        C.PtrType $ C.ListOf (typeToType nodeMap elementType)
+    Schema.Type'list Schema.Type'list'{elementType = Schema.Type t} ->
+        C.PtrType $ C.ListOf (typeToType nodeMap t)
     -- nb. enum has a brand field, but it's not actually use for anything.
     Schema.Type'enum Schema.Type'enum'{typeId, brand = _ } ->
         C.WordType $ C.EnumType $ nodeMap M.! typeId
@@ -342,7 +350,7 @@
         C.CompositeType $ structTypeToType nodeMap typeId brand
     Schema.Type'interface Schema.Type'interface'{typeId, brand} ->
         C.PtrType $ C.PtrInterface (C.InterfaceType (nodeMap M.! typeId) (brandToBrand nodeMap brand))
-    Schema.Type'anyPointer p ->
+    Schema.Type'anyPointer (Schema.Type'anyPointer' p) ->
         case p of
             Schema.Type'anyPointer'parameter Schema.Type'anyPointer'parameter'{scopeId, parameterIndex} ->
                 let paramScope = nodeMap M.! scopeId in
@@ -351,7 +359,8 @@
                     , paramIndex = fromIntegral parameterIndex
                     , paramName = Stage1.nodeParams (Stage1.nodeCommon paramScope) V.! fromIntegral parameterIndex
                     }
-            Schema.Type'anyPointer'unconstrained unconstrained  ->
+            Schema.Type'anyPointer'unconstrained
+              (Schema.Type'anyPointer'unconstrained' unconstrained) ->
                 C.PtrType $ C.PrimPtr $ C.PrimAnyPtr $ case unconstrained of
                     Schema.Type'anyPointer'unconstrained'anyKind    -> C.Ptr
                     Schema.Type'anyPointer'unconstrained'struct     -> C.Struct
diff --git a/cmd/capnpc-haskell/Trans/FlatToNew.hs b/cmd/capnpc-haskell/Trans/FlatToNew.hs
new file mode 100644
--- /dev/null
+++ b/cmd/capnpc-haskell/Trans/FlatToNew.hs
@@ -0,0 +1,131 @@
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns        #-}
+{-# LANGUAGE OverloadedStrings     #-}
+module Trans.FlatToNew (cgrToFiles) where
+
+import Data.Bifunctor (Bifunctor(..))
+
+import qualified Capnp.Repr as R
+import           Data.Maybe (isJust)
+import qualified IR.Common  as C
+import qualified IR.Flat    as Flat
+import qualified IR.Name    as Name
+import qualified IR.New     as New
+
+cgrToFiles :: Flat.CodeGenReq -> [New.File]
+cgrToFiles = map fileToFile . Flat.reqFiles
+
+fileToFile :: Flat.File -> New.File
+fileToFile Flat.File{fileId, fileName, nodes} =
+    New.File
+        { fileId
+        , fileName
+        , decls = concatMap nodeToDecls nodes
+        }
+
+mapTypes :: (Bifunctor p, Functor f) => p (f Flat.Node) Flat.Node -> p (f Name.CapnpQ) Name.CapnpQ
+mapTypes = C.bothMap (\Flat.Node{name} -> name)
+
+nodeToDecls :: Flat.Node -> [New.Decl]
+nodeToDecls Flat.Node{nodeId, name=Name.CapnpQ{local}, typeParams, union_} =
+    let mkType repr extraTypeInfo =
+            New.TypeDecl
+                { name = local
+                , nodeId
+                , params = map C.paramName typeParams
+                , repr
+                , extraTypeInfo
+                }
+        mkField field =
+            fieldToDecl local typeParams field
+
+        mkMethod methodId Flat.Method{name, paramType, resultType} =
+            New.MethodDecl
+                { interfaceName = local
+                , interfaceId = nodeId
+                , typeParams = map C.paramName typeParams
+                , methodName = name
+                , methodId
+                , paramType = mapTypes paramType
+                , resultType = mapTypes resultType
+                }
+
+        parsedStructNode fields hasUnion isGroup =
+            New.ParsedInstanceDecl
+                { typeName = local
+                , typeParams = map C.paramName typeParams
+                , parsedInstances = New.ParsedStruct
+                    { fields =
+                        [ ( Name.getUnQ fieldName
+                          , mapTypes fieldLocType
+                          )
+                        | Flat.Field{fieldName, fieldLocType} <- fields
+                        ]
+                    , hasUnion
+                    , dataCtorName = dataCtorName isGroup
+                    }
+                }
+
+        parsedUnionNode Flat.Union{variants} =
+            New.ParsedInstanceDecl
+                { typeName = local
+                , typeParams = map C.paramName typeParams
+                , parsedInstances = New.ParsedUnion
+                    { variants =
+                        [ ( Name.getUnQ fieldName
+                          , mapTypes fieldLocType
+                          )
+                        | Flat.Variant{field=Flat.Field{fieldName, fieldLocType}} <- variants
+                        ]
+                    }
+                }
+
+        dataCtorName isGroup
+            | isGroup = Name.mkSub local ""
+            | otherwise = local
+
+        structUnionNodes Nothing = []
+        structUnionNodes (Just union@Flat.Union{tagOffset, variants}) =
+            [ New.UnionDecl
+                { name = local
+                , typeParams = map C.paramName typeParams
+                , tagLoc = C.DataLoc
+                    { dataIdx = fromIntegral $ tagOffset `div` 4
+                    , dataOff = fromIntegral $ (tagOffset `mod` 4) * 16
+                    , dataDef = 0
+                    }
+                , variants = map variantToVariant variants
+                }
+            , parsedUnionNode union
+            ]
+    in
+    case union_ of
+        Flat.Other       -> []
+        Flat.Constant { value } ->
+            [ New.ConstDecl { name = local, value = mapTypes value } ]
+        Flat.Enum enumerants ->
+            [ mkType (R.Data R.Sz16) $ Just $ New.EnumTypeInfo enumerants ]
+        Flat.Interface{methods} ->
+            mkType (R.Ptr (Just R.Cap)) (Just New.InterfaceTypeInfo)
+            : zipWith mkMethod [0..] methods
+        Flat.Struct{isGroup, fields, union, dataWordCount = nWords, pointerCount = nPtrs} ->
+            mkType (R.Ptr (Just R.Struct)) (Just New.StructTypeInfo { nWords, nPtrs })
+            : parsedStructNode fields (isJust union) isGroup
+            : (structUnionNodes union ++ map mkField fields)
+
+fieldToDecl :: Name.LocalQ -> [C.TypeParamRef Flat.Node] -> Flat.Field -> New.Decl
+fieldToDecl containerType typeParams Flat.Field{fieldName, fieldLocType} =
+    New.FieldDecl
+        { containerType
+        , typeParams = map C.paramName typeParams
+        , fieldName = Name.getUnQ fieldName
+        , fieldLocType = mapTypes fieldLocType
+        }
+
+variantToVariant :: Flat.Variant -> New.UnionVariant
+variantToVariant Flat.Variant{tagValue, field = Flat.Field{fieldName, fieldLocType}} =
+    New.UnionVariant
+        { variantName = Name.getUnQ fieldName
+        , tagValue
+        , fieldLocType = mapTypes fieldLocType
+        }
diff --git a/cmd/capnpc-haskell/Trans/HaskellToText.hs b/cmd/capnpc-haskell/Trans/HaskellToText.hs
--- a/cmd/capnpc-haskell/Trans/HaskellToText.hs
+++ b/cmd/capnpc-haskell/Trans/HaskellToText.hs
@@ -6,6 +6,7 @@
 import Data.List                    (intersperse)
 import Data.String                  (fromString)
 import Text.PrettyPrint.Leijen.Text (hcat, vcat)
+import Trans.ToHaskellCommon        (eStd_)
 
 import qualified Data.Text                    as T
 import qualified Data.Text.Lazy               as LT
@@ -46,6 +47,7 @@
         , "{-# OPTIONS_GHC -Wno-unused-matches #-}"
         , "{-# OPTIONS_GHC -Wno-orphans #-}"
         , "{-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}"
+        , "{-# OPTIONS_GHC -Wno-name-shadowing #-}"
         , hcat
             [ "module "
             , PP.textStrict $ mconcat $ intersperse "." $ map Name.renderUnQ modName
@@ -88,6 +90,16 @@
         , format (TCtx ctx typ)
         , whereBlock defs
         ]
+    format (DcTypeInstance alias orig) = hcat
+        [ "type instance "
+        , format alias
+        , " = "
+        , format orig
+        ]
+    format (DcDeriveInstance ctx typ) = hcat
+        [ "deriving instance "
+        , format $ TCtx ctx typ
+        ]
     format DcClass{ctx, name, params, funDeps, decls} = hcat
         [ "class "
         , format $
@@ -141,11 +153,14 @@
         ]
 
 instance Format DataDecl where
-    format Data{dataName, typeArgs, dataVariants, dataNewtype, derives} = vcat
+    format Data{dataName, typeArgs, dataVariants, dataInstance, dataNewtype, derives} = vcat
         [ hcat
             [ if dataNewtype
                 then "newtype "
                 else "data "
+            , if dataInstance
+                then "instance "
+                else ""
             , format dataName
             , " "
             , mconcat $ intersperse " " $ map format typeArgs
@@ -168,12 +183,13 @@
         ]
 
 instance Format Exp where
+    format (EApp e []) = format e
     format (EApp e es) = hcat
         [ "("
         , hcat $ intersperse " " $ map format (e:es)
         , ")"
         ]
-    format (EFApp e []) = format e
+    format (EFApp e []) = format (EApp (eStd_ "pure") [e])
     format (EFApp e es) = hcat
         [ "("
         , format e
@@ -181,6 +197,7 @@
         ]
     format (EGName e) = format e
     format (ELName e) = format e
+    format (EVar name) = PP.textStrict name
     format (EInt n) = fromString (show n)
     format (EDo ds ex) = vcat
         [ "(do"
@@ -215,6 +232,7 @@
             [ hcat [ format name, " = ", format value ]
             | (name, value) <- updates
             ]
+    format (ELabel name) = "#" <> format name
 
 instance Format Do where
     format (DoBind var ex) = format var <> " <- " <> format ex
@@ -256,6 +274,7 @@
     format (TGName ty) = format ty
     format (TLName ty) = format ty
     format (TVar txt)  = PP.textStrict txt
+    format (TApp t []) = format t
     format (TApp f xs) =
         "(" <> mconcat (intersperse " " $ map format (f:xs)) <> ")"
     format (TFn types) =
@@ -267,6 +286,7 @@
     format TUnit = "()"
     format (TKindAnnotated ty kind) =
         "(" <> format ty <> " :: " <> format kind <> ")"
+    format (TString str) = fromString $ show str
 
 instance Format Name.GlobalQ where
     format Name.GlobalQ{local, globalNS=Name.NS parts} =
diff --git a/cmd/capnpc-haskell/Trans/NewToHaskell.hs b/cmd/capnpc-haskell/Trans/NewToHaskell.hs
new file mode 100644
--- /dev/null
+++ b/cmd/capnpc-haskell/Trans/NewToHaskell.hs
@@ -0,0 +1,906 @@
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE LambdaCase            #-}
+{-# LANGUAGE NamedFieldPuns        #-}
+{-# LANGUAGE OverloadedStrings     #-}
+module Trans.NewToHaskell
+    ( fileToModules
+    ) where
+
+import qualified Capnp.Repr            as R
+import           Data.String           (IsString(fromString))
+import           Data.Word
+import qualified IR.Common             as C
+import qualified IR.Haskell            as Hs
+import qualified IR.Name               as Name
+import qualified IR.New                as New
+import           Trans.ToHaskellCommon
+
+imports :: [Hs.Import]
+imports =
+    [ Hs.ImportAs { importAs = "R", parts = ["Capnp", "Repr"] }
+    , Hs.ImportAs { importAs = "RP", parts = ["Capnp", "Repr", "Parsed"] }
+    , Hs.ImportAs { importAs = "Basics", parts = ["Capnp", "New", "Basics"] }
+    , Hs.ImportAs { importAs = "OL", parts = ["GHC", "OverloadedLabels"] }
+    , Hs.ImportAs { importAs = "GH", parts = ["Capnp", "GenHelpers", "New"] }
+    , Hs.ImportAs { importAs = "C", parts = ["Capnp", "New", "Classes"] }
+    , Hs.ImportAs { importAs = "Generics", parts = ["GHC", "Generics"] }
+    , Hs.ImportAs { importAs = "BS", parts = ["Capnp", "GenHelpers", "ReExports", "Data", "ByteString"] }
+    ]
+
+fileToModules :: New.File -> [Hs.Module]
+fileToModules file =
+    [ fileToMainModule file
+    , fileToModuleAlias file
+    ]
+
+fileToMainModule :: New.File -> Hs.Module
+fileToMainModule file@New.File{fileName} =
+    fixImports $ Hs.Module
+        { modName = ["Capnp", "Gen"] ++ makeModName fileName ++ ["New"]
+        , modLangPragmas =
+            [ "TypeFamilies"
+            , "DataKinds"
+            , "DeriveGeneric"
+            , "DuplicateRecordFields"
+            , "EmptyDataDeriving"
+            , "FlexibleInstances"
+            , "MultiParamTypeClasses"
+            , "UndecidableInstances"
+            , "OverloadedLabels"
+            , "OverloadedStrings"
+            , "StandaloneDeriving"
+            , "RecordWildCards"
+            ]
+        , modExports = Nothing
+        , modImports = imports
+        , modDecls = fileToDecls file
+        }
+
+fileToModuleAlias :: New.File -> Hs.Module
+fileToModuleAlias New.File{fileId,fileName} =
+    let reExport = ["Capnp", "Gen"] ++ makeModName fileName ++ ["New"]
+    in Hs.Module
+        { modName = idToModule fileId ++ ["New"]
+        , modLangPragmas = []
+        , modExports = Just [Hs.ExportMod reExport]
+        , modImports = [ Hs.ImportAll { parts = reExport } ]
+        , modDecls = []
+        }
+
+fileToDecls :: New.File -> [Hs.Decl]
+fileToDecls New.File{fileId, decls} =
+    concatMap (declToDecls fileId) decls
+
+
+declToDecls :: Word64 -> New.Decl -> [Hs.Decl]
+declToDecls thisMod decl =
+    case decl of
+        New.TypeDecl {name, params, repr, extraTypeInfo} ->
+            let dataName = Name.localToUnQ name
+                typeArgs = toTVars params
+                typ = case typeArgs of
+                    [] -> tuName dataName
+                    _  -> Hs.TApp (tuName dataName) typeArgs
+            in
+            [ Hs.DcData Hs.Data
+                { dataName
+                , typeArgs
+                , dataVariants =
+                    case extraTypeInfo of
+                        Just (New.EnumTypeInfo variants) ->
+                            [ Hs.DataVariant
+                                { dvCtorName = Name.localToUnQ $ Name.mkSub name variantName
+                                , dvArgs = Hs.APos []
+                                }
+                            | variantName <- variants
+                            ]
+                            ++
+                            [ declareUnknownVariant name ]
+                        _ -> []
+                , derives =
+                    case extraTypeInfo of
+                        Just New.EnumTypeInfo {} -> [ "Std_.Eq", "Std_.Show" ]
+                        _                        -> []
+                , dataNewtype = False
+                , dataInstance = False
+                }
+            , Hs.DcTypeInstance
+                (Hs.TApp (tgName ["R"] "ReprFor") [typ])
+                (toType repr)
+            ] ++
+            let ctx = paramsContext typeArgs in
+            case extraTypeInfo of
+                Just New.StructTypeInfo{nWords, nPtrs} ->
+                    [ Hs.DcInstance
+                        { ctx
+                        , typ = Hs.TApp (tgName ["C"] "TypedStruct") [typ]
+                        , defs =
+                            [ Hs.IdValue Hs.DfValue
+                                { name = "numStructWords"
+                                , params = []
+                                , value = Hs.EInt $ fromIntegral nWords
+                                }
+                            , Hs.IdValue Hs.DfValue
+                                { name = "numStructPtrs"
+                                , params = []
+                                , value = Hs.EInt $ fromIntegral nPtrs
+                                }
+                            ]
+                        }
+                    , Hs.DcInstance
+                        { ctx
+                        , typ = Hs.TApp (tgName ["C"] "Allocate") [typ]
+                        , defs =
+                            [ Hs.IdType $
+                                Hs.TypeAlias "AllocHint" [typ] Hs.TUnit
+                            , Hs.IdValue Hs.DfValue
+                                { name = "new"
+                                , params = [Hs.PVar "_"]
+                                , value = egName ["C"] "newTypedStruct"
+                                }
+                            ]
+                        }
+                    , Hs.DcInstance
+                        { ctx
+                        , typ = Hs.TApp
+                            (tgName ["C"] "EstimateAlloc")
+                            [ typ, Hs.TApp (tgName ["C"] "Parsed") [typ] ]
+                        , defs = []
+                        }
+                    , Hs.DcInstance
+                        { ctx
+                        , typ = Hs.TApp (tgName ["C"] "AllocateList") [typ]
+                        , defs =
+                            [ Hs.IdType $ Hs.TypeAlias "ListAllocHint" [typ] (tStd_ "Int")
+                            , Hs.IdValue Hs.DfValue
+                                { name = "newList"
+                                , params = []
+                                , value = egName ["C"] "newTypedStructList"
+                                }
+                            ]
+                        }
+                    , Hs.DcInstance
+                        { ctx
+                        , typ = Hs.TApp
+                            (tgName ["C"] "EstimateListAlloc")
+                            [typ, Hs.TApp (tgName ["C"] "Parsed") [typ]]
+                        , defs = []
+                        }
+                    ]
+                Just (New.EnumTypeInfo variants) ->
+                    [ Hs.DcInstance
+                        { ctx
+                        , typ = Hs.TApp (tStd_ "Enum") [typ]
+                        , defs =
+                            [ Hs.IdValue Hs.DfValue
+                                { name = "toEnum"
+                                , params = [Hs.PVar "n_"]
+                                , value =
+                                    Hs.ECase (euName "n_") $
+                                        [ ( Hs.PInt i
+                                          , Hs.ELName (Name.mkSub name variantName)
+                                          )
+                                        | (i, variantName) <- zip [0..] variants
+                                        ] ++
+                                        [ ( Hs.PVar "tag_"
+                                          , Hs.EApp
+                                                (Hs.ELName (unknownVariant name))
+                                                [Hs.EApp (eStd_ "fromIntegral") [euName "tag_"]]
+                                          )
+                                        ]
+
+                                }
+                            , Hs.IdValue Hs.DfValue
+                                { name = "fromEnum"
+                                , params = [Hs.PVar "value_"]
+                                , value =
+                                    Hs.ECase (euName "value_") $
+                                        [ ( Hs.PLCtor (Name.mkSub name variantName) []
+                                          , Hs.EInt i
+                                          )
+                                        | (i, variantName) <- zip [0..] variants
+                                        ] ++
+                                        [ ( Hs.PLCtor (unknownVariant name) [Hs.PVar "tag_"]
+                                          , Hs.EApp (eStd_ "fromIntegral") [euName "tag_"]
+                                          )
+                                        ]
+                                }
+                            ]
+                        }
+                    , Hs.DcInstance
+                        { ctx
+                        , typ = Hs.TApp (tgName ["C"] "IsWord") [typ]
+                        , defs =
+                            [ Hs.IdValue Hs.DfValue
+                                { name = "fromWord"
+                                , params = [Hs.PVar "w_"]
+                                , value = Hs.EApp (eStd_ "toEnum") [Hs.EApp (eStd_ "fromIntegral") [Hs.EVar "w_"]]
+                                }
+                            , Hs.IdValue Hs.DfValue
+                                { name = "toWord"
+                                , params = [Hs.PVar "v_"]
+                                , value = Hs.EApp (eStd_ "fromIntegral") [Hs.EApp (eStd_ "fromEnum") [Hs.EVar "v_"]]
+                                }
+                            ]
+                        }
+                    , Hs.DcInstance
+                        { ctx
+                        , typ = Hs.TApp (tgName ["C"] "Parse") [typ, typ]
+                        , defs =
+                            [ Hs.IdValue Hs.DfValue
+                                { name = "parse"
+                                , params = []
+                                , value = egName ["GH"] "parseEnum"
+                                }
+                            , Hs.IdValue Hs.DfValue
+                                { name = "encode"
+                                , params = []
+                                , value = egName ["GH"] "encodeEnum"
+                                }
+                            ]
+                        }
+                    , Hs.DcInstance
+                        { ctx
+                        , typ = Hs.TApp (tgName ["C"] "AllocateList") [typ]
+                        , defs =
+                            [ Hs.IdType $ Hs.TypeAlias "ListAllocHint" [typ] (tStd_ "Int")
+                            ]
+                        }
+                    , Hs.DcInstance
+                        { ctx
+                        , typ = Hs.TApp (tgName ["C"] "EstimateListAlloc") [typ, typ]
+                        , defs = []
+                        }
+                    ]
+                Just New.InterfaceTypeInfo ->
+                    defineInterfaceParse name params
+                Nothing -> []
+        New.FieldDecl{containerType, typeParams, fieldName, fieldLocType} ->
+            let tVars = toTVars typeParams
+                ctx = paramsContext tVars
+                labelType = Hs.TString (Name.renderUnQ fieldName)
+                parentType = Hs.TApp (Hs.TLName containerType) tVars
+                childType = fieldLocTypeToType thisMod fieldLocType
+                fieldKind = Hs.TGName $ fieldLocTypeToFieldKind fieldLocType
+            in
+            [ Hs.DcInstance
+                { ctx
+                , typ = Hs.TApp
+                    (tgName ["GH"] "HasField")
+                    [labelType, fieldKind, parentType, childType]
+                , defs =
+                    [ Hs.IdValue Hs.DfValue
+                        { name = "fieldByLabel"
+                        , value = fieldLocTypeToField fieldLocType
+                        , params = []
+                        }
+                    ]
+                }
+            ]
+        New.UnionDecl{name, typeParams, tagLoc, variants} ->
+            let tVars = toTVars typeParams
+                typ = Hs.TApp (Hs.TLName name) tVars
+            in
+            Hs.DcInstance
+                { ctx = paramsContext tVars
+                , typ = Hs.TApp (tgName ["GH"] "HasUnion") [typ]
+                , defs =
+                    [ Hs.IdValue Hs.DfValue
+                        { name = "unionField"
+                        , params = []
+                        , value = fieldLocTypeToField $ C.DataField
+                            tagLoc
+                            (C.PrimWord (C.PrimInt (C.IntType C.Unsigned C.Sz16)))
+                        }
+                    , defineRawData thisMod name tVars variants
+                    , defineInternalWhich name variants
+                    , Hs.IdData Hs.Data
+                        { dataName = "Which"
+                        , typeArgs = [typ]
+                        , dataVariants = []
+                        , derives = []
+                        , dataNewtype = False
+                        , dataInstance = False
+                        }
+                    ]
+                }
+            : concatMap (variantToDecls thisMod name typeParams) variants
+        New.MethodDecl
+                { interfaceName
+                , typeParams
+                , interfaceId
+                , methodName
+                , methodId
+                , paramType
+                , resultType
+                } ->
+            let tVars = toTVars typeParams in
+            [ Hs.DcInstance
+                { ctx = paramsContext tVars
+                , typ = Hs.TApp
+                    (tgName ["GH"] "HasMethod")
+                    [ Hs.TString (Name.renderUnQ methodName)
+                    , Hs.TApp (Hs.TLName interfaceName) tVars
+                    , compositeTypeToType thisMod paramType
+                    , compositeTypeToType thisMod resultType
+                    ]
+                , defs =
+                    [ Hs.IdValue Hs.DfValue
+                        { name = "methodByLabel"
+                        , params = []
+                        , value = Hs.EApp
+                            (egName ["GH"] "Method")
+                            [ Hs.EInt $ fromIntegral interfaceId
+                            , Hs.EInt $ fromIntegral methodId
+                            ]
+                        }
+                    ]
+                }
+            ]
+        New.ParsedInstanceDecl{ typeName, typeParams, parsedInstances } ->
+            defineParsedInstances thisMod typeName typeParams parsedInstances
+        New.ConstDecl { name, value } ->
+            defineConstant thisMod name value
+
+defineConstant thisMod localName value =
+    let name = Name.localToUnQ localName in
+    case value of
+        C.VoidValue ->
+            [ Hs.DcValue
+                { typ = Hs.TUnit
+                , def = Hs.DfValue
+                    { name
+                    , params = []
+                    , value = Hs.ETup []
+                    }
+                }
+            ]
+        C.WordValue t v ->
+            [ Hs.DcValue
+                { typ = typeToType thisMod (C.WordType t)
+                , def = Hs.DfValue
+                    { name
+                    , params = []
+                    , value = Hs.EApp (egName ["C"] "fromWord") [Hs.EInt (fromIntegral v)]
+                    }
+                }
+            ]
+        C.PtrValue t v ->
+            [ Hs.DcValue
+                { typ = Hs.TApp (tgName ["R"] "Raw") [tgName ["GH"] "Const", typeToType thisMod (C.PtrType t)]
+                , def = Hs.DfValue
+                    { name
+                    , params = []
+                    , value = Hs.EApp
+                        (egName ["GH"] "getPtrConst")
+                        [Hs.ETypeAnno (Hs.EBytes (makePtrBytes v)) (tgName ["BS"] "ByteString")]
+                    }
+                }
+            ]
+
+defineRawData thisMod name tVars variants =
+    Hs.IdData Hs.Data
+        { dataName = "RawWhich"
+        , typeArgs =
+            [ Hs.TVar "mut_"
+            , Hs.TApp (Hs.TVar $ Name.renderUnQ $ Name.localToUnQ name) tVars
+            ]
+
+        , dataNewtype = False
+        , dataInstance = False
+        , dataVariants =
+            [ Hs.DataVariant
+                { dvCtorName =
+                    "RW_" <> Name.localToUnQ (Name.mkSub name variantName)
+                , dvArgs = Hs.APos
+                    [ Hs.TApp
+                        (tReprName "Raw")
+                        [ Hs.TVar "mut_"
+                        , fieldLocTypeToType thisMod fieldLocType
+                        ]
+                    ]
+                }
+            | New.UnionVariant{variantName, fieldLocType} <- variants
+            ]
+            ++
+            [ Hs.DataVariant
+                { dvCtorName = "RW_" <> Name.localToUnQ (unknownVariant name)
+                , dvArgs = Hs.APos [tStd_ "Word16"]
+                }
+            ]
+
+        -- TODO: derive Show, Read, Eq, Generic, to be feature complete with the code generated by RawToHaskell.
+        -- This will require a stand-alone deriving declaration
+        , derives = []
+        }
+
+unknownVariant :: Name.LocalQ -> Name.LocalQ
+unknownVariant name = Name.mkSub name "unknown'"
+
+rawCtorName :: Name.LocalQ -> Name.UnQ
+rawCtorName local = "RW_" <> Name.localToUnQ local
+
+
+defineInternalWhich structName variants =
+    Hs.IdValue Hs.DfValue
+        { name = "internalWhich"
+        , params = [Hs.PVar "tag_", Hs.PVar "struct_"]
+        , value =
+            Hs.ECase (Hs.ELName "tag_") $
+                [ ( Hs.PInt $ fromIntegral tagValue
+                  , Hs.EFApp
+                        (euName $ rawCtorName (Name.mkSub structName variantName))
+                        [ Hs.EApp
+                            (egName ["GH"] "readVariant")
+                            [ Hs.ELabel variantName
+                            , euName "struct_"
+                            ]
+                        ]
+                  )
+                | New.UnionVariant{tagValue, variantName} <- variants
+                ]
+                ++
+                [ ( Hs.PVar "_"
+                  , Hs.EApp (eStd_ "pure")
+                        [ Hs.EApp
+                            (euName $ rawCtorName (unknownVariant structName))
+                            [euName "tag_"]
+                        ]
+                  )
+                ]
+        }
+
+variantToDecls thisMod containerType typeParams New.UnionVariant{tagValue, variantName, fieldLocType} =
+    let tVars = toTVars typeParams
+        ctx = paramsContext tVars
+        labelType = Hs.TString (Name.renderUnQ variantName)
+        parentType = Hs.TApp (Hs.TLName containerType) tVars
+        childType = fieldLocTypeToType thisMod fieldLocType
+        fieldKind = Hs.TGName $ fieldLocTypeToFieldKind fieldLocType
+    in
+    [ Hs.DcInstance
+        { ctx
+        , typ = Hs.TApp
+            (tgName ["GH"] "HasVariant")
+            [labelType, fieldKind, parentType, childType]
+        , defs =
+            [ Hs.IdValue Hs.DfValue
+                { name = "variantByLabel"
+                , params = []
+                , value = Hs.EApp
+                    (egName ["GH"] "Variant")
+                    [ fieldLocTypeToField fieldLocType
+                    , Hs.EInt (fromIntegral tagValue)
+                    ]
+                }
+            ]
+        }
+    ]
+
+paramsContext :: [Hs.Type] -> [Hs.Type]
+paramsContext = map paramConstraints
+
+-- | Constraints required for a capnproto type parameter. The returned
+-- expression has kind 'Constraint'.
+paramConstraints :: Hs.Type -> Hs.Type
+paramConstraints t =
+    Hs.TApp (tgName ["GH"] "TypeParam") [t]
+
+tCapnp :: Word64 -> Name.CapnpQ -> Hs.Type
+tCapnp thisMod Name.CapnpQ{local, fileId}
+    | thisMod == fileId = Hs.TLName local
+    | otherwise = tgName (map Name.renderUnQ $ idToModule fileId ++ ["New"]) local
+
+fieldLocTypeToType :: Word64 -> C.FieldLocType New.Brand Name.CapnpQ -> Hs.Type
+fieldLocTypeToType thisMod = \case
+    C.VoidField     -> Hs.TUnit
+    C.DataField _ t -> wordTypeToType thisMod t
+    C.PtrField _ t  -> ptrTypeToType thisMod t
+    C.HereField t   -> compositeTypeToType thisMod t
+
+fieldLocTypeToFieldKind :: C.FieldLocType b n -> Name.GlobalQ
+fieldLocTypeToFieldKind = \case
+    C.HereField _ -> gName ["GH"] "Group"
+    _             -> gName ["GH"] "Slot"
+
+wordTypeToType thisMod = \case
+    C.EnumType t -> tCapnp thisMod t
+    C.PrimWord t -> primWordToType t
+
+primWordToType = \case
+    C.PrimInt t   -> intTypeToType t
+    C.PrimFloat32 -> tStd_ "Float"
+    C.PrimFloat64 -> tStd_ "Double"
+    C.PrimBool    -> tStd_ "Bool"
+
+intTypeToType (C.IntType sign size) =
+    let prefix = case sign of
+            C.Signed   -> "Int"
+            C.Unsigned -> "Word"
+    in
+    tStd_ $ fromString $ prefix ++ show (C.sizeBits size)
+
+wordTypeBits = \case
+    C.EnumType _                              -> 16
+    C.PrimWord (C.PrimInt (C.IntType _ size)) -> C.sizeBits size
+    C.PrimWord C.PrimFloat32                  -> 32
+    C.PrimWord C.PrimFloat64                  -> 64
+    C.PrimWord C.PrimBool                     -> 1
+
+ptrTypeToType thisMod = \case
+    C.ListOf t       -> Hs.TApp (tgName ["R"] "List") [typeToType thisMod t]
+    C.PrimPtr t      -> primPtrToType t
+    C.PtrComposite t -> compositeTypeToType thisMod t
+    C.PtrInterface t -> interfaceTypeToType thisMod t
+    C.PtrParam t     -> typeParamToType t
+
+typeToType thisMod = \case
+    C.CompositeType t -> compositeTypeToType thisMod t
+    C.VoidType        -> Hs.TUnit
+    C.WordType t      -> wordTypeToType thisMod t
+    C.PtrType t       -> ptrTypeToType thisMod t
+
+primPtrToType = \case
+    C.PrimText     -> tgName ["Basics"] "Text"
+    C.PrimData     -> tgName ["Basics"] "Data"
+    C.PrimAnyPtr t -> anyPtrToType t
+
+anyPtrToType :: C.AnyPtr -> Hs.Type
+anyPtrToType t = tgName ["Basics"] $ case t of
+    C.Struct -> "AnyStruct"
+    C.List   -> "AnyList"
+    C.Cap    -> "Capability"
+    C.Ptr    -> "AnyPointer"
+
+compositeTypeToType thisMod (C.StructType    name brand) = namedType thisMod name brand
+interfaceTypeToType thisMod (C.InterfaceType name brand) = namedType thisMod name brand
+
+typeParamToType = Hs.TVar . Name.typeVarName . C.paramName
+
+namedType :: Word64 -> Name.CapnpQ -> C.ListBrand Name.CapnpQ -> Hs.Type
+namedType thisMod name (C.ListBrand [])   = tCapnp thisMod name
+namedType thisMod name (C.ListBrand args) =
+    Hs.TApp
+        (tCapnp thisMod name)
+        [ typeToType thisMod (C.PtrType t) | t <- args ]
+
+fieldLocTypeToField = \case
+    C.DataField loc wt ->
+        let shift = C.dataOff loc
+            index = C.dataIdx loc
+            nbits = wordTypeBits wt
+            defaultValue = C.dataDef loc
+        in
+        Hs.EApp
+            (egName ["GH"] "dataField")
+            [ Hs.EInt $ fromIntegral shift
+            , Hs.EInt $ fromIntegral index
+            , Hs.EInt $ fromIntegral nbits
+            , Hs.EInt $ fromIntegral defaultValue
+            ]
+    C.PtrField idx _ ->
+        Hs.EApp (egName ["GH"] "ptrField") [Hs.EInt $ fromIntegral idx]
+    C.VoidField ->
+        egName ["GH"] "voidField"
+    C.HereField _ ->
+        egName ["GH"] "groupField"
+
+
+class ToType a where
+    toType :: a -> Hs.Type
+
+instance ToType R.Repr where
+    toType (R.Ptr p)  = rApp "Ptr" [toType p]
+    toType (R.Data d) = rApp "Data" [toType d]
+
+instance ToType a => ToType (Maybe a) where
+    toType Nothing  = tStd_ "Nothing"
+    toType (Just a) = Hs.TApp (tStd_ "Just") [toType a]
+
+instance ToType R.PtrRepr where
+    toType R.Cap      = tReprName "Cap"
+    toType (R.List r) = rApp "List" [toType r]
+    toType R.Struct   = tReprName "Struct"
+
+instance ToType R.ListRepr where
+    toType (R.ListNormal nl) = rApp "ListNormal" [toType nl]
+    toType R.ListComposite   = tReprName "ListComposite"
+
+instance ToType R.NormalListRepr where
+    toType (R.ListData r) = rApp "ListData" [toType r]
+    toType R.ListPtr      = tReprName "ListPtr"
+
+instance ToType R.DataSz where
+    toType = tReprName . fromString . show
+
+
+rApp :: Name.LocalQ -> [Hs.Type] -> Hs.Type
+rApp n = Hs.TApp (tReprName n)
+
+tReprName :: Name.LocalQ -> Hs.Type
+tReprName = tgName ["R"]
+
+declareUnknownVariant :: Name.LocalQ -> Hs.DataVariant
+declareUnknownVariant name = Hs.DataVariant
+    { dvCtorName = Name.localToUnQ $ Name.mkSub name "unknown'"
+    , dvArgs = Hs.APos [tStd_ "Word16"]
+    }
+
+
+defineParsedInstances :: Word64 -> Name.LocalQ -> [Name.UnQ] -> New.ParsedInstances -> [Hs.Decl]
+defineParsedInstances thisMod typeName typeParams instanceInfo =
+    concatMap (\f -> f typeName typeParams instanceInfo)
+        [ defineParsed thisMod
+        , defineParse
+        , defineMarshal
+        ]
+
+defineParsed :: Word64 -> Name.LocalQ -> [Name.UnQ] -> New.ParsedInstances -> [Hs.Decl]
+defineParsed thisMod typeName typeParams instanceInfo =
+    let tVars = map (Hs.TVar . Name.typeVarName) typeParams
+        typ = Hs.TApp (Hs.TLName typeName) tVars
+        parsedTy = case instanceInfo of
+                    New.ParsedStruct{} -> typ
+                    New.ParsedUnion{}  -> Hs.TApp (tgName ["GH"] "Which") [typ]
+    in
+    Hs.DcData Hs.Data
+        { dataName = "C.Parsed"
+        , typeArgs = [parsedTy]
+        , derives = [ "Generics.Generic" ]
+        , dataNewtype = False
+        , dataInstance = True
+        , dataVariants =
+            case instanceInfo of
+                New.ParsedStruct { fields, hasUnion, dataCtorName } ->
+                    [ Hs.DataVariant
+                        { dvCtorName = Name.localToUnQ dataCtorName
+                        , dvArgs = Hs.ARec $
+                            [ ( name
+                              , Hs.TApp
+                                  (tgName ["RP"] "Parsed")
+                                  [fieldLocTypeToType thisMod typ]
+                              )
+                            | (name, typ) <- fields
+                            ] ++
+                            [ ( "union'"
+                              , Hs.TApp (tgName ["C"] "Parsed")
+                                  [Hs.TApp (tgName ["GH"] "Which") [typ]]
+                              )
+                            | hasUnion
+                            ]
+                        }
+                    ]
+                New.ParsedUnion { variants } ->
+                    [ Hs.DataVariant
+                        { dvCtorName = Name.localToUnQ $ Name.mkSub typeName name
+                        , dvArgs = case ftype of
+                            C.VoidField -> Hs.APos []
+                            _ -> Hs.APos
+                                [ Hs.TApp
+                                    (tgName ["RP"] "Parsed")
+                                    [fieldLocTypeToType thisMod ftype]
+                                ]
+                        }
+                    | (name, ftype) <- variants
+                    ]
+                    ++
+                    [ declareUnknownVariant typeName ]
+
+        }
+    :
+    [ Hs.DcDeriveInstance
+        [ Hs.TApp (tStd_ cls) [Hs.TApp (tgName ["RP"] "Parsed") [v]]
+        | v <- tVars
+        ]
+        (Hs.TApp (tStd_ cls) [Hs.TApp (tgName ["C"] "Parsed") [parsedTy]])
+    | cls <- ["Show", "Eq"]
+    ]
+
+defineParse :: Name.LocalQ -> [Name.UnQ] -> New.ParsedInstances -> [Hs.Decl]
+defineParse typeName typeParams New.ParsedStruct { fields, hasUnion, dataCtorName } =
+    let tVars = toTVars typeParams
+        typ = Hs.TApp (Hs.TLName typeName) tVars
+    in
+    [ Hs.DcInstance
+        { ctx = paramsContext tVars
+        , typ = Hs.TApp (tgName ["C"] "Parse") [typ, Hs.TApp (tgName ["C"] "Parsed") [typ]]
+        , defs =
+            [ Hs.IdValue Hs.DfValue
+                { name = "parse"
+                , params = [Hs.PVar "raw_"]
+                , value = Hs.EFApp (Hs.ELName dataCtorName) $
+                    [ Hs.EApp
+                        (egName ["GH"] "parseField")
+                        [Hs.ELabel field, euName "raw_"]
+                    | field <- map fst fields
+                    ]
+                    ++
+                    if hasUnion then
+                        [ Hs.EApp
+                            (egName ["C"] "parse")
+                            [Hs.EApp (egName ["GH"] "structUnion") [euName "raw_"]]
+                        ]
+                    else
+                        []
+                }
+            ]
+        }
+    ]
+defineParse typeName typeParams New.ParsedUnion{ variants } =
+    let tVars = toTVars typeParams
+        typ = Hs.TApp (tgName ["GH"] "Which") [Hs.TApp (Hs.TLName typeName) tVars]
+    in
+    [ Hs.DcInstance
+        { ctx = paramsContext tVars
+        , typ = Hs.TApp (tgName ["C"] "Parse") [typ, Hs.TApp (tgName ["C"] "Parsed") [typ]]
+        , defs =
+            [ Hs.IdValue Hs.DfValue
+                { name = "parse"
+                , params = [Hs.PVar "raw_"]
+                , value = Hs.EDo
+                    [ Hs.DoBind "rawWhich_" $ Hs.EApp (egName ["GH"] "unionWhich") [euName "raw_"]
+                    ]
+                    (Hs.ECase (euName "rawWhich_") $
+                        [ let ctorName = Name.mkSub typeName variantName in
+                          case fieldLocType of
+                            C.VoidField ->
+                                ( puName (rawCtorName ctorName) [Hs.PVar "_"]
+                                , Hs.EApp (eStd_ "pure") [Hs.ELName ctorName]
+                                )
+                            _ ->
+                                ( puName (rawCtorName ctorName) [Hs.PVar "rawArg_"]
+                                , Hs.EFApp
+                                    (Hs.ELName ctorName)
+                                    [Hs.EApp (egName ["C"] "parse") [euName "rawArg_"]]
+                                )
+                        | (variantName, fieldLocType) <- variants
+                        ]
+                        ++
+                        [ let ctorName = unknownVariant typeName in
+                          ( puName (rawCtorName ctorName) [Hs.PVar "tag_"]
+                          , Hs.EApp
+                                (eStd_ "pure")
+                                [Hs.EApp (Hs.ELName ctorName) [euName "tag_"]]
+                          )
+                        ]
+                    )
+                }
+            ]
+        }
+    ]
+
+defineInterfaceParse typeName typeParams =
+    let tVars = toTVars typeParams
+        typ = Hs.TApp (Hs.TLName typeName) tVars
+    in
+    [ Hs.DcInstance
+        { ctx = paramsContext tVars
+        , typ = Hs.TApp (tgName ["C"] "Parse") [typ, Hs.TApp (tgName ["GH"] "Client") [typ]]
+        , defs =
+            [ Hs.IdValue Hs.DfValue
+                { name = "parse"
+                , params = []
+                , value = egName ["GH"] "parseCap"
+                }
+            , Hs.IdValue Hs.DfValue
+                { name = "encode"
+                , params = []
+                , value = egName ["GH"] "encodeCap"
+                }
+            ]
+        }
+    ]
+
+defineMarshal :: Name.LocalQ -> [Name.UnQ] -> New.ParsedInstances -> [Hs.Decl]
+defineMarshal typeName typeParams New.ParsedStruct { fields, hasUnion, dataCtorName } =
+    let tVars = toTVars typeParams
+        typ = Hs.TApp (Hs.TLName typeName) tVars
+    in
+    [ Hs.DcInstance
+        { ctx = paramsContext tVars
+        , typ = Hs.TApp
+                    (tgName ["C"] "Marshal")
+                    [typ, Hs.TApp (tgName ["C"] "Parsed") [typ]]
+        , defs =
+            [ if null fields && not hasUnion then
+                -- We need to special case this, since otherwise GHC will complain about
+                -- the record wildcard pattern on a ctor with no arguments.
+                Hs.IdValue Hs.DfValue
+                    { name = "marshalInto"
+                    , params = [ Hs.PVar "_raw", Hs.PLCtor dataCtorName [] ]
+                    , value = Hs.EApp (eStd_ "pure") [Hs.ETup []]
+                    }
+              else
+                Hs.IdValue Hs.DfValue
+                    { name = "marshalInto"
+                    , params =
+                        [ Hs.PVar "raw_", Hs.PLRecordWildCard dataCtorName]
+                    , value = Hs.EDo
+                        (map (Hs.DoE . uncurry emitMarshalField) fields)
+                        (if hasUnion then
+                            Hs.EApp (egName ["C"] "marshalInto")
+                              [ Hs.EApp (egName ["GH"] "structUnion") [euName "raw_"]
+                              , euName "union'"
+                              ]
+                        else
+                            Hs.EApp (eStd_ "pure") [Hs.ETup []]
+                        )
+                    }
+            ]
+        }
+    ]
+defineMarshal typeName typeParams New.ParsedUnion { variants } =
+    let tVars = toTVars typeParams
+        typ = Hs.TApp (tgName ["GH"] "Which") [Hs.TApp (Hs.TLName typeName) tVars]
+    in
+    [ Hs.DcInstance
+        { ctx = paramsContext tVars
+        , typ = Hs.TApp
+            (tgName ["C"] "Marshal")
+            [typ, Hs.TApp (tgName ["C"] "Parsed") [typ]]
+        , defs =
+            [ Hs.IdValue Hs.DfValue
+                { name = "marshalInto"
+                , params = [ Hs.PVar "raw_", Hs.PVar "parsed_" ]
+                , value = Hs.ECase (Hs.EVar "parsed_") $
+                    [ ( Hs.PLCtor (Name.mkSub typeName name) $
+                            case fieldLocType of
+                                C.VoidField -> []
+                                _           -> [Hs.PVar "arg_"]
+                      , emitMarshalVariant name fieldLocType
+                      )
+                    | (name, fieldLocType) <- variants
+                    ] ++
+                    [ ( Hs.PLCtor (unknownVariant typeName) [Hs.PVar "tag_"]
+                      , Hs.EApp
+                            (egName ["GH"] "encodeField")
+                            [ egName ["GH"] "unionField"
+                            , Hs.EVar "tag_"
+                            , unionStruct (euName "raw_")
+                            ]
+                      )
+                    ]
+                }
+            ]
+        }
+    ]
+
+emitMarshalField :: Name.UnQ -> C.FieldLocType New.Brand Name.CapnpQ -> Hs.Exp
+emitMarshalField name (C.HereField _) =
+    Hs.EDo
+        [ Hs.DoBind "group_" $ Hs.EApp
+            (egName ["GH"] "readField")
+            [Hs.ELabel name, Hs.EVar "raw_"]
+        ]
+        (Hs.EApp (egName ["C"] "marshalInto") [Hs.EVar "group_", euName name])
+emitMarshalField name _ =
+    Hs.EApp (egName ["GH"] "encodeField")
+        [ Hs.ELabel name
+        , euName name
+        , euName "raw_"
+        ]
+
+emitMarshalVariant :: Name.UnQ -> C.FieldLocType New.Brand Name.CapnpQ -> Hs.Exp
+emitMarshalVariant name (C.HereField _) = Hs.EDo
+    [ Hs.DoBind "rawGroup_" $
+        Hs.EApp (egName ["GH"] "initVariant")
+            [ Hs.ELabel name
+            , unionStruct (euName "raw_")
+            ]
+    ]
+    (Hs.EApp (egName ["C"] "marshalInto") [euName "rawGroup_", euName "arg_"])
+emitMarshalVariant name C.VoidField =
+    Hs.EApp (egName ["GH"] "encodeVariant")
+        [ Hs.ELabel name
+        , Hs.ETup []
+        , unionStruct (euName "raw_")
+        ]
+emitMarshalVariant name _ =
+    Hs.EApp (egName ["GH"] "encodeVariant")
+        [ Hs.ELabel name
+        , euName "arg_"
+        , unionStruct (euName "raw_")
+        ]
+
+unionStruct :: Hs.Exp -> Hs.Exp
+unionStruct e = Hs.EApp (egName ["GH"] "unionStruct") [e]
diff --git a/cmd/capnpc-haskell/Trans/PureToHaskell.hs b/cmd/capnpc-haskell/Trans/PureToHaskell.hs
--- a/cmd/capnpc-haskell/Trans/PureToHaskell.hs
+++ b/cmd/capnpc-haskell/Trans/PureToHaskell.hs
@@ -185,6 +185,7 @@
         , derives =
             ["Std_.Show", "Std_.Eq", "Generics.Generic"]
         , dataNewtype = False
+        , dataInstance = False
         , dataVariants =
             case def of
                 P.Product fields ->
@@ -461,6 +462,7 @@
     DcData Data
         { dataName = Name.localToUnQ name
         , dataNewtype = True
+        , dataInstance = False
         , dataVariants =
             [ DataVariant
                 { dvCtorName = Name.localToUnQ name
diff --git a/cmd/capnpc-haskell/Trans/RawToHaskell.hs b/cmd/capnpc-haskell/Trans/RawToHaskell.hs
--- a/cmd/capnpc-haskell/Trans/RawToHaskell.hs
+++ b/cmd/capnpc-haskell/Trans/RawToHaskell.hs
@@ -6,18 +6,13 @@
 
 import Data.Word
 
-import Data.Maybe  (fromJust)
 import Data.String (fromString)
-import GHC.Exts    (fromList)
 
 import qualified Data.Text as T
 
 import IR.Haskell
 import Trans.ToHaskellCommon
 
-import qualified Capnp
-import qualified Capnp.Untyped.Pure as Untyped
-
 import qualified IR.Common as C
 import qualified IR.Name   as Name
 import qualified IR.Raw    as Raw
@@ -88,6 +83,7 @@
     [ DcData Data
         { dataName = Name.localToUnQ typeCtor
         , dataNewtype = False
+        , dataInstance = False
         , typeArgs = typeParamNames ++ [TKindAnnotated (TVar "mut") (tgName ["Message"] "Mutability")]
         , dataVariants =
             [ DataVariant
@@ -184,6 +180,7 @@
     [ DcData Data
         { dataName = Name.localToUnQ typeCtor
         , dataNewtype = False
+        , dataInstance = False
         , typeArgs = []
         , dataVariants =
             map enumerantToVariant dataCtors
@@ -241,6 +238,7 @@
                 ]
             , derives = []
             , dataNewtype = True
+            , dataInstance = False
             }
         , iValue "index" [PVar "i", PLCtor listCtor [PVar "l"]] $ EFApp
             (egName ["Classes"] "fromWord")
@@ -417,6 +415,7 @@
                 ]
             , derives = []
             , dataNewtype = True
+            , dataInstance = False
             }
         , iValue "listFromPtr" [PVar "msg", PVar "ptr"] $ EFApp
             (ELName listCtor)
@@ -709,15 +708,6 @@
             }
         }
     ]
-  where
-    makePtrBytes ptr =
-        Capnp.msgToLBS $ fromJust $ Capnp.createPure Capnp.defaultLimit $ do
-            msg <- Capnp.newMessage Nothing
-            rootPtr <- Capnp.cerialize msg $ Untyped.Struct
-                (fromList [])
-                (fromList [ptr])
-            Capnp.setRoot rootPtr
-            pure msg
 
 containerTypeToType :: Name.LocalQ -> [Name.UnQ] -> Type -> Type
 containerTypeToType name params msgTy =
@@ -825,6 +815,7 @@
     DcData Data
         { dataName = Name.localToUnQ typeCtor
         , dataNewtype = True
+        , dataInstance = False
         , typeArgs = map TVar typeArgs
         , dataVariants =
             [ DataVariant
diff --git a/cmd/capnpc-haskell/Trans/ToHaskellCommon.hs b/cmd/capnpc-haskell/Trans/ToHaskellCommon.hs
--- a/cmd/capnpc-haskell/Trans/ToHaskellCommon.hs
+++ b/cmd/capnpc-haskell/Trans/ToHaskellCommon.hs
@@ -8,15 +8,24 @@
 import Data.Word
 
 import Data.Char       (toUpper)
+import Data.Maybe      (fromJust)
+import GHC.Exts        (fromList)
 import System.FilePath (splitDirectories)
 import Text.Printf     (printf)
 
-import qualified Data.Set  as S
-import qualified Data.Text as T
 
-import qualified IR.Common as C
-import qualified IR.Name   as Name
+import qualified Data.ByteString.Lazy as LBS
+import qualified Data.Set             as S
+import qualified Data.Text            as T
 
+import Capnp.New.Classes (encode)
+import Capnp.Repr.Parsed (Parsed)
+
+import qualified Capnp
+import qualified Capnp.New.Basics as B
+import qualified IR.Common        as C
+import qualified IR.Name          as Name
+
 import IR.Haskell
 
 -- Misc shortcuts for common constructs:
@@ -51,6 +60,9 @@
 pgName :: [T.Text] -> Name.LocalQ -> [Pattern] -> Pattern
 pgName parts local = PGCtor (gName parts local)
 
+puName :: Name.UnQ -> [Pattern] -> Pattern
+puName = PLCtor . Name.unQToLocal
+
 tuName :: Name.UnQ -> Type
 tuName = TLName . Name.unQToLocal
 
@@ -143,6 +155,19 @@
     in
     m { modImports = modImports ++ neededImports }
 
+toTVars :: [Name.UnQ] -> [Type]
+toTVars = map (TVar . Name.typeVarName)
+
+makePtrBytes :: Parsed B.AnyPointer -> LBS.ByteString
+makePtrBytes ptr =
+    Capnp.msgToLBS $ fromJust $ Capnp.createPure Capnp.defaultLimit $ do
+        msg <- Capnp.newMessage Nothing
+        rootPtr <- encode msg $ B.Struct
+            (fromList [])
+            (fromList [ptr])
+        Capnp.setRoot rootPtr
+        pure msg
+
 class HasGNames a where
     -- | Collect all of the 'Name.GlobalQ's used in the module.
     --
@@ -171,6 +196,8 @@
         , findGNames typ
         , S.unions $ map findGNames defs
         ]
+    findGNames (DcTypeInstance alias orig) = findGNames alias `S.union` findGNames orig
+    findGNames (DcDeriveInstance ctx typ) = findGNames (TCtx ctx typ)
     findGNames DcClass{ctx, decls} =
         S.unions $ map findGNames ctx ++ map findGNames decls
 
diff --git a/examples/gen/lib/Capnp/Gen/ById/X85150b117366d14b/New.hs b/examples/gen/lib/Capnp/Gen/ById/X85150b117366d14b/New.hs
new file mode 100644
--- /dev/null
+++ b/examples/gen/lib/Capnp/Gen/ById/X85150b117366d14b/New.hs
@@ -0,0 +1,12 @@
+{-# OPTIONS_GHC -Wno-unused-imports #-}
+{-# OPTIONS_GHC -Wno-dodgy-exports #-}
+{-# OPTIONS_GHC -Wno-unused-matches #-}
+{-# OPTIONS_GHC -Wno-orphans #-}
+{-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
+module Capnp.Gen.ById.X85150b117366d14b.New(module Capnp.Gen.Calculator.New) where
+import Capnp.Gen.Calculator.New
+import qualified Prelude as Std_
+import qualified Data.Word as Std_
+import qualified Data.Int as Std_
+import Prelude ((<$>), (<*>), (>>=))
diff --git a/examples/gen/lib/Capnp/Gen/ById/Xd0a87f36fa0182f5/New.hs b/examples/gen/lib/Capnp/Gen/ById/Xd0a87f36fa0182f5/New.hs
new file mode 100644
--- /dev/null
+++ b/examples/gen/lib/Capnp/Gen/ById/Xd0a87f36fa0182f5/New.hs
@@ -0,0 +1,12 @@
+{-# OPTIONS_GHC -Wno-unused-imports #-}
+{-# OPTIONS_GHC -Wno-dodgy-exports #-}
+{-# OPTIONS_GHC -Wno-unused-matches #-}
+{-# OPTIONS_GHC -Wno-orphans #-}
+{-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
+module Capnp.Gen.ById.Xd0a87f36fa0182f5.New(module Capnp.Gen.Echo.New) where
+import Capnp.Gen.Echo.New
+import qualified Prelude as Std_
+import qualified Data.Word as Std_
+import qualified Data.Int as Std_
+import Prelude ((<$>), (<*>), (>>=))
diff --git a/examples/gen/lib/Capnp/Gen/Calculator/New.hs b/examples/gen/lib/Capnp/Gen/Calculator/New.hs
new file mode 100644
--- /dev/null
+++ b/examples/gen/lib/Capnp/Gen/Calculator/New.hs
@@ -0,0 +1,501 @@
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE EmptyDataDeriving #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE UndecidableInstances #-}
+{-# LANGUAGE OverloadedLabels #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE StandaloneDeriving #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# OPTIONS_GHC -Wno-unused-imports #-}
+{-# OPTIONS_GHC -Wno-dodgy-exports #-}
+{-# OPTIONS_GHC -Wno-unused-matches #-}
+{-# OPTIONS_GHC -Wno-orphans #-}
+{-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
+module Capnp.Gen.Calculator.New where
+import qualified Capnp.Repr as R
+import qualified Capnp.Repr.Parsed as RP
+import qualified Capnp.New.Basics as Basics
+import qualified GHC.OverloadedLabels as OL
+import qualified Capnp.GenHelpers.New as GH
+import qualified Capnp.New.Classes as C
+import qualified GHC.Generics as Generics
+import qualified Capnp.GenHelpers.ReExports.Data.ByteString as BS
+import qualified Prelude as Std_
+import qualified Data.Word as Std_
+import qualified Data.Int as Std_
+import Prelude ((<$>), (<*>), (>>=))
+data Calculator 
+type instance (R.ReprFor Calculator) = (R.Ptr (Std_.Just R.Cap))
+instance (C.Parse Calculator (GH.Client Calculator)) where
+    parse  = GH.parseCap
+    encode  = GH.encodeCap
+instance (GH.HasMethod "evaluate" Calculator Calculator'evaluate'params Calculator'evaluate'results) where
+    methodByLabel  = (GH.Method 10923537602090224694 0)
+instance (GH.HasMethod "defFunction" Calculator Calculator'defFunction'params Calculator'defFunction'results) where
+    methodByLabel  = (GH.Method 10923537602090224694 1)
+instance (GH.HasMethod "getOperator" Calculator Calculator'getOperator'params Calculator'getOperator'results) where
+    methodByLabel  = (GH.Method 10923537602090224694 2)
+data Calculator'evaluate'params 
+type instance (R.ReprFor Calculator'evaluate'params) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Calculator'evaluate'params) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance (C.Allocate Calculator'evaluate'params) where
+    type AllocHint Calculator'evaluate'params = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Calculator'evaluate'params (C.Parsed Calculator'evaluate'params))
+instance (C.AllocateList Calculator'evaluate'params) where
+    type ListAllocHint Calculator'evaluate'params = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Calculator'evaluate'params (C.Parsed Calculator'evaluate'params))
+data instance C.Parsed Calculator'evaluate'params
+    = Calculator'evaluate'params 
+        {expression :: (RP.Parsed Expression)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Calculator'evaluate'params))
+deriving instance (Std_.Eq (C.Parsed Calculator'evaluate'params))
+instance (C.Parse Calculator'evaluate'params (C.Parsed Calculator'evaluate'params)) where
+    parse raw_ = (Calculator'evaluate'params <$> (GH.parseField #expression raw_))
+instance (C.Marshal Calculator'evaluate'params (C.Parsed Calculator'evaluate'params)) where
+    marshalInto raw_ Calculator'evaluate'params{..} = (do
+        (GH.encodeField #expression expression raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "expression" GH.Slot Calculator'evaluate'params Expression) where
+    fieldByLabel  = (GH.ptrField 0)
+data Calculator'evaluate'results 
+type instance (R.ReprFor Calculator'evaluate'results) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Calculator'evaluate'results) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance (C.Allocate Calculator'evaluate'results) where
+    type AllocHint Calculator'evaluate'results = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Calculator'evaluate'results (C.Parsed Calculator'evaluate'results))
+instance (C.AllocateList Calculator'evaluate'results) where
+    type ListAllocHint Calculator'evaluate'results = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Calculator'evaluate'results (C.Parsed Calculator'evaluate'results))
+data instance C.Parsed Calculator'evaluate'results
+    = Calculator'evaluate'results 
+        {value :: (RP.Parsed Value)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Calculator'evaluate'results))
+deriving instance (Std_.Eq (C.Parsed Calculator'evaluate'results))
+instance (C.Parse Calculator'evaluate'results (C.Parsed Calculator'evaluate'results)) where
+    parse raw_ = (Calculator'evaluate'results <$> (GH.parseField #value raw_))
+instance (C.Marshal Calculator'evaluate'results (C.Parsed Calculator'evaluate'results)) where
+    marshalInto raw_ Calculator'evaluate'results{..} = (do
+        (GH.encodeField #value value raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "value" GH.Slot Calculator'evaluate'results Value) where
+    fieldByLabel  = (GH.ptrField 0)
+data Calculator'defFunction'params 
+type instance (R.ReprFor Calculator'defFunction'params) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Calculator'defFunction'params) where
+    numStructWords  = 1
+    numStructPtrs  = 1
+instance (C.Allocate Calculator'defFunction'params) where
+    type AllocHint Calculator'defFunction'params = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Calculator'defFunction'params (C.Parsed Calculator'defFunction'params))
+instance (C.AllocateList Calculator'defFunction'params) where
+    type ListAllocHint Calculator'defFunction'params = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Calculator'defFunction'params (C.Parsed Calculator'defFunction'params))
+data instance C.Parsed Calculator'defFunction'params
+    = Calculator'defFunction'params 
+        {paramCount :: (RP.Parsed Std_.Int32)
+        ,body :: (RP.Parsed Expression)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Calculator'defFunction'params))
+deriving instance (Std_.Eq (C.Parsed Calculator'defFunction'params))
+instance (C.Parse Calculator'defFunction'params (C.Parsed Calculator'defFunction'params)) where
+    parse raw_ = (Calculator'defFunction'params <$> (GH.parseField #paramCount raw_)
+                                                <*> (GH.parseField #body raw_))
+instance (C.Marshal Calculator'defFunction'params (C.Parsed Calculator'defFunction'params)) where
+    marshalInto raw_ Calculator'defFunction'params{..} = (do
+        (GH.encodeField #paramCount paramCount raw_)
+        (GH.encodeField #body body raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "paramCount" GH.Slot Calculator'defFunction'params Std_.Int32) where
+    fieldByLabel  = (GH.dataField 0 0 32 0)
+instance (GH.HasField "body" GH.Slot Calculator'defFunction'params Expression) where
+    fieldByLabel  = (GH.ptrField 0)
+data Calculator'defFunction'results 
+type instance (R.ReprFor Calculator'defFunction'results) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Calculator'defFunction'results) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance (C.Allocate Calculator'defFunction'results) where
+    type AllocHint Calculator'defFunction'results = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Calculator'defFunction'results (C.Parsed Calculator'defFunction'results))
+instance (C.AllocateList Calculator'defFunction'results) where
+    type ListAllocHint Calculator'defFunction'results = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Calculator'defFunction'results (C.Parsed Calculator'defFunction'results))
+data instance C.Parsed Calculator'defFunction'results
+    = Calculator'defFunction'results 
+        {func :: (RP.Parsed Function)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Calculator'defFunction'results))
+deriving instance (Std_.Eq (C.Parsed Calculator'defFunction'results))
+instance (C.Parse Calculator'defFunction'results (C.Parsed Calculator'defFunction'results)) where
+    parse raw_ = (Calculator'defFunction'results <$> (GH.parseField #func raw_))
+instance (C.Marshal Calculator'defFunction'results (C.Parsed Calculator'defFunction'results)) where
+    marshalInto raw_ Calculator'defFunction'results{..} = (do
+        (GH.encodeField #func func raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "func" GH.Slot Calculator'defFunction'results Function) where
+    fieldByLabel  = (GH.ptrField 0)
+data Calculator'getOperator'params 
+type instance (R.ReprFor Calculator'getOperator'params) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Calculator'getOperator'params) where
+    numStructWords  = 1
+    numStructPtrs  = 0
+instance (C.Allocate Calculator'getOperator'params) where
+    type AllocHint Calculator'getOperator'params = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Calculator'getOperator'params (C.Parsed Calculator'getOperator'params))
+instance (C.AllocateList Calculator'getOperator'params) where
+    type ListAllocHint Calculator'getOperator'params = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Calculator'getOperator'params (C.Parsed Calculator'getOperator'params))
+data instance C.Parsed Calculator'getOperator'params
+    = Calculator'getOperator'params 
+        {op :: (RP.Parsed Operator)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Calculator'getOperator'params))
+deriving instance (Std_.Eq (C.Parsed Calculator'getOperator'params))
+instance (C.Parse Calculator'getOperator'params (C.Parsed Calculator'getOperator'params)) where
+    parse raw_ = (Calculator'getOperator'params <$> (GH.parseField #op raw_))
+instance (C.Marshal Calculator'getOperator'params (C.Parsed Calculator'getOperator'params)) where
+    marshalInto raw_ Calculator'getOperator'params{..} = (do
+        (GH.encodeField #op op raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "op" GH.Slot Calculator'getOperator'params Operator) where
+    fieldByLabel  = (GH.dataField 0 0 16 0)
+data Calculator'getOperator'results 
+type instance (R.ReprFor Calculator'getOperator'results) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Calculator'getOperator'results) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance (C.Allocate Calculator'getOperator'results) where
+    type AllocHint Calculator'getOperator'results = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Calculator'getOperator'results (C.Parsed Calculator'getOperator'results))
+instance (C.AllocateList Calculator'getOperator'results) where
+    type ListAllocHint Calculator'getOperator'results = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Calculator'getOperator'results (C.Parsed Calculator'getOperator'results))
+data instance C.Parsed Calculator'getOperator'results
+    = Calculator'getOperator'results 
+        {func :: (RP.Parsed Function)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Calculator'getOperator'results))
+deriving instance (Std_.Eq (C.Parsed Calculator'getOperator'results))
+instance (C.Parse Calculator'getOperator'results (C.Parsed Calculator'getOperator'results)) where
+    parse raw_ = (Calculator'getOperator'results <$> (GH.parseField #func raw_))
+instance (C.Marshal Calculator'getOperator'results (C.Parsed Calculator'getOperator'results)) where
+    marshalInto raw_ Calculator'getOperator'results{..} = (do
+        (GH.encodeField #func func raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "func" GH.Slot Calculator'getOperator'results Function) where
+    fieldByLabel  = (GH.ptrField 0)
+data Expression 
+type instance (R.ReprFor Expression) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Expression) where
+    numStructWords  = 2
+    numStructPtrs  = 2
+instance (C.Allocate Expression) where
+    type AllocHint Expression = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Expression (C.Parsed Expression))
+instance (C.AllocateList Expression) where
+    type ListAllocHint Expression = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Expression (C.Parsed Expression))
+data instance C.Parsed Expression
+    = Expression 
+        {union' :: (C.Parsed (GH.Which Expression))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Expression))
+deriving instance (Std_.Eq (C.Parsed Expression))
+instance (C.Parse Expression (C.Parsed Expression)) where
+    parse raw_ = (Expression <$> (C.parse (GH.structUnion raw_)))
+instance (C.Marshal Expression (C.Parsed Expression)) where
+    marshalInto raw_ Expression{..} = (do
+        (C.marshalInto (GH.structUnion raw_) union')
+        )
+instance (GH.HasUnion Expression) where
+    unionField  = (GH.dataField 0 1 16 0)
+    data RawWhich mut_ Expression
+        = RW_Expression'literal (R.Raw mut_ Std_.Double)
+        | RW_Expression'previousResult (R.Raw mut_ Value)
+        | RW_Expression'parameter (R.Raw mut_ Std_.Word32)
+        | RW_Expression'call (R.Raw mut_ Expression'call)
+        | RW_Expression'unknown' Std_.Word16
+    internalWhich tag_ struct_ = case tag_ of
+        0 ->
+            (RW_Expression'literal <$> (GH.readVariant #literal struct_))
+        1 ->
+            (RW_Expression'previousResult <$> (GH.readVariant #previousResult struct_))
+        2 ->
+            (RW_Expression'parameter <$> (GH.readVariant #parameter struct_))
+        3 ->
+            (RW_Expression'call <$> (GH.readVariant #call struct_))
+        _ ->
+            (Std_.pure (RW_Expression'unknown' tag_))
+    data Which Expression
+instance (GH.HasVariant "literal" GH.Slot Expression Std_.Double) where
+    variantByLabel  = (GH.Variant (GH.dataField 0 0 64 0) 0)
+instance (GH.HasVariant "previousResult" GH.Slot Expression Value) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 1)
+instance (GH.HasVariant "parameter" GH.Slot Expression Std_.Word32) where
+    variantByLabel  = (GH.Variant (GH.dataField 0 0 32 0) 2)
+instance (GH.HasVariant "call" GH.Group Expression Expression'call) where
+    variantByLabel  = (GH.Variant GH.groupField 3)
+data instance C.Parsed (GH.Which Expression)
+    = Expression'literal (RP.Parsed Std_.Double)
+    | Expression'previousResult (RP.Parsed Value)
+    | Expression'parameter (RP.Parsed Std_.Word32)
+    | Expression'call (RP.Parsed Expression'call)
+    | Expression'unknown' Std_.Word16
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed (GH.Which Expression)))
+deriving instance (Std_.Eq (C.Parsed (GH.Which Expression)))
+instance (C.Parse (GH.Which Expression) (C.Parsed (GH.Which Expression))) where
+    parse raw_ = (do
+        rawWhich_ <- (GH.unionWhich raw_)
+        case rawWhich_ of
+            (RW_Expression'literal rawArg_) ->
+                (Expression'literal <$> (C.parse rawArg_))
+            (RW_Expression'previousResult rawArg_) ->
+                (Expression'previousResult <$> (C.parse rawArg_))
+            (RW_Expression'parameter rawArg_) ->
+                (Expression'parameter <$> (C.parse rawArg_))
+            (RW_Expression'call rawArg_) ->
+                (Expression'call <$> (C.parse rawArg_))
+            (RW_Expression'unknown' tag_) ->
+                (Std_.pure (Expression'unknown' tag_))
+        )
+instance (C.Marshal (GH.Which Expression) (C.Parsed (GH.Which Expression))) where
+    marshalInto raw_ parsed_ = case parsed_ of
+        (Expression'literal arg_) ->
+            (GH.encodeVariant #literal arg_ (GH.unionStruct raw_))
+        (Expression'previousResult arg_) ->
+            (GH.encodeVariant #previousResult arg_ (GH.unionStruct raw_))
+        (Expression'parameter arg_) ->
+            (GH.encodeVariant #parameter arg_ (GH.unionStruct raw_))
+        (Expression'call arg_) ->
+            (do
+                rawGroup_ <- (GH.initVariant #call (GH.unionStruct raw_))
+                (C.marshalInto rawGroup_ arg_)
+                )
+        (Expression'unknown' tag_) ->
+            (GH.encodeField GH.unionField tag_ (GH.unionStruct raw_))
+data Expression'call 
+type instance (R.ReprFor Expression'call) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Expression'call) where
+    numStructWords  = 2
+    numStructPtrs  = 2
+instance (C.Allocate Expression'call) where
+    type AllocHint Expression'call = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Expression'call (C.Parsed Expression'call))
+instance (C.AllocateList Expression'call) where
+    type ListAllocHint Expression'call = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Expression'call (C.Parsed Expression'call))
+data instance C.Parsed Expression'call
+    = Expression'call' 
+        {function :: (RP.Parsed Function)
+        ,params :: (RP.Parsed (R.List Expression))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Expression'call))
+deriving instance (Std_.Eq (C.Parsed Expression'call))
+instance (C.Parse Expression'call (C.Parsed Expression'call)) where
+    parse raw_ = (Expression'call' <$> (GH.parseField #function raw_)
+                                   <*> (GH.parseField #params raw_))
+instance (C.Marshal Expression'call (C.Parsed Expression'call)) where
+    marshalInto raw_ Expression'call'{..} = (do
+        (GH.encodeField #function function raw_)
+        (GH.encodeField #params params raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "function" GH.Slot Expression'call Function) where
+    fieldByLabel  = (GH.ptrField 0)
+instance (GH.HasField "params" GH.Slot Expression'call (R.List Expression)) where
+    fieldByLabel  = (GH.ptrField 1)
+data Value 
+type instance (R.ReprFor Value) = (R.Ptr (Std_.Just R.Cap))
+instance (C.Parse Value (GH.Client Value)) where
+    parse  = GH.parseCap
+    encode  = GH.encodeCap
+instance (GH.HasMethod "read" Value Value'read'params Value'read'results) where
+    methodByLabel  = (GH.Method 14116142932258867410 0)
+data Value'read'params 
+type instance (R.ReprFor Value'read'params) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Value'read'params) where
+    numStructWords  = 0
+    numStructPtrs  = 0
+instance (C.Allocate Value'read'params) where
+    type AllocHint Value'read'params = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Value'read'params (C.Parsed Value'read'params))
+instance (C.AllocateList Value'read'params) where
+    type ListAllocHint Value'read'params = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Value'read'params (C.Parsed Value'read'params))
+data instance C.Parsed Value'read'params
+    = Value'read'params 
+        {}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Value'read'params))
+deriving instance (Std_.Eq (C.Parsed Value'read'params))
+instance (C.Parse Value'read'params (C.Parsed Value'read'params)) where
+    parse raw_ = (Std_.pure Value'read'params)
+instance (C.Marshal Value'read'params (C.Parsed Value'read'params)) where
+    marshalInto _raw (Value'read'params) = (Std_.pure ())
+data Value'read'results 
+type instance (R.ReprFor Value'read'results) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Value'read'results) where
+    numStructWords  = 1
+    numStructPtrs  = 0
+instance (C.Allocate Value'read'results) where
+    type AllocHint Value'read'results = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Value'read'results (C.Parsed Value'read'results))
+instance (C.AllocateList Value'read'results) where
+    type ListAllocHint Value'read'results = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Value'read'results (C.Parsed Value'read'results))
+data instance C.Parsed Value'read'results
+    = Value'read'results 
+        {value :: (RP.Parsed Std_.Double)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Value'read'results))
+deriving instance (Std_.Eq (C.Parsed Value'read'results))
+instance (C.Parse Value'read'results (C.Parsed Value'read'results)) where
+    parse raw_ = (Value'read'results <$> (GH.parseField #value raw_))
+instance (C.Marshal Value'read'results (C.Parsed Value'read'results)) where
+    marshalInto raw_ Value'read'results{..} = (do
+        (GH.encodeField #value value raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "value" GH.Slot Value'read'results Std_.Double) where
+    fieldByLabel  = (GH.dataField 0 0 64 0)
+data Function 
+type instance (R.ReprFor Function) = (R.Ptr (Std_.Just R.Cap))
+instance (C.Parse Function (GH.Client Function)) where
+    parse  = GH.parseCap
+    encode  = GH.encodeCap
+instance (GH.HasMethod "call" Function Function'call'params Function'call'results) where
+    methodByLabel  = (GH.Method 17143016017778443156 0)
+data Function'call'params 
+type instance (R.ReprFor Function'call'params) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Function'call'params) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance (C.Allocate Function'call'params) where
+    type AllocHint Function'call'params = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Function'call'params (C.Parsed Function'call'params))
+instance (C.AllocateList Function'call'params) where
+    type ListAllocHint Function'call'params = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Function'call'params (C.Parsed Function'call'params))
+data instance C.Parsed Function'call'params
+    = Function'call'params 
+        {params :: (RP.Parsed (R.List Std_.Double))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Function'call'params))
+deriving instance (Std_.Eq (C.Parsed Function'call'params))
+instance (C.Parse Function'call'params (C.Parsed Function'call'params)) where
+    parse raw_ = (Function'call'params <$> (GH.parseField #params raw_))
+instance (C.Marshal Function'call'params (C.Parsed Function'call'params)) where
+    marshalInto raw_ Function'call'params{..} = (do
+        (GH.encodeField #params params raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "params" GH.Slot Function'call'params (R.List Std_.Double)) where
+    fieldByLabel  = (GH.ptrField 0)
+data Function'call'results 
+type instance (R.ReprFor Function'call'results) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Function'call'results) where
+    numStructWords  = 1
+    numStructPtrs  = 0
+instance (C.Allocate Function'call'results) where
+    type AllocHint Function'call'results = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Function'call'results (C.Parsed Function'call'results))
+instance (C.AllocateList Function'call'results) where
+    type ListAllocHint Function'call'results = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Function'call'results (C.Parsed Function'call'results))
+data instance C.Parsed Function'call'results
+    = Function'call'results 
+        {value :: (RP.Parsed Std_.Double)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Function'call'results))
+deriving instance (Std_.Eq (C.Parsed Function'call'results))
+instance (C.Parse Function'call'results (C.Parsed Function'call'results)) where
+    parse raw_ = (Function'call'results <$> (GH.parseField #value raw_))
+instance (C.Marshal Function'call'results (C.Parsed Function'call'results)) where
+    marshalInto raw_ Function'call'results{..} = (do
+        (GH.encodeField #value value raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "value" GH.Slot Function'call'results Std_.Double) where
+    fieldByLabel  = (GH.dataField 0 0 64 0)
+data Operator 
+    = Operator'add 
+    | Operator'subtract 
+    | Operator'multiply 
+    | Operator'divide 
+    | Operator'unknown' Std_.Word16
+    deriving(Std_.Eq,Std_.Show)
+type instance (R.ReprFor Operator) = (R.Data R.Sz16)
+instance (Std_.Enum Operator) where
+    toEnum n_ = case n_ of
+        0 ->
+            Operator'add
+        1 ->
+            Operator'subtract
+        2 ->
+            Operator'multiply
+        3 ->
+            Operator'divide
+        tag_ ->
+            (Operator'unknown' (Std_.fromIntegral tag_))
+    fromEnum value_ = case value_ of
+        (Operator'add) ->
+            0
+        (Operator'subtract) ->
+            1
+        (Operator'multiply) ->
+            2
+        (Operator'divide) ->
+            3
+        (Operator'unknown' tag_) ->
+            (Std_.fromIntegral tag_)
+instance (C.IsWord Operator) where
+    fromWord w_ = (Std_.toEnum (Std_.fromIntegral w_))
+    toWord v_ = (Std_.fromIntegral (Std_.fromEnum v_))
+instance (C.Parse Operator Operator) where
+    parse  = GH.parseEnum
+    encode  = GH.encodeEnum
+instance (C.AllocateList Operator) where
+    type ListAllocHint Operator = Std_.Int
+instance (C.EstimateListAlloc Operator Operator)
diff --git a/examples/gen/lib/Capnp/Gen/Calculator/Pure.hs b/examples/gen/lib/Capnp/Gen/Calculator/Pure.hs
--- a/examples/gen/lib/Capnp/Gen/Calculator/Pure.hs
+++ b/examples/gen/lib/Capnp/Gen/Calculator/Pure.hs
@@ -74,7 +74,7 @@
     calculator'getOperator :: cap -> (Server.MethodHandler m Calculator'getOperator'params Calculator'getOperator'results)
     calculator'getOperator _ = Server.methodUnimplemented
 export_Calculator :: ((STM.MonadSTM m)
-                     ,(Calculator'server_ Std_.IO cap)) => Supervisors.Supervisor -> cap -> (m (Calculator))
+                     ,(Calculator'server_ Std_.IO cap)) => Supervisors.Supervisor -> cap -> (m Calculator)
 export_Calculator sup_ server_ = (STM.liftSTM (Calculator <$> (Rpc.export sup_ Server.ServerOps{handleCast = (Server.unwrap server_)
                                                                                                ,handleStop = (Server.shutdown server_)
                                                                                                ,handleCall = (\interfaceId_ methodId_ -> case interfaceId_ of
@@ -90,24 +90,24 @@
                                                                                                                Server.methodUnimplemented
                                                                                                    _ ->
                                                                                                        Server.methodUnimplemented)})))
-instance (Rpc.IsClient (Calculator)) where
+instance (Rpc.IsClient Calculator) where
     fromClient  = Calculator
     toClient (Calculator client) = client
-instance (Classes.FromPtr msg (Calculator)) where
+instance (Classes.FromPtr msg Calculator) where
     fromPtr  = RpcHelpers.isClientFromPtr
-instance (Classes.ToPtr s (Calculator)) where
+instance (Classes.ToPtr s Calculator) where
     toPtr  = RpcHelpers.isClientToPtr
-instance (Classes.Decerialize (Calculator)) where
-    type Cerial msg (Calculator) = (Capnp.Gen.ById.X85150b117366d14b.Calculator msg)
+instance (Classes.Decerialize Calculator) where
+    type Cerial msg Calculator = (Capnp.Gen.ById.X85150b117366d14b.Calculator msg)
     decerialize (Capnp.Gen.ById.X85150b117366d14b.Calculator'newtype_ maybeCap) = case maybeCap of
         (Std_.Nothing) ->
             (Std_.pure (Calculator Message.nullClient))
         (Std_.Just cap) ->
             (Calculator <$> (Untyped.getClient cap))
-instance (Classes.Cerialize s (Calculator)) where
+instance (Classes.Cerialize s Calculator) where
     cerialize msg (Calculator client) = (Capnp.Gen.ById.X85150b117366d14b.Calculator'newtype_ <$> (Std_.Just <$> (Untyped.appendCap msg client)))
-instance (Server.Server Std_.IO (Calculator))
-instance (Calculator'server_ Std_.IO (Calculator)) where
+instance (Server.Server Std_.IO Calculator)
+instance (Calculator'server_ Std_.IO Calculator) where
     calculator'evaluate (Calculator client) = (Rpc.clientMethodHandler 10923537602090224694 0 client)
     calculator'defFunction (Calculator client) = (Rpc.clientMethodHandler 10923537602090224694 1 client)
     calculator'getOperator (Calculator client) = (Rpc.clientMethodHandler 10923537602090224694 2 client)
@@ -117,34 +117,34 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Calculator'evaluate'params)) where
+instance (Default.Default Calculator'evaluate'params) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Calculator'evaluate'params)) where
+instance (Classes.FromStruct Message.Const Calculator'evaluate'params) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Calculator'evaluate'params)) where
-    type Cerial msg (Calculator'evaluate'params) = (Capnp.Gen.ById.X85150b117366d14b.Calculator'evaluate'params msg)
+instance (Classes.Decerialize Calculator'evaluate'params) where
+    type Cerial msg Calculator'evaluate'params = (Capnp.Gen.ById.X85150b117366d14b.Calculator'evaluate'params msg)
     decerialize raw = (Calculator'evaluate'params <$> ((Capnp.Gen.ById.X85150b117366d14b.get_Calculator'evaluate'params'expression raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Calculator'evaluate'params)) where
+instance (Classes.Marshal s Calculator'evaluate'params) where
     marshalInto raw_ value_ = case value_ of
         Calculator'evaluate'params{..} ->
             (do
                 ((Classes.cerialize (Untyped.message raw_) expression) >>= (Capnp.Gen.ById.X85150b117366d14b.set_Calculator'evaluate'params'expression raw_))
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (Calculator'evaluate'params))
-instance (Classes.Cerialize s (V.Vector (Calculator'evaluate'params))) where
+instance (Classes.Cerialize s Calculator'evaluate'params)
+instance (Classes.Cerialize s (V.Vector Calculator'evaluate'params)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Calculator'evaluate'params)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Calculator'evaluate'params))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Calculator'evaluate'params))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Calculator'evaluate'params)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Calculator'evaluate'params)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Calculator'evaluate'params))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Calculator'evaluate'params))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Calculator'evaluate'params)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Calculator'evaluate'params)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Calculator'evaluate'params))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Calculator'evaluate'params))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Calculator'evaluate'params)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data Calculator'evaluate'results 
     = Calculator'evaluate'results 
@@ -152,34 +152,34 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Calculator'evaluate'results)) where
+instance (Default.Default Calculator'evaluate'results) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Calculator'evaluate'results)) where
+instance (Classes.FromStruct Message.Const Calculator'evaluate'results) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Calculator'evaluate'results)) where
-    type Cerial msg (Calculator'evaluate'results) = (Capnp.Gen.ById.X85150b117366d14b.Calculator'evaluate'results msg)
+instance (Classes.Decerialize Calculator'evaluate'results) where
+    type Cerial msg Calculator'evaluate'results = (Capnp.Gen.ById.X85150b117366d14b.Calculator'evaluate'results msg)
     decerialize raw = (Calculator'evaluate'results <$> ((Capnp.Gen.ById.X85150b117366d14b.get_Calculator'evaluate'results'value raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Calculator'evaluate'results)) where
+instance (Classes.Marshal s Calculator'evaluate'results) where
     marshalInto raw_ value_ = case value_ of
         Calculator'evaluate'results{..} ->
             (do
                 ((Classes.cerialize (Untyped.message raw_) value) >>= (Capnp.Gen.ById.X85150b117366d14b.set_Calculator'evaluate'results'value raw_))
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (Calculator'evaluate'results))
-instance (Classes.Cerialize s (V.Vector (Calculator'evaluate'results))) where
+instance (Classes.Cerialize s Calculator'evaluate'results)
+instance (Classes.Cerialize s (V.Vector Calculator'evaluate'results)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Calculator'evaluate'results)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Calculator'evaluate'results))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Calculator'evaluate'results))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Calculator'evaluate'results)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Calculator'evaluate'results)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Calculator'evaluate'results))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Calculator'evaluate'results))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Calculator'evaluate'results)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Calculator'evaluate'results)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Calculator'evaluate'results))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Calculator'evaluate'results))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Calculator'evaluate'results)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data Calculator'defFunction'params 
     = Calculator'defFunction'params 
@@ -188,15 +188,15 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Calculator'defFunction'params)) where
+instance (Default.Default Calculator'defFunction'params) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Calculator'defFunction'params)) where
+instance (Classes.FromStruct Message.Const Calculator'defFunction'params) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Calculator'defFunction'params)) where
-    type Cerial msg (Calculator'defFunction'params) = (Capnp.Gen.ById.X85150b117366d14b.Calculator'defFunction'params msg)
+instance (Classes.Decerialize Calculator'defFunction'params) where
+    type Cerial msg Calculator'defFunction'params = (Capnp.Gen.ById.X85150b117366d14b.Calculator'defFunction'params msg)
     decerialize raw = (Calculator'defFunction'params <$> (Capnp.Gen.ById.X85150b117366d14b.get_Calculator'defFunction'params'paramCount raw)
                                                      <*> ((Capnp.Gen.ById.X85150b117366d14b.get_Calculator'defFunction'params'body raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Calculator'defFunction'params)) where
+instance (Classes.Marshal s Calculator'defFunction'params) where
     marshalInto raw_ value_ = case value_ of
         Calculator'defFunction'params{..} ->
             (do
@@ -204,20 +204,20 @@
                 ((Classes.cerialize (Untyped.message raw_) body) >>= (Capnp.Gen.ById.X85150b117366d14b.set_Calculator'defFunction'params'body raw_))
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (Calculator'defFunction'params))
-instance (Classes.Cerialize s (V.Vector (Calculator'defFunction'params))) where
+instance (Classes.Cerialize s Calculator'defFunction'params)
+instance (Classes.Cerialize s (V.Vector Calculator'defFunction'params)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Calculator'defFunction'params)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Calculator'defFunction'params))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Calculator'defFunction'params))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Calculator'defFunction'params)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Calculator'defFunction'params)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Calculator'defFunction'params))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Calculator'defFunction'params))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Calculator'defFunction'params)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Calculator'defFunction'params)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Calculator'defFunction'params))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Calculator'defFunction'params))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Calculator'defFunction'params)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data Calculator'defFunction'results 
     = Calculator'defFunction'results 
@@ -225,34 +225,34 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Calculator'defFunction'results)) where
+instance (Default.Default Calculator'defFunction'results) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Calculator'defFunction'results)) where
+instance (Classes.FromStruct Message.Const Calculator'defFunction'results) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Calculator'defFunction'results)) where
-    type Cerial msg (Calculator'defFunction'results) = (Capnp.Gen.ById.X85150b117366d14b.Calculator'defFunction'results msg)
+instance (Classes.Decerialize Calculator'defFunction'results) where
+    type Cerial msg Calculator'defFunction'results = (Capnp.Gen.ById.X85150b117366d14b.Calculator'defFunction'results msg)
     decerialize raw = (Calculator'defFunction'results <$> ((Capnp.Gen.ById.X85150b117366d14b.get_Calculator'defFunction'results'func raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Calculator'defFunction'results)) where
+instance (Classes.Marshal s Calculator'defFunction'results) where
     marshalInto raw_ value_ = case value_ of
         Calculator'defFunction'results{..} ->
             (do
                 ((Classes.cerialize (Untyped.message raw_) func) >>= (Capnp.Gen.ById.X85150b117366d14b.set_Calculator'defFunction'results'func raw_))
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (Calculator'defFunction'results))
-instance (Classes.Cerialize s (V.Vector (Calculator'defFunction'results))) where
+instance (Classes.Cerialize s Calculator'defFunction'results)
+instance (Classes.Cerialize s (V.Vector Calculator'defFunction'results)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Calculator'defFunction'results)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Calculator'defFunction'results))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Calculator'defFunction'results))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Calculator'defFunction'results)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Calculator'defFunction'results)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Calculator'defFunction'results))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Calculator'defFunction'results))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Calculator'defFunction'results)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Calculator'defFunction'results)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Calculator'defFunction'results))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Calculator'defFunction'results))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Calculator'defFunction'results)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data Calculator'getOperator'params 
     = Calculator'getOperator'params 
@@ -260,34 +260,34 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Calculator'getOperator'params)) where
+instance (Default.Default Calculator'getOperator'params) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Calculator'getOperator'params)) where
+instance (Classes.FromStruct Message.Const Calculator'getOperator'params) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Calculator'getOperator'params)) where
-    type Cerial msg (Calculator'getOperator'params) = (Capnp.Gen.ById.X85150b117366d14b.Calculator'getOperator'params msg)
+instance (Classes.Decerialize Calculator'getOperator'params) where
+    type Cerial msg Calculator'getOperator'params = (Capnp.Gen.ById.X85150b117366d14b.Calculator'getOperator'params msg)
     decerialize raw = (Calculator'getOperator'params <$> (Capnp.Gen.ById.X85150b117366d14b.get_Calculator'getOperator'params'op raw))
-instance (Classes.Marshal s (Calculator'getOperator'params)) where
+instance (Classes.Marshal s Calculator'getOperator'params) where
     marshalInto raw_ value_ = case value_ of
         Calculator'getOperator'params{..} ->
             (do
                 (Capnp.Gen.ById.X85150b117366d14b.set_Calculator'getOperator'params'op raw_ op)
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (Calculator'getOperator'params))
-instance (Classes.Cerialize s (V.Vector (Calculator'getOperator'params))) where
+instance (Classes.Cerialize s Calculator'getOperator'params)
+instance (Classes.Cerialize s (V.Vector Calculator'getOperator'params)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Calculator'getOperator'params)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Calculator'getOperator'params))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Calculator'getOperator'params))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Calculator'getOperator'params)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Calculator'getOperator'params)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Calculator'getOperator'params))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Calculator'getOperator'params))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Calculator'getOperator'params)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Calculator'getOperator'params)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Calculator'getOperator'params))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Calculator'getOperator'params))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Calculator'getOperator'params)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data Calculator'getOperator'results 
     = Calculator'getOperator'results 
@@ -295,34 +295,34 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Calculator'getOperator'results)) where
+instance (Default.Default Calculator'getOperator'results) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Calculator'getOperator'results)) where
+instance (Classes.FromStruct Message.Const Calculator'getOperator'results) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Calculator'getOperator'results)) where
-    type Cerial msg (Calculator'getOperator'results) = (Capnp.Gen.ById.X85150b117366d14b.Calculator'getOperator'results msg)
+instance (Classes.Decerialize Calculator'getOperator'results) where
+    type Cerial msg Calculator'getOperator'results = (Capnp.Gen.ById.X85150b117366d14b.Calculator'getOperator'results msg)
     decerialize raw = (Calculator'getOperator'results <$> ((Capnp.Gen.ById.X85150b117366d14b.get_Calculator'getOperator'results'func raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Calculator'getOperator'results)) where
+instance (Classes.Marshal s Calculator'getOperator'results) where
     marshalInto raw_ value_ = case value_ of
         Calculator'getOperator'results{..} ->
             (do
                 ((Classes.cerialize (Untyped.message raw_) func) >>= (Capnp.Gen.ById.X85150b117366d14b.set_Calculator'getOperator'results'func raw_))
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (Calculator'getOperator'results))
-instance (Classes.Cerialize s (V.Vector (Calculator'getOperator'results))) where
+instance (Classes.Cerialize s Calculator'getOperator'results)
+instance (Classes.Cerialize s (V.Vector Calculator'getOperator'results)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Calculator'getOperator'results)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Calculator'getOperator'results))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Calculator'getOperator'results))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Calculator'getOperator'results)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Calculator'getOperator'results)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Calculator'getOperator'results))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Calculator'getOperator'results))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Calculator'getOperator'results)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Calculator'getOperator'results)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Calculator'getOperator'results))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Calculator'getOperator'results))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Calculator'getOperator'results)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data Expression 
     = Expression'literal Std_.Double
@@ -333,12 +333,12 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Expression)) where
+instance (Default.Default Expression) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Expression)) where
+instance (Classes.FromStruct Message.Const Expression) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Expression)) where
-    type Cerial msg (Expression) = (Capnp.Gen.ById.X85150b117366d14b.Expression msg)
+instance (Classes.Decerialize Expression) where
+    type Cerial msg Expression = (Capnp.Gen.ById.X85150b117366d14b.Expression msg)
     decerialize raw = (do
         raw <- (Capnp.Gen.ById.X85150b117366d14b.get_Expression' raw)
         case raw of
@@ -353,7 +353,7 @@
             (Capnp.Gen.ById.X85150b117366d14b.Expression'unknown' tag) ->
                 (Std_.pure (Expression'unknown' tag))
         )
-instance (Classes.Marshal s (Expression)) where
+instance (Classes.Marshal s Expression) where
     marshalInto raw_ value_ = case value_ of
         (Expression'literal arg_) ->
             (Capnp.Gen.ById.X85150b117366d14b.set_Expression'literal raw_ arg_)
@@ -368,20 +368,20 @@
                 )
         (Expression'unknown' tag) ->
             (Capnp.Gen.ById.X85150b117366d14b.set_Expression'unknown' raw_ tag)
-instance (Classes.Cerialize s (Expression))
-instance (Classes.Cerialize s (V.Vector (Expression))) where
+instance (Classes.Cerialize s Expression)
+instance (Classes.Cerialize s (V.Vector Expression)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Expression)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Expression))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Expression))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Expression)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Expression)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Expression))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Expression))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Expression)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Expression)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Expression))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Expression))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Expression)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data Expression'call 
     = Expression'call' 
@@ -390,15 +390,15 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Expression'call)) where
+instance (Default.Default Expression'call) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Expression'call)) where
+instance (Classes.FromStruct Message.Const Expression'call) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Expression'call)) where
-    type Cerial msg (Expression'call) = (Capnp.Gen.ById.X85150b117366d14b.Expression'call msg)
+instance (Classes.Decerialize Expression'call) where
+    type Cerial msg Expression'call = (Capnp.Gen.ById.X85150b117366d14b.Expression'call msg)
     decerialize raw = (Expression'call' <$> ((Capnp.Gen.ById.X85150b117366d14b.get_Expression'call'function raw) >>= Classes.decerialize)
                                         <*> ((Capnp.Gen.ById.X85150b117366d14b.get_Expression'call'params raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Expression'call)) where
+instance (Classes.Marshal s Expression'call) where
     marshalInto raw_ value_ = case value_ of
         Expression'call'{..} ->
             (do
@@ -417,7 +417,7 @@
     value'read :: cap -> (Server.MethodHandler m Value'read'params Value'read'results)
     value'read _ = Server.methodUnimplemented
 export_Value :: ((STM.MonadSTM m)
-                ,(Value'server_ Std_.IO cap)) => Supervisors.Supervisor -> cap -> (m (Value))
+                ,(Value'server_ Std_.IO cap)) => Supervisors.Supervisor -> cap -> (m Value)
 export_Value sup_ server_ = (STM.liftSTM (Value <$> (Rpc.export sup_ Server.ServerOps{handleCast = (Server.unwrap server_)
                                                                                      ,handleStop = (Server.shutdown server_)
                                                                                      ,handleCall = (\interfaceId_ methodId_ -> case interfaceId_ of
@@ -429,24 +429,24 @@
                                                                                                      Server.methodUnimplemented
                                                                                          _ ->
                                                                                              Server.methodUnimplemented)})))
-instance (Rpc.IsClient (Value)) where
+instance (Rpc.IsClient Value) where
     fromClient  = Value
     toClient (Value client) = client
-instance (Classes.FromPtr msg (Value)) where
+instance (Classes.FromPtr msg Value) where
     fromPtr  = RpcHelpers.isClientFromPtr
-instance (Classes.ToPtr s (Value)) where
+instance (Classes.ToPtr s Value) where
     toPtr  = RpcHelpers.isClientToPtr
-instance (Classes.Decerialize (Value)) where
-    type Cerial msg (Value) = (Capnp.Gen.ById.X85150b117366d14b.Value msg)
+instance (Classes.Decerialize Value) where
+    type Cerial msg Value = (Capnp.Gen.ById.X85150b117366d14b.Value msg)
     decerialize (Capnp.Gen.ById.X85150b117366d14b.Value'newtype_ maybeCap) = case maybeCap of
         (Std_.Nothing) ->
             (Std_.pure (Value Message.nullClient))
         (Std_.Just cap) ->
             (Value <$> (Untyped.getClient cap))
-instance (Classes.Cerialize s (Value)) where
+instance (Classes.Cerialize s Value) where
     cerialize msg (Value client) = (Capnp.Gen.ById.X85150b117366d14b.Value'newtype_ <$> (Std_.Just <$> (Untyped.appendCap msg client)))
-instance (Server.Server Std_.IO (Value))
-instance (Value'server_ Std_.IO (Value)) where
+instance (Server.Server Std_.IO Value)
+instance (Value'server_ Std_.IO Value) where
     value'read (Value client) = (Rpc.clientMethodHandler 14116142932258867410 0 client)
 data Value'read'params 
     = Value'read'params 
@@ -454,33 +454,33 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Value'read'params)) where
+instance (Default.Default Value'read'params) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Value'read'params)) where
+instance (Classes.FromStruct Message.Const Value'read'params) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Value'read'params)) where
-    type Cerial msg (Value'read'params) = (Capnp.Gen.ById.X85150b117366d14b.Value'read'params msg)
+instance (Classes.Decerialize Value'read'params) where
+    type Cerial msg Value'read'params = (Capnp.Gen.ById.X85150b117366d14b.Value'read'params msg)
     decerialize raw = (Std_.pure Value'read'params)
-instance (Classes.Marshal s (Value'read'params)) where
+instance (Classes.Marshal s Value'read'params) where
     marshalInto raw_ value_ = case value_ of
         (Value'read'params) ->
             (do
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (Value'read'params))
-instance (Classes.Cerialize s (V.Vector (Value'read'params))) where
+instance (Classes.Cerialize s Value'read'params)
+instance (Classes.Cerialize s (V.Vector Value'read'params)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Value'read'params)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Value'read'params))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Value'read'params))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Value'read'params)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Value'read'params)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Value'read'params))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Value'read'params))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Value'read'params)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Value'read'params)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Value'read'params))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Value'read'params))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Value'read'params)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data Value'read'results 
     = Value'read'results 
@@ -488,34 +488,34 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Value'read'results)) where
+instance (Default.Default Value'read'results) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Value'read'results)) where
+instance (Classes.FromStruct Message.Const Value'read'results) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Value'read'results)) where
-    type Cerial msg (Value'read'results) = (Capnp.Gen.ById.X85150b117366d14b.Value'read'results msg)
+instance (Classes.Decerialize Value'read'results) where
+    type Cerial msg Value'read'results = (Capnp.Gen.ById.X85150b117366d14b.Value'read'results msg)
     decerialize raw = (Value'read'results <$> (Capnp.Gen.ById.X85150b117366d14b.get_Value'read'results'value raw))
-instance (Classes.Marshal s (Value'read'results)) where
+instance (Classes.Marshal s Value'read'results) where
     marshalInto raw_ value_ = case value_ of
         Value'read'results{..} ->
             (do
                 (Capnp.Gen.ById.X85150b117366d14b.set_Value'read'results'value raw_ value)
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (Value'read'results))
-instance (Classes.Cerialize s (V.Vector (Value'read'results))) where
+instance (Classes.Cerialize s Value'read'results)
+instance (Classes.Cerialize s (V.Vector Value'read'results)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Value'read'results)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Value'read'results))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Value'read'results))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Value'read'results)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Value'read'results)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Value'read'results))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Value'read'results))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Value'read'results)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Value'read'results)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Value'read'results))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Value'read'results))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Value'read'results)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 newtype Function 
     = Function Message.Client
@@ -528,7 +528,7 @@
     function'call :: cap -> (Server.MethodHandler m Function'call'params Function'call'results)
     function'call _ = Server.methodUnimplemented
 export_Function :: ((STM.MonadSTM m)
-                   ,(Function'server_ Std_.IO cap)) => Supervisors.Supervisor -> cap -> (m (Function))
+                   ,(Function'server_ Std_.IO cap)) => Supervisors.Supervisor -> cap -> (m Function)
 export_Function sup_ server_ = (STM.liftSTM (Function <$> (Rpc.export sup_ Server.ServerOps{handleCast = (Server.unwrap server_)
                                                                                            ,handleStop = (Server.shutdown server_)
                                                                                            ,handleCall = (\interfaceId_ methodId_ -> case interfaceId_ of
@@ -540,24 +540,24 @@
                                                                                                            Server.methodUnimplemented
                                                                                                _ ->
                                                                                                    Server.methodUnimplemented)})))
-instance (Rpc.IsClient (Function)) where
+instance (Rpc.IsClient Function) where
     fromClient  = Function
     toClient (Function client) = client
-instance (Classes.FromPtr msg (Function)) where
+instance (Classes.FromPtr msg Function) where
     fromPtr  = RpcHelpers.isClientFromPtr
-instance (Classes.ToPtr s (Function)) where
+instance (Classes.ToPtr s Function) where
     toPtr  = RpcHelpers.isClientToPtr
-instance (Classes.Decerialize (Function)) where
-    type Cerial msg (Function) = (Capnp.Gen.ById.X85150b117366d14b.Function msg)
+instance (Classes.Decerialize Function) where
+    type Cerial msg Function = (Capnp.Gen.ById.X85150b117366d14b.Function msg)
     decerialize (Capnp.Gen.ById.X85150b117366d14b.Function'newtype_ maybeCap) = case maybeCap of
         (Std_.Nothing) ->
             (Std_.pure (Function Message.nullClient))
         (Std_.Just cap) ->
             (Function <$> (Untyped.getClient cap))
-instance (Classes.Cerialize s (Function)) where
+instance (Classes.Cerialize s Function) where
     cerialize msg (Function client) = (Capnp.Gen.ById.X85150b117366d14b.Function'newtype_ <$> (Std_.Just <$> (Untyped.appendCap msg client)))
-instance (Server.Server Std_.IO (Function))
-instance (Function'server_ Std_.IO (Function)) where
+instance (Server.Server Std_.IO Function)
+instance (Function'server_ Std_.IO Function) where
     function'call (Function client) = (Rpc.clientMethodHandler 17143016017778443156 0 client)
 data Function'call'params 
     = Function'call'params 
@@ -565,34 +565,34 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Function'call'params)) where
+instance (Default.Default Function'call'params) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Function'call'params)) where
+instance (Classes.FromStruct Message.Const Function'call'params) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Function'call'params)) where
-    type Cerial msg (Function'call'params) = (Capnp.Gen.ById.X85150b117366d14b.Function'call'params msg)
+instance (Classes.Decerialize Function'call'params) where
+    type Cerial msg Function'call'params = (Capnp.Gen.ById.X85150b117366d14b.Function'call'params msg)
     decerialize raw = (Function'call'params <$> ((Capnp.Gen.ById.X85150b117366d14b.get_Function'call'params'params raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Function'call'params)) where
+instance (Classes.Marshal s Function'call'params) where
     marshalInto raw_ value_ = case value_ of
         Function'call'params{..} ->
             (do
                 ((Classes.cerialize (Untyped.message raw_) params) >>= (Capnp.Gen.ById.X85150b117366d14b.set_Function'call'params'params raw_))
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (Function'call'params))
-instance (Classes.Cerialize s (V.Vector (Function'call'params))) where
+instance (Classes.Cerialize s Function'call'params)
+instance (Classes.Cerialize s (V.Vector Function'call'params)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Function'call'params)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Function'call'params))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Function'call'params))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Function'call'params)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Function'call'params)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Function'call'params))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Function'call'params))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Function'call'params)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Function'call'params)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Function'call'params))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Function'call'params))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Function'call'params)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data Function'call'results 
     = Function'call'results 
@@ -600,34 +600,34 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Function'call'results)) where
+instance (Default.Default Function'call'results) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Function'call'results)) where
+instance (Classes.FromStruct Message.Const Function'call'results) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Function'call'results)) where
-    type Cerial msg (Function'call'results) = (Capnp.Gen.ById.X85150b117366d14b.Function'call'results msg)
+instance (Classes.Decerialize Function'call'results) where
+    type Cerial msg Function'call'results = (Capnp.Gen.ById.X85150b117366d14b.Function'call'results msg)
     decerialize raw = (Function'call'results <$> (Capnp.Gen.ById.X85150b117366d14b.get_Function'call'results'value raw))
-instance (Classes.Marshal s (Function'call'results)) where
+instance (Classes.Marshal s Function'call'results) where
     marshalInto raw_ value_ = case value_ of
         Function'call'results{..} ->
             (do
                 (Capnp.Gen.ById.X85150b117366d14b.set_Function'call'results'value raw_ value)
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (Function'call'results))
-instance (Classes.Cerialize s (V.Vector (Function'call'results))) where
+instance (Classes.Cerialize s Function'call'results)
+instance (Classes.Cerialize s (V.Vector Function'call'results)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Function'call'results)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Function'call'results))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Function'call'results))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Function'call'results)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Function'call'results)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Function'call'results))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Function'call'results))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Function'call'results)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Function'call'results)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Function'call'results))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Function'call'results))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Function'call'results)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 instance (Classes.Decerialize Capnp.Gen.ById.X85150b117366d14b.Operator) where
     type Cerial msg Capnp.Gen.ById.X85150b117366d14b.Operator = Capnp.Gen.ById.X85150b117366d14b.Operator
diff --git a/examples/gen/lib/Capnp/Gen/Echo/New.hs b/examples/gen/lib/Capnp/Gen/Echo/New.hs
new file mode 100644
--- /dev/null
+++ b/examples/gen/lib/Capnp/Gen/Echo/New.hs
@@ -0,0 +1,94 @@
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE EmptyDataDeriving #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE UndecidableInstances #-}
+{-# LANGUAGE OverloadedLabels #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE StandaloneDeriving #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# OPTIONS_GHC -Wno-unused-imports #-}
+{-# OPTIONS_GHC -Wno-dodgy-exports #-}
+{-# OPTIONS_GHC -Wno-unused-matches #-}
+{-# OPTIONS_GHC -Wno-orphans #-}
+{-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
+module Capnp.Gen.Echo.New where
+import qualified Capnp.Repr as R
+import qualified Capnp.Repr.Parsed as RP
+import qualified Capnp.New.Basics as Basics
+import qualified GHC.OverloadedLabels as OL
+import qualified Capnp.GenHelpers.New as GH
+import qualified Capnp.New.Classes as C
+import qualified GHC.Generics as Generics
+import qualified Capnp.GenHelpers.ReExports.Data.ByteString as BS
+import qualified Prelude as Std_
+import qualified Data.Word as Std_
+import qualified Data.Int as Std_
+import Prelude ((<$>), (<*>), (>>=))
+data Echo 
+type instance (R.ReprFor Echo) = (R.Ptr (Std_.Just R.Cap))
+instance (C.Parse Echo (GH.Client Echo)) where
+    parse  = GH.parseCap
+    encode  = GH.encodeCap
+instance (GH.HasMethod "echo" Echo Echo'echo'params Echo'echo'results) where
+    methodByLabel  = (GH.Method 16940812395455687611 0)
+data Echo'echo'params 
+type instance (R.ReprFor Echo'echo'params) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Echo'echo'params) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance (C.Allocate Echo'echo'params) where
+    type AllocHint Echo'echo'params = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Echo'echo'params (C.Parsed Echo'echo'params))
+instance (C.AllocateList Echo'echo'params) where
+    type ListAllocHint Echo'echo'params = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Echo'echo'params (C.Parsed Echo'echo'params))
+data instance C.Parsed Echo'echo'params
+    = Echo'echo'params 
+        {query :: (RP.Parsed Basics.Text)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Echo'echo'params))
+deriving instance (Std_.Eq (C.Parsed Echo'echo'params))
+instance (C.Parse Echo'echo'params (C.Parsed Echo'echo'params)) where
+    parse raw_ = (Echo'echo'params <$> (GH.parseField #query raw_))
+instance (C.Marshal Echo'echo'params (C.Parsed Echo'echo'params)) where
+    marshalInto raw_ Echo'echo'params{..} = (do
+        (GH.encodeField #query query raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "query" GH.Slot Echo'echo'params Basics.Text) where
+    fieldByLabel  = (GH.ptrField 0)
+data Echo'echo'results 
+type instance (R.ReprFor Echo'echo'results) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Echo'echo'results) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance (C.Allocate Echo'echo'results) where
+    type AllocHint Echo'echo'results = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Echo'echo'results (C.Parsed Echo'echo'results))
+instance (C.AllocateList Echo'echo'results) where
+    type ListAllocHint Echo'echo'results = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Echo'echo'results (C.Parsed Echo'echo'results))
+data instance C.Parsed Echo'echo'results
+    = Echo'echo'results 
+        {reply :: (RP.Parsed Basics.Text)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Echo'echo'results))
+deriving instance (Std_.Eq (C.Parsed Echo'echo'results))
+instance (C.Parse Echo'echo'results (C.Parsed Echo'echo'results)) where
+    parse raw_ = (Echo'echo'results <$> (GH.parseField #reply raw_))
+instance (C.Marshal Echo'echo'results (C.Parsed Echo'echo'results)) where
+    marshalInto raw_ Echo'echo'results{..} = (do
+        (GH.encodeField #reply reply raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "reply" GH.Slot Echo'echo'results Basics.Text) where
+    fieldByLabel  = (GH.ptrField 0)
diff --git a/examples/gen/lib/Capnp/Gen/Echo/Pure.hs b/examples/gen/lib/Capnp/Gen/Echo/Pure.hs
--- a/examples/gen/lib/Capnp/Gen/Echo/Pure.hs
+++ b/examples/gen/lib/Capnp/Gen/Echo/Pure.hs
@@ -53,7 +53,7 @@
     echo'echo :: cap -> (Server.MethodHandler m Echo'echo'params Echo'echo'results)
     echo'echo _ = Server.methodUnimplemented
 export_Echo :: ((STM.MonadSTM m)
-               ,(Echo'server_ Std_.IO cap)) => Supervisors.Supervisor -> cap -> (m (Echo))
+               ,(Echo'server_ Std_.IO cap)) => Supervisors.Supervisor -> cap -> (m Echo)
 export_Echo sup_ server_ = (STM.liftSTM (Echo <$> (Rpc.export sup_ Server.ServerOps{handleCast = (Server.unwrap server_)
                                                                                    ,handleStop = (Server.shutdown server_)
                                                                                    ,handleCall = (\interfaceId_ methodId_ -> case interfaceId_ of
@@ -65,24 +65,24 @@
                                                                                                    Server.methodUnimplemented
                                                                                        _ ->
                                                                                            Server.methodUnimplemented)})))
-instance (Rpc.IsClient (Echo)) where
+instance (Rpc.IsClient Echo) where
     fromClient  = Echo
     toClient (Echo client) = client
-instance (Classes.FromPtr msg (Echo)) where
+instance (Classes.FromPtr msg Echo) where
     fromPtr  = RpcHelpers.isClientFromPtr
-instance (Classes.ToPtr s (Echo)) where
+instance (Classes.ToPtr s Echo) where
     toPtr  = RpcHelpers.isClientToPtr
-instance (Classes.Decerialize (Echo)) where
-    type Cerial msg (Echo) = (Capnp.Gen.ById.Xd0a87f36fa0182f5.Echo msg)
+instance (Classes.Decerialize Echo) where
+    type Cerial msg Echo = (Capnp.Gen.ById.Xd0a87f36fa0182f5.Echo msg)
     decerialize (Capnp.Gen.ById.Xd0a87f36fa0182f5.Echo'newtype_ maybeCap) = case maybeCap of
         (Std_.Nothing) ->
             (Std_.pure (Echo Message.nullClient))
         (Std_.Just cap) ->
             (Echo <$> (Untyped.getClient cap))
-instance (Classes.Cerialize s (Echo)) where
+instance (Classes.Cerialize s Echo) where
     cerialize msg (Echo client) = (Capnp.Gen.ById.Xd0a87f36fa0182f5.Echo'newtype_ <$> (Std_.Just <$> (Untyped.appendCap msg client)))
-instance (Server.Server Std_.IO (Echo))
-instance (Echo'server_ Std_.IO (Echo)) where
+instance (Server.Server Std_.IO Echo)
+instance (Echo'server_ Std_.IO Echo) where
     echo'echo (Echo client) = (Rpc.clientMethodHandler 16940812395455687611 0 client)
 data Echo'echo'params 
     = Echo'echo'params 
@@ -90,34 +90,34 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Echo'echo'params)) where
+instance (Default.Default Echo'echo'params) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Echo'echo'params)) where
+instance (Classes.FromStruct Message.Const Echo'echo'params) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Echo'echo'params)) where
-    type Cerial msg (Echo'echo'params) = (Capnp.Gen.ById.Xd0a87f36fa0182f5.Echo'echo'params msg)
+instance (Classes.Decerialize Echo'echo'params) where
+    type Cerial msg Echo'echo'params = (Capnp.Gen.ById.Xd0a87f36fa0182f5.Echo'echo'params msg)
     decerialize raw = (Echo'echo'params <$> ((Capnp.Gen.ById.Xd0a87f36fa0182f5.get_Echo'echo'params'query raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Echo'echo'params)) where
+instance (Classes.Marshal s Echo'echo'params) where
     marshalInto raw_ value_ = case value_ of
         Echo'echo'params{..} ->
             (do
                 ((Classes.cerialize (Untyped.message raw_) query) >>= (Capnp.Gen.ById.Xd0a87f36fa0182f5.set_Echo'echo'params'query raw_))
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (Echo'echo'params))
-instance (Classes.Cerialize s (V.Vector (Echo'echo'params))) where
+instance (Classes.Cerialize s Echo'echo'params)
+instance (Classes.Cerialize s (V.Vector Echo'echo'params)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Echo'echo'params)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Echo'echo'params))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Echo'echo'params))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Echo'echo'params)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Echo'echo'params)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Echo'echo'params))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Echo'echo'params))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Echo'echo'params)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Echo'echo'params)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Echo'echo'params))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Echo'echo'params))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Echo'echo'params)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data Echo'echo'results 
     = Echo'echo'results 
@@ -125,32 +125,32 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Echo'echo'results)) where
+instance (Default.Default Echo'echo'results) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Echo'echo'results)) where
+instance (Classes.FromStruct Message.Const Echo'echo'results) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Echo'echo'results)) where
-    type Cerial msg (Echo'echo'results) = (Capnp.Gen.ById.Xd0a87f36fa0182f5.Echo'echo'results msg)
+instance (Classes.Decerialize Echo'echo'results) where
+    type Cerial msg Echo'echo'results = (Capnp.Gen.ById.Xd0a87f36fa0182f5.Echo'echo'results msg)
     decerialize raw = (Echo'echo'results <$> ((Capnp.Gen.ById.Xd0a87f36fa0182f5.get_Echo'echo'results'reply raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Echo'echo'results)) where
+instance (Classes.Marshal s Echo'echo'results) where
     marshalInto raw_ value_ = case value_ of
         Echo'echo'results{..} ->
             (do
                 ((Classes.cerialize (Untyped.message raw_) reply) >>= (Capnp.Gen.ById.Xd0a87f36fa0182f5.set_Echo'echo'results'reply raw_))
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (Echo'echo'results))
-instance (Classes.Cerialize s (V.Vector (Echo'echo'results))) where
+instance (Classes.Cerialize s Echo'echo'results)
+instance (Classes.Cerialize s (V.Vector Echo'echo'results)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Echo'echo'results)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Echo'echo'results))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Echo'echo'results))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Echo'echo'results)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Echo'echo'results)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Echo'echo'results))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Echo'echo'results))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Echo'echo'results)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Echo'echo'results)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Echo'echo'results))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Echo'echo'results))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Echo'echo'results)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
diff --git a/examples/lib/Examples/Rpc/CalculatorClient.hs b/examples/lib/Examples/Rpc/CalculatorClient.hs
--- a/examples/lib/Examples/Rpc/CalculatorClient.hs
+++ b/examples/lib/Examples/Rpc/CalculatorClient.hs
@@ -1,53 +1,64 @@
 {-# LANGUAGE DuplicateRecordFields #-}
 {-# LANGUAGE NamedFieldPuns        #-}
+{-# LANGUAGE OverloadedLabels      #-}
 module Examples.Rpc.CalculatorClient (main) where
 
-import Network.Simple.TCP (connect)
-
-import qualified Data.Vector as V
-
-import Capnp         (def, defaultLimit)
-import Capnp.Rpc     (ConnConfig (..), handleConn, socketTransport, wait, (?))
-import Control.Monad (when)
+import qualified Capnp.New          as C
+import           Capnp.Rpc
+    (ConnConfig(..), fromClient, handleConn, socketTransport)
+import           Control.Monad      (when)
+import           Data.Function      ((&))
+import           Data.Functor       ((<&>))
+import qualified Data.Vector        as V
+import           Network.Simple.TCP (connect)
 
-import Capnp.Gen.Calculator.Pure
+import Capnp.Gen.Calculator.New
 
 main :: IO ()
 main = connect "localhost" "4000" $ \(sock, _addr) ->
-    handleConn (socketTransport sock defaultLimit) def
+    handleConn (socketTransport sock C.defaultLimit) C.def
         { debugMode = True
         , withBootstrap = Just $ \_sup client -> do
-            let calc = Calculator client
+            let calc :: C.Client Calculator
+                calc = fromClient client
 
-            Calculator'evaluate'results{value} <-
-                calculator'evaluate calc ? def
-                    { expression = Expression'literal 123 }
-                    >>= wait
-            Value'read'results{value} <- value'read value ? def >>= wait
+            value <- calc
+                & C.callP #evaluate C.def { expression = Expression $ Expression'literal 123 }
+                <&> C.pipe #value
+                >>= C.callR #read C.def
+                >>= C.waitPipeline
+                >>= C.evalLimitT C.defaultLimit . C.parseField #value
             assertEq value 123
 
-            Calculator'getOperator'results{func=add} <-
-                calculator'getOperator calc ? def { op = Operator'add      } >>= wait
-            Calculator'getOperator'results{func=subtract} <-
-                calculator'getOperator calc ? def { op = Operator'subtract } >>= wait
-            Calculator'evaluate'results{value} <- calculator'evaluate calc ? def
-                { expression =
-                    Expression'call Expression'call'
-                        { function = subtract
-                        , params = V.fromList
-                            [ Expression'call Expression'call'
-                                { function = add
-                                , params = V.fromList
-                                    [ Expression'literal 123
-                                    , Expression'literal 45
-                                    ]
-                                }
-                            , Expression'literal 67
-                            ]
-                        }
-                }
-                >>= wait
-            Value'read'results{value} <- value'read value ? def >>= wait
+            let getOp op = calc
+                    & C.callP #getOperator C.def { op }
+                    <&> C.pipe #func
+                    >>= C.asClient
+
+            add <- getOp Operator'add
+            subtract <- getOp Operator'subtract
+
+            value <- calc
+                & C.callP #evaluate C.def
+                    { expression =
+                        Expression $ Expression'call Expression'call'
+                            { function = subtract
+                            , params = V.fromList
+                                [ Expression $ Expression'call Expression'call'
+                                    { function = add
+                                    , params = V.fromList
+                                        [ Expression $ Expression'literal 123
+                                        , Expression $ Expression'literal 45
+                                        ]
+                                    }
+                                , Expression $ Expression'literal 67
+                                ]
+                            }
+                    }
+                <&> C.pipe #value
+                >>= C.callR #read C.def
+                >>= C.waitPipeline
+                >>= C.evalLimitT C.defaultLimit . C.parseField #value
             assertEq value 101
 
             putStrLn "PASS"
diff --git a/gen/lib/Capnp/Gen/ById/X86c366a91393f3f8.hs b/gen/lib/Capnp/Gen/ById/X86c366a91393f3f8.hs
--- a/gen/lib/Capnp/Gen/ById/X86c366a91393f3f8.hs
+++ b/gen/lib/Capnp/Gen/ById/X86c366a91393f3f8.hs
@@ -3,6 +3,7 @@
 {-# OPTIONS_GHC -Wno-unused-matches #-}
 {-# OPTIONS_GHC -Wno-orphans #-}
 {-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
 module Capnp.Gen.ById.X86c366a91393f3f8(module Capnp.Gen.Capnp.Stream) where
 import Capnp.Gen.Capnp.Stream
 import qualified Prelude as Std_
diff --git a/gen/lib/Capnp/Gen/ById/X86c366a91393f3f8/New.hs b/gen/lib/Capnp/Gen/ById/X86c366a91393f3f8/New.hs
new file mode 100644
--- /dev/null
+++ b/gen/lib/Capnp/Gen/ById/X86c366a91393f3f8/New.hs
@@ -0,0 +1,12 @@
+{-# OPTIONS_GHC -Wno-unused-imports #-}
+{-# OPTIONS_GHC -Wno-dodgy-exports #-}
+{-# OPTIONS_GHC -Wno-unused-matches #-}
+{-# OPTIONS_GHC -Wno-orphans #-}
+{-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
+module Capnp.Gen.ById.X86c366a91393f3f8.New(module Capnp.Gen.Capnp.Stream.New) where
+import Capnp.Gen.Capnp.Stream.New
+import qualified Prelude as Std_
+import qualified Data.Word as Std_
+import qualified Data.Int as Std_
+import Prelude ((<$>), (<*>), (>>=))
diff --git a/gen/lib/Capnp/Gen/ById/X86c366a91393f3f8/Pure.hs b/gen/lib/Capnp/Gen/ById/X86c366a91393f3f8/Pure.hs
--- a/gen/lib/Capnp/Gen/ById/X86c366a91393f3f8/Pure.hs
+++ b/gen/lib/Capnp/Gen/ById/X86c366a91393f3f8/Pure.hs
@@ -3,6 +3,7 @@
 {-# OPTIONS_GHC -Wno-unused-matches #-}
 {-# OPTIONS_GHC -Wno-orphans #-}
 {-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
 module Capnp.Gen.ById.X86c366a91393f3f8.Pure(module Capnp.Gen.Capnp.Stream.Pure) where
 import Capnp.Gen.Capnp.Stream.Pure
 import qualified Prelude as Std_
diff --git a/gen/lib/Capnp/Gen/ById/X8ef99297a43a5e34.hs b/gen/lib/Capnp/Gen/ById/X8ef99297a43a5e34.hs
--- a/gen/lib/Capnp/Gen/ById/X8ef99297a43a5e34.hs
+++ b/gen/lib/Capnp/Gen/ById/X8ef99297a43a5e34.hs
@@ -3,6 +3,7 @@
 {-# OPTIONS_GHC -Wno-unused-matches #-}
 {-# OPTIONS_GHC -Wno-orphans #-}
 {-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
 module Capnp.Gen.ById.X8ef99297a43a5e34(module Capnp.Gen.Capnp.Compat.Json) where
 import Capnp.Gen.Capnp.Compat.Json
 import qualified Prelude as Std_
diff --git a/gen/lib/Capnp/Gen/ById/X8ef99297a43a5e34/New.hs b/gen/lib/Capnp/Gen/ById/X8ef99297a43a5e34/New.hs
new file mode 100644
--- /dev/null
+++ b/gen/lib/Capnp/Gen/ById/X8ef99297a43a5e34/New.hs
@@ -0,0 +1,12 @@
+{-# OPTIONS_GHC -Wno-unused-imports #-}
+{-# OPTIONS_GHC -Wno-dodgy-exports #-}
+{-# OPTIONS_GHC -Wno-unused-matches #-}
+{-# OPTIONS_GHC -Wno-orphans #-}
+{-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
+module Capnp.Gen.ById.X8ef99297a43a5e34.New(module Capnp.Gen.Capnp.Compat.Json.New) where
+import Capnp.Gen.Capnp.Compat.Json.New
+import qualified Prelude as Std_
+import qualified Data.Word as Std_
+import qualified Data.Int as Std_
+import Prelude ((<$>), (<*>), (>>=))
diff --git a/gen/lib/Capnp/Gen/ById/X8ef99297a43a5e34/Pure.hs b/gen/lib/Capnp/Gen/ById/X8ef99297a43a5e34/Pure.hs
--- a/gen/lib/Capnp/Gen/ById/X8ef99297a43a5e34/Pure.hs
+++ b/gen/lib/Capnp/Gen/ById/X8ef99297a43a5e34/Pure.hs
@@ -3,6 +3,7 @@
 {-# OPTIONS_GHC -Wno-unused-matches #-}
 {-# OPTIONS_GHC -Wno-orphans #-}
 {-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
 module Capnp.Gen.ById.X8ef99297a43a5e34.Pure(module Capnp.Gen.Capnp.Compat.Json.Pure) where
 import Capnp.Gen.Capnp.Compat.Json.Pure
 import qualified Prelude as Std_
diff --git a/gen/lib/Capnp/Gen/ById/Xa184c7885cdaf2a1.hs b/gen/lib/Capnp/Gen/ById/Xa184c7885cdaf2a1.hs
--- a/gen/lib/Capnp/Gen/ById/Xa184c7885cdaf2a1.hs
+++ b/gen/lib/Capnp/Gen/ById/Xa184c7885cdaf2a1.hs
@@ -3,6 +3,7 @@
 {-# OPTIONS_GHC -Wno-unused-matches #-}
 {-# OPTIONS_GHC -Wno-orphans #-}
 {-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
 module Capnp.Gen.ById.Xa184c7885cdaf2a1(module Capnp.Gen.Capnp.RpcTwoparty) where
 import Capnp.Gen.Capnp.RpcTwoparty
 import qualified Prelude as Std_
diff --git a/gen/lib/Capnp/Gen/ById/Xa184c7885cdaf2a1/New.hs b/gen/lib/Capnp/Gen/ById/Xa184c7885cdaf2a1/New.hs
new file mode 100644
--- /dev/null
+++ b/gen/lib/Capnp/Gen/ById/Xa184c7885cdaf2a1/New.hs
@@ -0,0 +1,12 @@
+{-# OPTIONS_GHC -Wno-unused-imports #-}
+{-# OPTIONS_GHC -Wno-dodgy-exports #-}
+{-# OPTIONS_GHC -Wno-unused-matches #-}
+{-# OPTIONS_GHC -Wno-orphans #-}
+{-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
+module Capnp.Gen.ById.Xa184c7885cdaf2a1.New(module Capnp.Gen.Capnp.RpcTwoparty.New) where
+import Capnp.Gen.Capnp.RpcTwoparty.New
+import qualified Prelude as Std_
+import qualified Data.Word as Std_
+import qualified Data.Int as Std_
+import Prelude ((<$>), (<*>), (>>=))
diff --git a/gen/lib/Capnp/Gen/ById/Xa184c7885cdaf2a1/Pure.hs b/gen/lib/Capnp/Gen/ById/Xa184c7885cdaf2a1/Pure.hs
--- a/gen/lib/Capnp/Gen/ById/Xa184c7885cdaf2a1/Pure.hs
+++ b/gen/lib/Capnp/Gen/ById/Xa184c7885cdaf2a1/Pure.hs
@@ -3,6 +3,7 @@
 {-# OPTIONS_GHC -Wno-unused-matches #-}
 {-# OPTIONS_GHC -Wno-orphans #-}
 {-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
 module Capnp.Gen.ById.Xa184c7885cdaf2a1.Pure(module Capnp.Gen.Capnp.RpcTwoparty.Pure) where
 import Capnp.Gen.Capnp.RpcTwoparty.Pure
 import qualified Prelude as Std_
diff --git a/gen/lib/Capnp/Gen/ById/Xa93fc509624c72d9.hs b/gen/lib/Capnp/Gen/ById/Xa93fc509624c72d9.hs
--- a/gen/lib/Capnp/Gen/ById/Xa93fc509624c72d9.hs
+++ b/gen/lib/Capnp/Gen/ById/Xa93fc509624c72d9.hs
@@ -3,6 +3,7 @@
 {-# OPTIONS_GHC -Wno-unused-matches #-}
 {-# OPTIONS_GHC -Wno-orphans #-}
 {-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
 module Capnp.Gen.ById.Xa93fc509624c72d9(module Capnp.Gen.Capnp.Schema) where
 import Capnp.Gen.Capnp.Schema
 import qualified Prelude as Std_
diff --git a/gen/lib/Capnp/Gen/ById/Xa93fc509624c72d9/New.hs b/gen/lib/Capnp/Gen/ById/Xa93fc509624c72d9/New.hs
new file mode 100644
--- /dev/null
+++ b/gen/lib/Capnp/Gen/ById/Xa93fc509624c72d9/New.hs
@@ -0,0 +1,12 @@
+{-# OPTIONS_GHC -Wno-unused-imports #-}
+{-# OPTIONS_GHC -Wno-dodgy-exports #-}
+{-# OPTIONS_GHC -Wno-unused-matches #-}
+{-# OPTIONS_GHC -Wno-orphans #-}
+{-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
+module Capnp.Gen.ById.Xa93fc509624c72d9.New(module Capnp.Gen.Capnp.Schema.New) where
+import Capnp.Gen.Capnp.Schema.New
+import qualified Prelude as Std_
+import qualified Data.Word as Std_
+import qualified Data.Int as Std_
+import Prelude ((<$>), (<*>), (>>=))
diff --git a/gen/lib/Capnp/Gen/ById/Xa93fc509624c72d9/Pure.hs b/gen/lib/Capnp/Gen/ById/Xa93fc509624c72d9/Pure.hs
--- a/gen/lib/Capnp/Gen/ById/Xa93fc509624c72d9/Pure.hs
+++ b/gen/lib/Capnp/Gen/ById/Xa93fc509624c72d9/Pure.hs
@@ -3,6 +3,7 @@
 {-# OPTIONS_GHC -Wno-unused-matches #-}
 {-# OPTIONS_GHC -Wno-orphans #-}
 {-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
 module Capnp.Gen.ById.Xa93fc509624c72d9.Pure(module Capnp.Gen.Capnp.Schema.Pure) where
 import Capnp.Gen.Capnp.Schema.Pure
 import qualified Prelude as Std_
diff --git a/gen/lib/Capnp/Gen/ById/Xb312981b2552a250.hs b/gen/lib/Capnp/Gen/ById/Xb312981b2552a250.hs
--- a/gen/lib/Capnp/Gen/ById/Xb312981b2552a250.hs
+++ b/gen/lib/Capnp/Gen/ById/Xb312981b2552a250.hs
@@ -3,6 +3,7 @@
 {-# OPTIONS_GHC -Wno-unused-matches #-}
 {-# OPTIONS_GHC -Wno-orphans #-}
 {-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
 module Capnp.Gen.ById.Xb312981b2552a250(module Capnp.Gen.Capnp.Rpc) where
 import Capnp.Gen.Capnp.Rpc
 import qualified Prelude as Std_
diff --git a/gen/lib/Capnp/Gen/ById/Xb312981b2552a250/New.hs b/gen/lib/Capnp/Gen/ById/Xb312981b2552a250/New.hs
new file mode 100644
--- /dev/null
+++ b/gen/lib/Capnp/Gen/ById/Xb312981b2552a250/New.hs
@@ -0,0 +1,12 @@
+{-# OPTIONS_GHC -Wno-unused-imports #-}
+{-# OPTIONS_GHC -Wno-dodgy-exports #-}
+{-# OPTIONS_GHC -Wno-unused-matches #-}
+{-# OPTIONS_GHC -Wno-orphans #-}
+{-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
+module Capnp.Gen.ById.Xb312981b2552a250.New(module Capnp.Gen.Capnp.Rpc.New) where
+import Capnp.Gen.Capnp.Rpc.New
+import qualified Prelude as Std_
+import qualified Data.Word as Std_
+import qualified Data.Int as Std_
+import Prelude ((<$>), (<*>), (>>=))
diff --git a/gen/lib/Capnp/Gen/ById/Xb312981b2552a250/Pure.hs b/gen/lib/Capnp/Gen/ById/Xb312981b2552a250/Pure.hs
--- a/gen/lib/Capnp/Gen/ById/Xb312981b2552a250/Pure.hs
+++ b/gen/lib/Capnp/Gen/ById/Xb312981b2552a250/Pure.hs
@@ -3,6 +3,7 @@
 {-# OPTIONS_GHC -Wno-unused-matches #-}
 {-# OPTIONS_GHC -Wno-orphans #-}
 {-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
 module Capnp.Gen.ById.Xb312981b2552a250.Pure(module Capnp.Gen.Capnp.Rpc.Pure) where
 import Capnp.Gen.Capnp.Rpc.Pure
 import qualified Prelude as Std_
diff --git a/gen/lib/Capnp/Gen/ById/Xb8630836983feed7.hs b/gen/lib/Capnp/Gen/ById/Xb8630836983feed7.hs
--- a/gen/lib/Capnp/Gen/ById/Xb8630836983feed7.hs
+++ b/gen/lib/Capnp/Gen/ById/Xb8630836983feed7.hs
@@ -3,6 +3,7 @@
 {-# OPTIONS_GHC -Wno-unused-matches #-}
 {-# OPTIONS_GHC -Wno-orphans #-}
 {-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
 module Capnp.Gen.ById.Xb8630836983feed7(module Capnp.Gen.Capnp.Persistent) where
 import Capnp.Gen.Capnp.Persistent
 import qualified Prelude as Std_
diff --git a/gen/lib/Capnp/Gen/ById/Xb8630836983feed7/New.hs b/gen/lib/Capnp/Gen/ById/Xb8630836983feed7/New.hs
new file mode 100644
--- /dev/null
+++ b/gen/lib/Capnp/Gen/ById/Xb8630836983feed7/New.hs
@@ -0,0 +1,12 @@
+{-# OPTIONS_GHC -Wno-unused-imports #-}
+{-# OPTIONS_GHC -Wno-dodgy-exports #-}
+{-# OPTIONS_GHC -Wno-unused-matches #-}
+{-# OPTIONS_GHC -Wno-orphans #-}
+{-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
+module Capnp.Gen.ById.Xb8630836983feed7.New(module Capnp.Gen.Capnp.Persistent.New) where
+import Capnp.Gen.Capnp.Persistent.New
+import qualified Prelude as Std_
+import qualified Data.Word as Std_
+import qualified Data.Int as Std_
+import Prelude ((<$>), (<*>), (>>=))
diff --git a/gen/lib/Capnp/Gen/ById/Xb8630836983feed7/Pure.hs b/gen/lib/Capnp/Gen/ById/Xb8630836983feed7/Pure.hs
--- a/gen/lib/Capnp/Gen/ById/Xb8630836983feed7/Pure.hs
+++ b/gen/lib/Capnp/Gen/ById/Xb8630836983feed7/Pure.hs
@@ -3,6 +3,7 @@
 {-# OPTIONS_GHC -Wno-unused-matches #-}
 {-# OPTIONS_GHC -Wno-orphans #-}
 {-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
 module Capnp.Gen.ById.Xb8630836983feed7.Pure(module Capnp.Gen.Capnp.Persistent.Pure) where
 import Capnp.Gen.Capnp.Persistent.Pure
 import qualified Prelude as Std_
diff --git a/gen/lib/Capnp/Gen/ById/Xbdf87d7bb8304e81.hs b/gen/lib/Capnp/Gen/ById/Xbdf87d7bb8304e81.hs
--- a/gen/lib/Capnp/Gen/ById/Xbdf87d7bb8304e81.hs
+++ b/gen/lib/Capnp/Gen/ById/Xbdf87d7bb8304e81.hs
@@ -3,6 +3,7 @@
 {-# OPTIONS_GHC -Wno-unused-matches #-}
 {-# OPTIONS_GHC -Wno-orphans #-}
 {-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
 module Capnp.Gen.ById.Xbdf87d7bb8304e81(module Capnp.Gen.Capnp.Cxx) where
 import Capnp.Gen.Capnp.Cxx
 import qualified Prelude as Std_
diff --git a/gen/lib/Capnp/Gen/ById/Xbdf87d7bb8304e81/New.hs b/gen/lib/Capnp/Gen/ById/Xbdf87d7bb8304e81/New.hs
new file mode 100644
--- /dev/null
+++ b/gen/lib/Capnp/Gen/ById/Xbdf87d7bb8304e81/New.hs
@@ -0,0 +1,12 @@
+{-# OPTIONS_GHC -Wno-unused-imports #-}
+{-# OPTIONS_GHC -Wno-dodgy-exports #-}
+{-# OPTIONS_GHC -Wno-unused-matches #-}
+{-# OPTIONS_GHC -Wno-orphans #-}
+{-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
+module Capnp.Gen.ById.Xbdf87d7bb8304e81.New(module Capnp.Gen.Capnp.Cxx.New) where
+import Capnp.Gen.Capnp.Cxx.New
+import qualified Prelude as Std_
+import qualified Data.Word as Std_
+import qualified Data.Int as Std_
+import Prelude ((<$>), (<*>), (>>=))
diff --git a/gen/lib/Capnp/Gen/ById/Xbdf87d7bb8304e81/Pure.hs b/gen/lib/Capnp/Gen/ById/Xbdf87d7bb8304e81/Pure.hs
--- a/gen/lib/Capnp/Gen/ById/Xbdf87d7bb8304e81/Pure.hs
+++ b/gen/lib/Capnp/Gen/ById/Xbdf87d7bb8304e81/Pure.hs
@@ -3,6 +3,7 @@
 {-# OPTIONS_GHC -Wno-unused-matches #-}
 {-# OPTIONS_GHC -Wno-orphans #-}
 {-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
 module Capnp.Gen.ById.Xbdf87d7bb8304e81.Pure(module Capnp.Gen.Capnp.Cxx.Pure) where
 import Capnp.Gen.Capnp.Cxx.Pure
 import qualified Prelude as Std_
diff --git a/gen/lib/Capnp/Gen/Capnp/Compat/Json.hs b/gen/lib/Capnp/Gen/Capnp/Compat/Json.hs
--- a/gen/lib/Capnp/Gen/Capnp/Compat/Json.hs
+++ b/gen/lib/Capnp/Gen/Capnp/Compat/Json.hs
@@ -10,6 +10,7 @@
 {-# OPTIONS_GHC -Wno-unused-matches #-}
 {-# OPTIONS_GHC -Wno-orphans #-}
 {-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
 module Capnp.Gen.Capnp.Compat.Json where
 import qualified Capnp.Message as Message
 import qualified Capnp.Untyped as Untyped
diff --git a/gen/lib/Capnp/Gen/Capnp/Compat/Json/New.hs b/gen/lib/Capnp/Gen/Capnp/Compat/Json/New.hs
new file mode 100644
--- /dev/null
+++ b/gen/lib/Capnp/Gen/Capnp/Compat/Json/New.hs
@@ -0,0 +1,277 @@
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE EmptyDataDeriving #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE UndecidableInstances #-}
+{-# LANGUAGE OverloadedLabels #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE StandaloneDeriving #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# OPTIONS_GHC -Wno-unused-imports #-}
+{-# OPTIONS_GHC -Wno-dodgy-exports #-}
+{-# OPTIONS_GHC -Wno-unused-matches #-}
+{-# OPTIONS_GHC -Wno-orphans #-}
+{-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
+module Capnp.Gen.Capnp.Compat.Json.New where
+import qualified Capnp.Repr as R
+import qualified Capnp.Repr.Parsed as RP
+import qualified Capnp.New.Basics as Basics
+import qualified GHC.OverloadedLabels as OL
+import qualified Capnp.GenHelpers.New as GH
+import qualified Capnp.New.Classes as C
+import qualified GHC.Generics as Generics
+import qualified Capnp.GenHelpers.ReExports.Data.ByteString as BS
+import qualified Prelude as Std_
+import qualified Data.Word as Std_
+import qualified Data.Int as Std_
+import Prelude ((<$>), (<*>), (>>=))
+data Value 
+type instance (R.ReprFor Value) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Value) where
+    numStructWords  = 2
+    numStructPtrs  = 1
+instance (C.Allocate Value) where
+    type AllocHint Value = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Value (C.Parsed Value))
+instance (C.AllocateList Value) where
+    type ListAllocHint Value = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Value (C.Parsed Value))
+data instance C.Parsed Value
+    = Value 
+        {union' :: (C.Parsed (GH.Which Value))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Value))
+deriving instance (Std_.Eq (C.Parsed Value))
+instance (C.Parse Value (C.Parsed Value)) where
+    parse raw_ = (Value <$> (C.parse (GH.structUnion raw_)))
+instance (C.Marshal Value (C.Parsed Value)) where
+    marshalInto raw_ Value{..} = (do
+        (C.marshalInto (GH.structUnion raw_) union')
+        )
+instance (GH.HasUnion Value) where
+    unionField  = (GH.dataField 0 0 16 0)
+    data RawWhich mut_ Value
+        = RW_Value'null (R.Raw mut_ ())
+        | RW_Value'boolean (R.Raw mut_ Std_.Bool)
+        | RW_Value'number (R.Raw mut_ Std_.Double)
+        | RW_Value'string (R.Raw mut_ Basics.Text)
+        | RW_Value'array (R.Raw mut_ (R.List Value))
+        | RW_Value'object (R.Raw mut_ (R.List Value'Field))
+        | RW_Value'call (R.Raw mut_ Value'Call)
+        | RW_Value'unknown' Std_.Word16
+    internalWhich tag_ struct_ = case tag_ of
+        0 ->
+            (RW_Value'null <$> (GH.readVariant #null struct_))
+        1 ->
+            (RW_Value'boolean <$> (GH.readVariant #boolean struct_))
+        2 ->
+            (RW_Value'number <$> (GH.readVariant #number struct_))
+        3 ->
+            (RW_Value'string <$> (GH.readVariant #string struct_))
+        4 ->
+            (RW_Value'array <$> (GH.readVariant #array struct_))
+        5 ->
+            (RW_Value'object <$> (GH.readVariant #object struct_))
+        6 ->
+            (RW_Value'call <$> (GH.readVariant #call struct_))
+        _ ->
+            (Std_.pure (RW_Value'unknown' tag_))
+    data Which Value
+instance (GH.HasVariant "null" GH.Slot Value ()) where
+    variantByLabel  = (GH.Variant GH.voidField 0)
+instance (GH.HasVariant "boolean" GH.Slot Value Std_.Bool) where
+    variantByLabel  = (GH.Variant (GH.dataField 16 0 1 0) 1)
+instance (GH.HasVariant "number" GH.Slot Value Std_.Double) where
+    variantByLabel  = (GH.Variant (GH.dataField 0 1 64 0) 2)
+instance (GH.HasVariant "string" GH.Slot Value Basics.Text) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 3)
+instance (GH.HasVariant "array" GH.Slot Value (R.List Value)) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 4)
+instance (GH.HasVariant "object" GH.Slot Value (R.List Value'Field)) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 5)
+instance (GH.HasVariant "call" GH.Slot Value Value'Call) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 6)
+data instance C.Parsed (GH.Which Value)
+    = Value'null 
+    | Value'boolean (RP.Parsed Std_.Bool)
+    | Value'number (RP.Parsed Std_.Double)
+    | Value'string (RP.Parsed Basics.Text)
+    | Value'array (RP.Parsed (R.List Value))
+    | Value'object (RP.Parsed (R.List Value'Field))
+    | Value'call (RP.Parsed Value'Call)
+    | Value'unknown' Std_.Word16
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed (GH.Which Value)))
+deriving instance (Std_.Eq (C.Parsed (GH.Which Value)))
+instance (C.Parse (GH.Which Value) (C.Parsed (GH.Which Value))) where
+    parse raw_ = (do
+        rawWhich_ <- (GH.unionWhich raw_)
+        case rawWhich_ of
+            (RW_Value'null _) ->
+                (Std_.pure Value'null)
+            (RW_Value'boolean rawArg_) ->
+                (Value'boolean <$> (C.parse rawArg_))
+            (RW_Value'number rawArg_) ->
+                (Value'number <$> (C.parse rawArg_))
+            (RW_Value'string rawArg_) ->
+                (Value'string <$> (C.parse rawArg_))
+            (RW_Value'array rawArg_) ->
+                (Value'array <$> (C.parse rawArg_))
+            (RW_Value'object rawArg_) ->
+                (Value'object <$> (C.parse rawArg_))
+            (RW_Value'call rawArg_) ->
+                (Value'call <$> (C.parse rawArg_))
+            (RW_Value'unknown' tag_) ->
+                (Std_.pure (Value'unknown' tag_))
+        )
+instance (C.Marshal (GH.Which Value) (C.Parsed (GH.Which Value))) where
+    marshalInto raw_ parsed_ = case parsed_ of
+        (Value'null) ->
+            (GH.encodeVariant #null () (GH.unionStruct raw_))
+        (Value'boolean arg_) ->
+            (GH.encodeVariant #boolean arg_ (GH.unionStruct raw_))
+        (Value'number arg_) ->
+            (GH.encodeVariant #number arg_ (GH.unionStruct raw_))
+        (Value'string arg_) ->
+            (GH.encodeVariant #string arg_ (GH.unionStruct raw_))
+        (Value'array arg_) ->
+            (GH.encodeVariant #array arg_ (GH.unionStruct raw_))
+        (Value'object arg_) ->
+            (GH.encodeVariant #object arg_ (GH.unionStruct raw_))
+        (Value'call arg_) ->
+            (GH.encodeVariant #call arg_ (GH.unionStruct raw_))
+        (Value'unknown' tag_) ->
+            (GH.encodeField GH.unionField tag_ (GH.unionStruct raw_))
+data Value'Field 
+type instance (R.ReprFor Value'Field) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Value'Field) where
+    numStructWords  = 0
+    numStructPtrs  = 2
+instance (C.Allocate Value'Field) where
+    type AllocHint Value'Field = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Value'Field (C.Parsed Value'Field))
+instance (C.AllocateList Value'Field) where
+    type ListAllocHint Value'Field = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Value'Field (C.Parsed Value'Field))
+data instance C.Parsed Value'Field
+    = Value'Field 
+        {name :: (RP.Parsed Basics.Text)
+        ,value :: (RP.Parsed Value)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Value'Field))
+deriving instance (Std_.Eq (C.Parsed Value'Field))
+instance (C.Parse Value'Field (C.Parsed Value'Field)) where
+    parse raw_ = (Value'Field <$> (GH.parseField #name raw_)
+                              <*> (GH.parseField #value raw_))
+instance (C.Marshal Value'Field (C.Parsed Value'Field)) where
+    marshalInto raw_ Value'Field{..} = (do
+        (GH.encodeField #name name raw_)
+        (GH.encodeField #value value raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "name" GH.Slot Value'Field Basics.Text) where
+    fieldByLabel  = (GH.ptrField 0)
+instance (GH.HasField "value" GH.Slot Value'Field Value) where
+    fieldByLabel  = (GH.ptrField 1)
+data Value'Call 
+type instance (R.ReprFor Value'Call) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Value'Call) where
+    numStructWords  = 0
+    numStructPtrs  = 2
+instance (C.Allocate Value'Call) where
+    type AllocHint Value'Call = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Value'Call (C.Parsed Value'Call))
+instance (C.AllocateList Value'Call) where
+    type ListAllocHint Value'Call = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Value'Call (C.Parsed Value'Call))
+data instance C.Parsed Value'Call
+    = Value'Call 
+        {function :: (RP.Parsed Basics.Text)
+        ,params :: (RP.Parsed (R.List Value))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Value'Call))
+deriving instance (Std_.Eq (C.Parsed Value'Call))
+instance (C.Parse Value'Call (C.Parsed Value'Call)) where
+    parse raw_ = (Value'Call <$> (GH.parseField #function raw_)
+                             <*> (GH.parseField #params raw_))
+instance (C.Marshal Value'Call (C.Parsed Value'Call)) where
+    marshalInto raw_ Value'Call{..} = (do
+        (GH.encodeField #function function raw_)
+        (GH.encodeField #params params raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "function" GH.Slot Value'Call Basics.Text) where
+    fieldByLabel  = (GH.ptrField 0)
+instance (GH.HasField "params" GH.Slot Value'Call (R.List Value)) where
+    fieldByLabel  = (GH.ptrField 1)
+data FlattenOptions 
+type instance (R.ReprFor FlattenOptions) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct FlattenOptions) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance (C.Allocate FlattenOptions) where
+    type AllocHint FlattenOptions = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc FlattenOptions (C.Parsed FlattenOptions))
+instance (C.AllocateList FlattenOptions) where
+    type ListAllocHint FlattenOptions = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc FlattenOptions (C.Parsed FlattenOptions))
+data instance C.Parsed FlattenOptions
+    = FlattenOptions 
+        {prefix :: (RP.Parsed Basics.Text)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed FlattenOptions))
+deriving instance (Std_.Eq (C.Parsed FlattenOptions))
+instance (C.Parse FlattenOptions (C.Parsed FlattenOptions)) where
+    parse raw_ = (FlattenOptions <$> (GH.parseField #prefix raw_))
+instance (C.Marshal FlattenOptions (C.Parsed FlattenOptions)) where
+    marshalInto raw_ FlattenOptions{..} = (do
+        (GH.encodeField #prefix prefix raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "prefix" GH.Slot FlattenOptions Basics.Text) where
+    fieldByLabel  = (GH.ptrField 0)
+data DiscriminatorOptions 
+type instance (R.ReprFor DiscriminatorOptions) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct DiscriminatorOptions) where
+    numStructWords  = 0
+    numStructPtrs  = 2
+instance (C.Allocate DiscriminatorOptions) where
+    type AllocHint DiscriminatorOptions = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc DiscriminatorOptions (C.Parsed DiscriminatorOptions))
+instance (C.AllocateList DiscriminatorOptions) where
+    type ListAllocHint DiscriminatorOptions = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc DiscriminatorOptions (C.Parsed DiscriminatorOptions))
+data instance C.Parsed DiscriminatorOptions
+    = DiscriminatorOptions 
+        {name :: (RP.Parsed Basics.Text)
+        ,valueName :: (RP.Parsed Basics.Text)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed DiscriminatorOptions))
+deriving instance (Std_.Eq (C.Parsed DiscriminatorOptions))
+instance (C.Parse DiscriminatorOptions (C.Parsed DiscriminatorOptions)) where
+    parse raw_ = (DiscriminatorOptions <$> (GH.parseField #name raw_)
+                                       <*> (GH.parseField #valueName raw_))
+instance (C.Marshal DiscriminatorOptions (C.Parsed DiscriminatorOptions)) where
+    marshalInto raw_ DiscriminatorOptions{..} = (do
+        (GH.encodeField #name name raw_)
+        (GH.encodeField #valueName valueName raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "name" GH.Slot DiscriminatorOptions Basics.Text) where
+    fieldByLabel  = (GH.ptrField 0)
+instance (GH.HasField "valueName" GH.Slot DiscriminatorOptions Basics.Text) where
+    fieldByLabel  = (GH.ptrField 1)
diff --git a/gen/lib/Capnp/Gen/Capnp/Compat/Json/Pure.hs b/gen/lib/Capnp/Gen/Capnp/Compat/Json/Pure.hs
--- a/gen/lib/Capnp/Gen/Capnp/Compat/Json/Pure.hs
+++ b/gen/lib/Capnp/Gen/Capnp/Compat/Json/Pure.hs
@@ -13,6 +13,7 @@
 {-# OPTIONS_GHC -Wno-unused-matches #-}
 {-# OPTIONS_GHC -Wno-orphans #-}
 {-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
 module Capnp.Gen.Capnp.Compat.Json.Pure(Value(..)
                                        ,Value'Field(..)
                                        ,Value'Call(..)
@@ -47,12 +48,12 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Value)) where
+instance (Default.Default Value) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Value)) where
+instance (Classes.FromStruct Message.Const Value) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Value)) where
-    type Cerial msg (Value) = (Capnp.Gen.ById.X8ef99297a43a5e34.Value msg)
+instance (Classes.Decerialize Value) where
+    type Cerial msg Value = (Capnp.Gen.ById.X8ef99297a43a5e34.Value msg)
     decerialize raw = (do
         raw <- (Capnp.Gen.ById.X8ef99297a43a5e34.get_Value' raw)
         case raw of
@@ -73,7 +74,7 @@
             (Capnp.Gen.ById.X8ef99297a43a5e34.Value'unknown' tag) ->
                 (Std_.pure (Value'unknown' tag))
         )
-instance (Classes.Marshal s (Value)) where
+instance (Classes.Marshal s Value) where
     marshalInto raw_ value_ = case value_ of
         (Value'null) ->
             (Capnp.Gen.ById.X8ef99297a43a5e34.set_Value'null raw_)
@@ -91,20 +92,20 @@
             ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X8ef99297a43a5e34.set_Value'call raw_))
         (Value'unknown' tag) ->
             (Capnp.Gen.ById.X8ef99297a43a5e34.set_Value'unknown' raw_ tag)
-instance (Classes.Cerialize s (Value))
-instance (Classes.Cerialize s (V.Vector (Value))) where
+instance (Classes.Cerialize s Value)
+instance (Classes.Cerialize s (V.Vector Value)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Value)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Value))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Value))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Value)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Value)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Value))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Value))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Value)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Value)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Value))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Value))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Value)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data Value'Field 
     = Value'Field 
@@ -113,15 +114,15 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Value'Field)) where
+instance (Default.Default Value'Field) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Value'Field)) where
+instance (Classes.FromStruct Message.Const Value'Field) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Value'Field)) where
-    type Cerial msg (Value'Field) = (Capnp.Gen.ById.X8ef99297a43a5e34.Value'Field msg)
+instance (Classes.Decerialize Value'Field) where
+    type Cerial msg Value'Field = (Capnp.Gen.ById.X8ef99297a43a5e34.Value'Field msg)
     decerialize raw = (Value'Field <$> ((Capnp.Gen.ById.X8ef99297a43a5e34.get_Value'Field'name raw) >>= Classes.decerialize)
                                    <*> ((Capnp.Gen.ById.X8ef99297a43a5e34.get_Value'Field'value raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Value'Field)) where
+instance (Classes.Marshal s Value'Field) where
     marshalInto raw_ value_ = case value_ of
         Value'Field{..} ->
             (do
@@ -129,20 +130,20 @@
                 ((Classes.cerialize (Untyped.message raw_) value) >>= (Capnp.Gen.ById.X8ef99297a43a5e34.set_Value'Field'value raw_))
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (Value'Field))
-instance (Classes.Cerialize s (V.Vector (Value'Field))) where
+instance (Classes.Cerialize s Value'Field)
+instance (Classes.Cerialize s (V.Vector Value'Field)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Value'Field)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Value'Field))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Value'Field))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Value'Field)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Value'Field)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Value'Field))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Value'Field))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Value'Field)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Value'Field)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Value'Field))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Value'Field))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Value'Field)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data Value'Call 
     = Value'Call 
@@ -151,15 +152,15 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Value'Call)) where
+instance (Default.Default Value'Call) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Value'Call)) where
+instance (Classes.FromStruct Message.Const Value'Call) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Value'Call)) where
-    type Cerial msg (Value'Call) = (Capnp.Gen.ById.X8ef99297a43a5e34.Value'Call msg)
+instance (Classes.Decerialize Value'Call) where
+    type Cerial msg Value'Call = (Capnp.Gen.ById.X8ef99297a43a5e34.Value'Call msg)
     decerialize raw = (Value'Call <$> ((Capnp.Gen.ById.X8ef99297a43a5e34.get_Value'Call'function raw) >>= Classes.decerialize)
                                   <*> ((Capnp.Gen.ById.X8ef99297a43a5e34.get_Value'Call'params raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Value'Call)) where
+instance (Classes.Marshal s Value'Call) where
     marshalInto raw_ value_ = case value_ of
         Value'Call{..} ->
             (do
@@ -167,20 +168,20 @@
                 ((Classes.cerialize (Untyped.message raw_) params) >>= (Capnp.Gen.ById.X8ef99297a43a5e34.set_Value'Call'params raw_))
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (Value'Call))
-instance (Classes.Cerialize s (V.Vector (Value'Call))) where
+instance (Classes.Cerialize s Value'Call)
+instance (Classes.Cerialize s (V.Vector Value'Call)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Value'Call)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Value'Call))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Value'Call))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Value'Call)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Value'Call)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Value'Call))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Value'Call))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Value'Call)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Value'Call)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Value'Call))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Value'Call))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Value'Call)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data FlattenOptions 
     = FlattenOptions 
@@ -188,34 +189,34 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (FlattenOptions)) where
+instance (Default.Default FlattenOptions) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (FlattenOptions)) where
+instance (Classes.FromStruct Message.Const FlattenOptions) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (FlattenOptions)) where
-    type Cerial msg (FlattenOptions) = (Capnp.Gen.ById.X8ef99297a43a5e34.FlattenOptions msg)
+instance (Classes.Decerialize FlattenOptions) where
+    type Cerial msg FlattenOptions = (Capnp.Gen.ById.X8ef99297a43a5e34.FlattenOptions msg)
     decerialize raw = (FlattenOptions <$> ((Capnp.Gen.ById.X8ef99297a43a5e34.get_FlattenOptions'prefix raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (FlattenOptions)) where
+instance (Classes.Marshal s FlattenOptions) where
     marshalInto raw_ value_ = case value_ of
         FlattenOptions{..} ->
             (do
                 ((Classes.cerialize (Untyped.message raw_) prefix) >>= (Capnp.Gen.ById.X8ef99297a43a5e34.set_FlattenOptions'prefix raw_))
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (FlattenOptions))
-instance (Classes.Cerialize s (V.Vector (FlattenOptions))) where
+instance (Classes.Cerialize s FlattenOptions)
+instance (Classes.Cerialize s (V.Vector FlattenOptions)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (FlattenOptions)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector FlattenOptions))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (FlattenOptions))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector FlattenOptions)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (FlattenOptions)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector FlattenOptions))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (FlattenOptions))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector FlattenOptions)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (FlattenOptions)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector FlattenOptions))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (FlattenOptions))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector FlattenOptions)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data DiscriminatorOptions 
     = DiscriminatorOptions 
@@ -224,15 +225,15 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (DiscriminatorOptions)) where
+instance (Default.Default DiscriminatorOptions) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (DiscriminatorOptions)) where
+instance (Classes.FromStruct Message.Const DiscriminatorOptions) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (DiscriminatorOptions)) where
-    type Cerial msg (DiscriminatorOptions) = (Capnp.Gen.ById.X8ef99297a43a5e34.DiscriminatorOptions msg)
+instance (Classes.Decerialize DiscriminatorOptions) where
+    type Cerial msg DiscriminatorOptions = (Capnp.Gen.ById.X8ef99297a43a5e34.DiscriminatorOptions msg)
     decerialize raw = (DiscriminatorOptions <$> ((Capnp.Gen.ById.X8ef99297a43a5e34.get_DiscriminatorOptions'name raw) >>= Classes.decerialize)
                                             <*> ((Capnp.Gen.ById.X8ef99297a43a5e34.get_DiscriminatorOptions'valueName raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (DiscriminatorOptions)) where
+instance (Classes.Marshal s DiscriminatorOptions) where
     marshalInto raw_ value_ = case value_ of
         DiscriminatorOptions{..} ->
             (do
@@ -240,18 +241,18 @@
                 ((Classes.cerialize (Untyped.message raw_) valueName) >>= (Capnp.Gen.ById.X8ef99297a43a5e34.set_DiscriminatorOptions'valueName raw_))
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (DiscriminatorOptions))
-instance (Classes.Cerialize s (V.Vector (DiscriminatorOptions))) where
+instance (Classes.Cerialize s DiscriminatorOptions)
+instance (Classes.Cerialize s (V.Vector DiscriminatorOptions)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (DiscriminatorOptions)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector DiscriminatorOptions))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (DiscriminatorOptions))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector DiscriminatorOptions)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (DiscriminatorOptions)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector DiscriminatorOptions))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (DiscriminatorOptions))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector DiscriminatorOptions)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (DiscriminatorOptions)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector DiscriminatorOptions))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (DiscriminatorOptions))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector DiscriminatorOptions)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
diff --git a/gen/lib/Capnp/Gen/Capnp/Cxx.hs b/gen/lib/Capnp/Gen/Capnp/Cxx.hs
--- a/gen/lib/Capnp/Gen/Capnp/Cxx.hs
+++ b/gen/lib/Capnp/Gen/Capnp/Cxx.hs
@@ -10,6 +10,7 @@
 {-# OPTIONS_GHC -Wno-unused-matches #-}
 {-# OPTIONS_GHC -Wno-orphans #-}
 {-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
 module Capnp.Gen.Capnp.Cxx where
 import qualified Capnp.Message as Message
 import qualified Capnp.Untyped as Untyped
diff --git a/gen/lib/Capnp/Gen/Capnp/Cxx/New.hs b/gen/lib/Capnp/Gen/Capnp/Cxx/New.hs
new file mode 100644
--- /dev/null
+++ b/gen/lib/Capnp/Gen/Capnp/Cxx/New.hs
@@ -0,0 +1,31 @@
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE EmptyDataDeriving #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE UndecidableInstances #-}
+{-# LANGUAGE OverloadedLabels #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE StandaloneDeriving #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# OPTIONS_GHC -Wno-unused-imports #-}
+{-# OPTIONS_GHC -Wno-dodgy-exports #-}
+{-# OPTIONS_GHC -Wno-unused-matches #-}
+{-# OPTIONS_GHC -Wno-orphans #-}
+{-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
+module Capnp.Gen.Capnp.Cxx.New where
+import qualified Capnp.Repr as R
+import qualified Capnp.Repr.Parsed as RP
+import qualified Capnp.New.Basics as Basics
+import qualified GHC.OverloadedLabels as OL
+import qualified Capnp.GenHelpers.New as GH
+import qualified Capnp.New.Classes as C
+import qualified GHC.Generics as Generics
+import qualified Capnp.GenHelpers.ReExports.Data.ByteString as BS
+import qualified Prelude as Std_
+import qualified Data.Word as Std_
+import qualified Data.Int as Std_
+import Prelude ((<$>), (<*>), (>>=))
diff --git a/gen/lib/Capnp/Gen/Capnp/Cxx/Pure.hs b/gen/lib/Capnp/Gen/Capnp/Cxx/Pure.hs
--- a/gen/lib/Capnp/Gen/Capnp/Cxx/Pure.hs
+++ b/gen/lib/Capnp/Gen/Capnp/Cxx/Pure.hs
@@ -13,6 +13,7 @@
 {-# OPTIONS_GHC -Wno-unused-matches #-}
 {-# OPTIONS_GHC -Wno-orphans #-}
 {-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
 module Capnp.Gen.Capnp.Cxx.Pure() where
 import qualified Capnp.GenHelpers.ReExports.Data.Vector as V
 import qualified Capnp.GenHelpers.ReExports.Data.Text as T
diff --git a/gen/lib/Capnp/Gen/Capnp/Persistent.hs b/gen/lib/Capnp/Gen/Capnp/Persistent.hs
--- a/gen/lib/Capnp/Gen/Capnp/Persistent.hs
+++ b/gen/lib/Capnp/Gen/Capnp/Persistent.hs
@@ -10,6 +10,7 @@
 {-# OPTIONS_GHC -Wno-unused-matches #-}
 {-# OPTIONS_GHC -Wno-orphans #-}
 {-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
 module Capnp.Gen.Capnp.Persistent where
 import qualified Capnp.Message as Message
 import qualified Capnp.Untyped as Untyped
diff --git a/gen/lib/Capnp/Gen/Capnp/Persistent/New.hs b/gen/lib/Capnp/Gen/Capnp/Persistent/New.hs
new file mode 100644
--- /dev/null
+++ b/gen/lib/Capnp/Gen/Capnp/Persistent/New.hs
@@ -0,0 +1,266 @@
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE EmptyDataDeriving #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE UndecidableInstances #-}
+{-# LANGUAGE OverloadedLabels #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE StandaloneDeriving #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# OPTIONS_GHC -Wno-unused-imports #-}
+{-# OPTIONS_GHC -Wno-dodgy-exports #-}
+{-# OPTIONS_GHC -Wno-unused-matches #-}
+{-# OPTIONS_GHC -Wno-orphans #-}
+{-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
+module Capnp.Gen.Capnp.Persistent.New where
+import qualified Capnp.Repr as R
+import qualified Capnp.Repr.Parsed as RP
+import qualified Capnp.New.Basics as Basics
+import qualified GHC.OverloadedLabels as OL
+import qualified Capnp.GenHelpers.New as GH
+import qualified Capnp.New.Classes as C
+import qualified GHC.Generics as Generics
+import qualified Capnp.GenHelpers.ReExports.Data.ByteString as BS
+import qualified Prelude as Std_
+import qualified Data.Word as Std_
+import qualified Data.Int as Std_
+import Prelude ((<$>), (<*>), (>>=))
+data Persistent sturdyRef owner
+type instance (R.ReprFor (Persistent sturdyRef owner)) = (R.Ptr (Std_.Just R.Cap))
+instance ((GH.TypeParam sturdyRef)
+         ,(GH.TypeParam owner)) => (C.Parse (Persistent sturdyRef owner) (GH.Client (Persistent sturdyRef owner))) where
+    parse  = GH.parseCap
+    encode  = GH.encodeCap
+instance ((GH.TypeParam sturdyRef)
+         ,(GH.TypeParam owner)) => (GH.HasMethod "save" (Persistent sturdyRef owner) (Persistent'SaveParams sturdyRef owner) (Persistent'SaveResults sturdyRef owner)) where
+    methodByLabel  = (GH.Method 14468694717054801553 0)
+data Persistent'SaveParams sturdyRef owner
+type instance (R.ReprFor (Persistent'SaveParams sturdyRef owner)) = (R.Ptr (Std_.Just R.Struct))
+instance ((GH.TypeParam sturdyRef)
+         ,(GH.TypeParam owner)) => (C.TypedStruct (Persistent'SaveParams sturdyRef owner)) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance ((GH.TypeParam sturdyRef)
+         ,(GH.TypeParam owner)) => (C.Allocate (Persistent'SaveParams sturdyRef owner)) where
+    type AllocHint (Persistent'SaveParams sturdyRef owner) = ()
+    new _ = C.newTypedStruct
+instance ((GH.TypeParam sturdyRef)
+         ,(GH.TypeParam owner)) => (C.EstimateAlloc (Persistent'SaveParams sturdyRef owner) (C.Parsed (Persistent'SaveParams sturdyRef owner)))
+instance ((GH.TypeParam sturdyRef)
+         ,(GH.TypeParam owner)) => (C.AllocateList (Persistent'SaveParams sturdyRef owner)) where
+    type ListAllocHint (Persistent'SaveParams sturdyRef owner) = Std_.Int
+    newList  = C.newTypedStructList
+instance ((GH.TypeParam sturdyRef)
+         ,(GH.TypeParam owner)) => (C.EstimateListAlloc (Persistent'SaveParams sturdyRef owner) (C.Parsed (Persistent'SaveParams sturdyRef owner)))
+data instance C.Parsed (Persistent'SaveParams sturdyRef owner)
+    = Persistent'SaveParams 
+        {sealFor :: (RP.Parsed owner)}
+    deriving(Generics.Generic)
+deriving instance ((Std_.Show (RP.Parsed sturdyRef))
+                  ,(Std_.Show (RP.Parsed owner))) => (Std_.Show (C.Parsed (Persistent'SaveParams sturdyRef owner)))
+deriving instance ((Std_.Eq (RP.Parsed sturdyRef))
+                  ,(Std_.Eq (RP.Parsed owner))) => (Std_.Eq (C.Parsed (Persistent'SaveParams sturdyRef owner)))
+instance ((GH.TypeParam sturdyRef)
+         ,(GH.TypeParam owner)) => (C.Parse (Persistent'SaveParams sturdyRef owner) (C.Parsed (Persistent'SaveParams sturdyRef owner))) where
+    parse raw_ = (Persistent'SaveParams <$> (GH.parseField #sealFor raw_))
+instance ((GH.TypeParam sturdyRef)
+         ,(GH.TypeParam owner)) => (C.Marshal (Persistent'SaveParams sturdyRef owner) (C.Parsed (Persistent'SaveParams sturdyRef owner))) where
+    marshalInto raw_ Persistent'SaveParams{..} = (do
+        (GH.encodeField #sealFor sealFor raw_)
+        (Std_.pure ())
+        )
+instance ((GH.TypeParam sturdyRef)
+         ,(GH.TypeParam owner)) => (GH.HasField "sealFor" GH.Slot (Persistent'SaveParams sturdyRef owner) owner) where
+    fieldByLabel  = (GH.ptrField 0)
+data Persistent'SaveResults sturdyRef owner
+type instance (R.ReprFor (Persistent'SaveResults sturdyRef owner)) = (R.Ptr (Std_.Just R.Struct))
+instance ((GH.TypeParam sturdyRef)
+         ,(GH.TypeParam owner)) => (C.TypedStruct (Persistent'SaveResults sturdyRef owner)) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance ((GH.TypeParam sturdyRef)
+         ,(GH.TypeParam owner)) => (C.Allocate (Persistent'SaveResults sturdyRef owner)) where
+    type AllocHint (Persistent'SaveResults sturdyRef owner) = ()
+    new _ = C.newTypedStruct
+instance ((GH.TypeParam sturdyRef)
+         ,(GH.TypeParam owner)) => (C.EstimateAlloc (Persistent'SaveResults sturdyRef owner) (C.Parsed (Persistent'SaveResults sturdyRef owner)))
+instance ((GH.TypeParam sturdyRef)
+         ,(GH.TypeParam owner)) => (C.AllocateList (Persistent'SaveResults sturdyRef owner)) where
+    type ListAllocHint (Persistent'SaveResults sturdyRef owner) = Std_.Int
+    newList  = C.newTypedStructList
+instance ((GH.TypeParam sturdyRef)
+         ,(GH.TypeParam owner)) => (C.EstimateListAlloc (Persistent'SaveResults sturdyRef owner) (C.Parsed (Persistent'SaveResults sturdyRef owner)))
+data instance C.Parsed (Persistent'SaveResults sturdyRef owner)
+    = Persistent'SaveResults 
+        {sturdyRef :: (RP.Parsed sturdyRef)}
+    deriving(Generics.Generic)
+deriving instance ((Std_.Show (RP.Parsed sturdyRef))
+                  ,(Std_.Show (RP.Parsed owner))) => (Std_.Show (C.Parsed (Persistent'SaveResults sturdyRef owner)))
+deriving instance ((Std_.Eq (RP.Parsed sturdyRef))
+                  ,(Std_.Eq (RP.Parsed owner))) => (Std_.Eq (C.Parsed (Persistent'SaveResults sturdyRef owner)))
+instance ((GH.TypeParam sturdyRef)
+         ,(GH.TypeParam owner)) => (C.Parse (Persistent'SaveResults sturdyRef owner) (C.Parsed (Persistent'SaveResults sturdyRef owner))) where
+    parse raw_ = (Persistent'SaveResults <$> (GH.parseField #sturdyRef raw_))
+instance ((GH.TypeParam sturdyRef)
+         ,(GH.TypeParam owner)) => (C.Marshal (Persistent'SaveResults sturdyRef owner) (C.Parsed (Persistent'SaveResults sturdyRef owner))) where
+    marshalInto raw_ Persistent'SaveResults{..} = (do
+        (GH.encodeField #sturdyRef sturdyRef raw_)
+        (Std_.pure ())
+        )
+instance ((GH.TypeParam sturdyRef)
+         ,(GH.TypeParam owner)) => (GH.HasField "sturdyRef" GH.Slot (Persistent'SaveResults sturdyRef owner) sturdyRef) where
+    fieldByLabel  = (GH.ptrField 0)
+data RealmGateway internalRef externalRef internalOwner externalOwner
+type instance (R.ReprFor (RealmGateway internalRef externalRef internalOwner externalOwner)) = (R.Ptr (Std_.Just R.Cap))
+instance ((GH.TypeParam internalRef)
+         ,(GH.TypeParam externalRef)
+         ,(GH.TypeParam internalOwner)
+         ,(GH.TypeParam externalOwner)) => (C.Parse (RealmGateway internalRef externalRef internalOwner externalOwner) (GH.Client (RealmGateway internalRef externalRef internalOwner externalOwner))) where
+    parse  = GH.parseCap
+    encode  = GH.encodeCap
+instance ((GH.TypeParam internalRef)
+         ,(GH.TypeParam externalRef)
+         ,(GH.TypeParam internalOwner)
+         ,(GH.TypeParam externalOwner)) => (GH.HasMethod "import_" (RealmGateway internalRef externalRef internalOwner externalOwner) (RealmGateway'import'params internalRef externalRef internalOwner externalOwner) (Persistent'SaveResults internalRef internalOwner)) where
+    methodByLabel  = (GH.Method 9583422979879616212 0)
+instance ((GH.TypeParam internalRef)
+         ,(GH.TypeParam externalRef)
+         ,(GH.TypeParam internalOwner)
+         ,(GH.TypeParam externalOwner)) => (GH.HasMethod "export" (RealmGateway internalRef externalRef internalOwner externalOwner) (RealmGateway'export'params internalRef externalRef internalOwner externalOwner) (Persistent'SaveResults externalRef externalOwner)) where
+    methodByLabel  = (GH.Method 9583422979879616212 1)
+data RealmGateway'import'params internalRef externalRef internalOwner externalOwner
+type instance (R.ReprFor (RealmGateway'import'params internalRef externalRef internalOwner externalOwner)) = (R.Ptr (Std_.Just R.Struct))
+instance ((GH.TypeParam internalRef)
+         ,(GH.TypeParam externalRef)
+         ,(GH.TypeParam internalOwner)
+         ,(GH.TypeParam externalOwner)) => (C.TypedStruct (RealmGateway'import'params internalRef externalRef internalOwner externalOwner)) where
+    numStructWords  = 0
+    numStructPtrs  = 2
+instance ((GH.TypeParam internalRef)
+         ,(GH.TypeParam externalRef)
+         ,(GH.TypeParam internalOwner)
+         ,(GH.TypeParam externalOwner)) => (C.Allocate (RealmGateway'import'params internalRef externalRef internalOwner externalOwner)) where
+    type AllocHint (RealmGateway'import'params internalRef externalRef internalOwner externalOwner) = ()
+    new _ = C.newTypedStruct
+instance ((GH.TypeParam internalRef)
+         ,(GH.TypeParam externalRef)
+         ,(GH.TypeParam internalOwner)
+         ,(GH.TypeParam externalOwner)) => (C.EstimateAlloc (RealmGateway'import'params internalRef externalRef internalOwner externalOwner) (C.Parsed (RealmGateway'import'params internalRef externalRef internalOwner externalOwner)))
+instance ((GH.TypeParam internalRef)
+         ,(GH.TypeParam externalRef)
+         ,(GH.TypeParam internalOwner)
+         ,(GH.TypeParam externalOwner)) => (C.AllocateList (RealmGateway'import'params internalRef externalRef internalOwner externalOwner)) where
+    type ListAllocHint (RealmGateway'import'params internalRef externalRef internalOwner externalOwner) = Std_.Int
+    newList  = C.newTypedStructList
+instance ((GH.TypeParam internalRef)
+         ,(GH.TypeParam externalRef)
+         ,(GH.TypeParam internalOwner)
+         ,(GH.TypeParam externalOwner)) => (C.EstimateListAlloc (RealmGateway'import'params internalRef externalRef internalOwner externalOwner) (C.Parsed (RealmGateway'import'params internalRef externalRef internalOwner externalOwner)))
+data instance C.Parsed (RealmGateway'import'params internalRef externalRef internalOwner externalOwner)
+    = RealmGateway'import'params 
+        {cap :: (RP.Parsed (Persistent externalRef externalOwner))
+        ,params :: (RP.Parsed (Persistent'SaveParams internalRef internalOwner))}
+    deriving(Generics.Generic)
+deriving instance ((Std_.Show (RP.Parsed internalRef))
+                  ,(Std_.Show (RP.Parsed externalRef))
+                  ,(Std_.Show (RP.Parsed internalOwner))
+                  ,(Std_.Show (RP.Parsed externalOwner))) => (Std_.Show (C.Parsed (RealmGateway'import'params internalRef externalRef internalOwner externalOwner)))
+deriving instance ((Std_.Eq (RP.Parsed internalRef))
+                  ,(Std_.Eq (RP.Parsed externalRef))
+                  ,(Std_.Eq (RP.Parsed internalOwner))
+                  ,(Std_.Eq (RP.Parsed externalOwner))) => (Std_.Eq (C.Parsed (RealmGateway'import'params internalRef externalRef internalOwner externalOwner)))
+instance ((GH.TypeParam internalRef)
+         ,(GH.TypeParam externalRef)
+         ,(GH.TypeParam internalOwner)
+         ,(GH.TypeParam externalOwner)) => (C.Parse (RealmGateway'import'params internalRef externalRef internalOwner externalOwner) (C.Parsed (RealmGateway'import'params internalRef externalRef internalOwner externalOwner))) where
+    parse raw_ = (RealmGateway'import'params <$> (GH.parseField #cap raw_)
+                                             <*> (GH.parseField #params raw_))
+instance ((GH.TypeParam internalRef)
+         ,(GH.TypeParam externalRef)
+         ,(GH.TypeParam internalOwner)
+         ,(GH.TypeParam externalOwner)) => (C.Marshal (RealmGateway'import'params internalRef externalRef internalOwner externalOwner) (C.Parsed (RealmGateway'import'params internalRef externalRef internalOwner externalOwner))) where
+    marshalInto raw_ RealmGateway'import'params{..} = (do
+        (GH.encodeField #cap cap raw_)
+        (GH.encodeField #params params raw_)
+        (Std_.pure ())
+        )
+instance ((GH.TypeParam internalRef)
+         ,(GH.TypeParam externalRef)
+         ,(GH.TypeParam internalOwner)
+         ,(GH.TypeParam externalOwner)) => (GH.HasField "cap" GH.Slot (RealmGateway'import'params internalRef externalRef internalOwner externalOwner) (Persistent externalRef externalOwner)) where
+    fieldByLabel  = (GH.ptrField 0)
+instance ((GH.TypeParam internalRef)
+         ,(GH.TypeParam externalRef)
+         ,(GH.TypeParam internalOwner)
+         ,(GH.TypeParam externalOwner)) => (GH.HasField "params" GH.Slot (RealmGateway'import'params internalRef externalRef internalOwner externalOwner) (Persistent'SaveParams internalRef internalOwner)) where
+    fieldByLabel  = (GH.ptrField 1)
+data RealmGateway'export'params internalRef externalRef internalOwner externalOwner
+type instance (R.ReprFor (RealmGateway'export'params internalRef externalRef internalOwner externalOwner)) = (R.Ptr (Std_.Just R.Struct))
+instance ((GH.TypeParam internalRef)
+         ,(GH.TypeParam externalRef)
+         ,(GH.TypeParam internalOwner)
+         ,(GH.TypeParam externalOwner)) => (C.TypedStruct (RealmGateway'export'params internalRef externalRef internalOwner externalOwner)) where
+    numStructWords  = 0
+    numStructPtrs  = 2
+instance ((GH.TypeParam internalRef)
+         ,(GH.TypeParam externalRef)
+         ,(GH.TypeParam internalOwner)
+         ,(GH.TypeParam externalOwner)) => (C.Allocate (RealmGateway'export'params internalRef externalRef internalOwner externalOwner)) where
+    type AllocHint (RealmGateway'export'params internalRef externalRef internalOwner externalOwner) = ()
+    new _ = C.newTypedStruct
+instance ((GH.TypeParam internalRef)
+         ,(GH.TypeParam externalRef)
+         ,(GH.TypeParam internalOwner)
+         ,(GH.TypeParam externalOwner)) => (C.EstimateAlloc (RealmGateway'export'params internalRef externalRef internalOwner externalOwner) (C.Parsed (RealmGateway'export'params internalRef externalRef internalOwner externalOwner)))
+instance ((GH.TypeParam internalRef)
+         ,(GH.TypeParam externalRef)
+         ,(GH.TypeParam internalOwner)
+         ,(GH.TypeParam externalOwner)) => (C.AllocateList (RealmGateway'export'params internalRef externalRef internalOwner externalOwner)) where
+    type ListAllocHint (RealmGateway'export'params internalRef externalRef internalOwner externalOwner) = Std_.Int
+    newList  = C.newTypedStructList
+instance ((GH.TypeParam internalRef)
+         ,(GH.TypeParam externalRef)
+         ,(GH.TypeParam internalOwner)
+         ,(GH.TypeParam externalOwner)) => (C.EstimateListAlloc (RealmGateway'export'params internalRef externalRef internalOwner externalOwner) (C.Parsed (RealmGateway'export'params internalRef externalRef internalOwner externalOwner)))
+data instance C.Parsed (RealmGateway'export'params internalRef externalRef internalOwner externalOwner)
+    = RealmGateway'export'params 
+        {cap :: (RP.Parsed (Persistent internalRef internalOwner))
+        ,params :: (RP.Parsed (Persistent'SaveParams externalRef externalOwner))}
+    deriving(Generics.Generic)
+deriving instance ((Std_.Show (RP.Parsed internalRef))
+                  ,(Std_.Show (RP.Parsed externalRef))
+                  ,(Std_.Show (RP.Parsed internalOwner))
+                  ,(Std_.Show (RP.Parsed externalOwner))) => (Std_.Show (C.Parsed (RealmGateway'export'params internalRef externalRef internalOwner externalOwner)))
+deriving instance ((Std_.Eq (RP.Parsed internalRef))
+                  ,(Std_.Eq (RP.Parsed externalRef))
+                  ,(Std_.Eq (RP.Parsed internalOwner))
+                  ,(Std_.Eq (RP.Parsed externalOwner))) => (Std_.Eq (C.Parsed (RealmGateway'export'params internalRef externalRef internalOwner externalOwner)))
+instance ((GH.TypeParam internalRef)
+         ,(GH.TypeParam externalRef)
+         ,(GH.TypeParam internalOwner)
+         ,(GH.TypeParam externalOwner)) => (C.Parse (RealmGateway'export'params internalRef externalRef internalOwner externalOwner) (C.Parsed (RealmGateway'export'params internalRef externalRef internalOwner externalOwner))) where
+    parse raw_ = (RealmGateway'export'params <$> (GH.parseField #cap raw_)
+                                             <*> (GH.parseField #params raw_))
+instance ((GH.TypeParam internalRef)
+         ,(GH.TypeParam externalRef)
+         ,(GH.TypeParam internalOwner)
+         ,(GH.TypeParam externalOwner)) => (C.Marshal (RealmGateway'export'params internalRef externalRef internalOwner externalOwner) (C.Parsed (RealmGateway'export'params internalRef externalRef internalOwner externalOwner))) where
+    marshalInto raw_ RealmGateway'export'params{..} = (do
+        (GH.encodeField #cap cap raw_)
+        (GH.encodeField #params params raw_)
+        (Std_.pure ())
+        )
+instance ((GH.TypeParam internalRef)
+         ,(GH.TypeParam externalRef)
+         ,(GH.TypeParam internalOwner)
+         ,(GH.TypeParam externalOwner)) => (GH.HasField "cap" GH.Slot (RealmGateway'export'params internalRef externalRef internalOwner externalOwner) (Persistent internalRef internalOwner)) where
+    fieldByLabel  = (GH.ptrField 0)
+instance ((GH.TypeParam internalRef)
+         ,(GH.TypeParam externalRef)
+         ,(GH.TypeParam internalOwner)
+         ,(GH.TypeParam externalOwner)) => (GH.HasField "params" GH.Slot (RealmGateway'export'params internalRef externalRef internalOwner externalOwner) (Persistent'SaveParams externalRef externalOwner)) where
+    fieldByLabel  = (GH.ptrField 1)
diff --git a/gen/lib/Capnp/Gen/Capnp/Persistent/Pure.hs b/gen/lib/Capnp/Gen/Capnp/Persistent/Pure.hs
--- a/gen/lib/Capnp/Gen/Capnp/Persistent/Pure.hs
+++ b/gen/lib/Capnp/Gen/Capnp/Persistent/Pure.hs
@@ -13,6 +13,7 @@
 {-# OPTIONS_GHC -Wno-unused-matches #-}
 {-# OPTIONS_GHC -Wno-orphans #-}
 {-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
 module Capnp.Gen.Capnp.Persistent.Pure(Persistent(..)
                                       ,Persistent'server_(..)
                                       ,export_Persistent
diff --git a/gen/lib/Capnp/Gen/Capnp/Rpc.hs b/gen/lib/Capnp/Gen/Capnp/Rpc.hs
--- a/gen/lib/Capnp/Gen/Capnp/Rpc.hs
+++ b/gen/lib/Capnp/Gen/Capnp/Rpc.hs
@@ -10,6 +10,7 @@
 {-# OPTIONS_GHC -Wno-unused-matches #-}
 {-# OPTIONS_GHC -Wno-orphans #-}
 {-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
 module Capnp.Gen.Capnp.Rpc where
 import qualified Capnp.Message as Message
 import qualified Capnp.Untyped as Untyped
diff --git a/gen/lib/Capnp/Gen/Capnp/Rpc/New.hs b/gen/lib/Capnp/Gen/Capnp/Rpc/New.hs
new file mode 100644
--- /dev/null
+++ b/gen/lib/Capnp/Gen/Capnp/Rpc/New.hs
@@ -0,0 +1,1325 @@
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE EmptyDataDeriving #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE UndecidableInstances #-}
+{-# LANGUAGE OverloadedLabels #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE StandaloneDeriving #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# OPTIONS_GHC -Wno-unused-imports #-}
+{-# OPTIONS_GHC -Wno-dodgy-exports #-}
+{-# OPTIONS_GHC -Wno-unused-matches #-}
+{-# OPTIONS_GHC -Wno-orphans #-}
+{-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
+module Capnp.Gen.Capnp.Rpc.New where
+import qualified Capnp.Repr as R
+import qualified Capnp.Repr.Parsed as RP
+import qualified Capnp.New.Basics as Basics
+import qualified GHC.OverloadedLabels as OL
+import qualified Capnp.GenHelpers.New as GH
+import qualified Capnp.New.Classes as C
+import qualified GHC.Generics as Generics
+import qualified Capnp.GenHelpers.ReExports.Data.ByteString as BS
+import qualified Prelude as Std_
+import qualified Data.Word as Std_
+import qualified Data.Int as Std_
+import Prelude ((<$>), (<*>), (>>=))
+data Message 
+type instance (R.ReprFor Message) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Message) where
+    numStructWords  = 1
+    numStructPtrs  = 1
+instance (C.Allocate Message) where
+    type AllocHint Message = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Message (C.Parsed Message))
+instance (C.AllocateList Message) where
+    type ListAllocHint Message = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Message (C.Parsed Message))
+data instance C.Parsed Message
+    = Message 
+        {union' :: (C.Parsed (GH.Which Message))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Message))
+deriving instance (Std_.Eq (C.Parsed Message))
+instance (C.Parse Message (C.Parsed Message)) where
+    parse raw_ = (Message <$> (C.parse (GH.structUnion raw_)))
+instance (C.Marshal Message (C.Parsed Message)) where
+    marshalInto raw_ Message{..} = (do
+        (C.marshalInto (GH.structUnion raw_) union')
+        )
+instance (GH.HasUnion Message) where
+    unionField  = (GH.dataField 0 0 16 0)
+    data RawWhich mut_ Message
+        = RW_Message'unimplemented (R.Raw mut_ Message)
+        | RW_Message'abort (R.Raw mut_ Exception)
+        | RW_Message'call (R.Raw mut_ Call)
+        | RW_Message'return (R.Raw mut_ Return)
+        | RW_Message'finish (R.Raw mut_ Finish)
+        | RW_Message'resolve (R.Raw mut_ Resolve)
+        | RW_Message'release (R.Raw mut_ Release)
+        | RW_Message'obsoleteSave (R.Raw mut_ Basics.AnyPointer)
+        | RW_Message'bootstrap (R.Raw mut_ Bootstrap)
+        | RW_Message'obsoleteDelete (R.Raw mut_ Basics.AnyPointer)
+        | RW_Message'provide (R.Raw mut_ Provide)
+        | RW_Message'accept (R.Raw mut_ Accept)
+        | RW_Message'join (R.Raw mut_ Join)
+        | RW_Message'disembargo (R.Raw mut_ Disembargo)
+        | RW_Message'unknown' Std_.Word16
+    internalWhich tag_ struct_ = case tag_ of
+        0 ->
+            (RW_Message'unimplemented <$> (GH.readVariant #unimplemented struct_))
+        1 ->
+            (RW_Message'abort <$> (GH.readVariant #abort struct_))
+        2 ->
+            (RW_Message'call <$> (GH.readVariant #call struct_))
+        3 ->
+            (RW_Message'return <$> (GH.readVariant #return struct_))
+        4 ->
+            (RW_Message'finish <$> (GH.readVariant #finish struct_))
+        5 ->
+            (RW_Message'resolve <$> (GH.readVariant #resolve struct_))
+        6 ->
+            (RW_Message'release <$> (GH.readVariant #release struct_))
+        7 ->
+            (RW_Message'obsoleteSave <$> (GH.readVariant #obsoleteSave struct_))
+        8 ->
+            (RW_Message'bootstrap <$> (GH.readVariant #bootstrap struct_))
+        9 ->
+            (RW_Message'obsoleteDelete <$> (GH.readVariant #obsoleteDelete struct_))
+        10 ->
+            (RW_Message'provide <$> (GH.readVariant #provide struct_))
+        11 ->
+            (RW_Message'accept <$> (GH.readVariant #accept struct_))
+        12 ->
+            (RW_Message'join <$> (GH.readVariant #join struct_))
+        13 ->
+            (RW_Message'disembargo <$> (GH.readVariant #disembargo struct_))
+        _ ->
+            (Std_.pure (RW_Message'unknown' tag_))
+    data Which Message
+instance (GH.HasVariant "unimplemented" GH.Slot Message Message) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 0)
+instance (GH.HasVariant "abort" GH.Slot Message Exception) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 1)
+instance (GH.HasVariant "call" GH.Slot Message Call) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 2)
+instance (GH.HasVariant "return" GH.Slot Message Return) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 3)
+instance (GH.HasVariant "finish" GH.Slot Message Finish) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 4)
+instance (GH.HasVariant "resolve" GH.Slot Message Resolve) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 5)
+instance (GH.HasVariant "release" GH.Slot Message Release) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 6)
+instance (GH.HasVariant "obsoleteSave" GH.Slot Message Basics.AnyPointer) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 7)
+instance (GH.HasVariant "bootstrap" GH.Slot Message Bootstrap) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 8)
+instance (GH.HasVariant "obsoleteDelete" GH.Slot Message Basics.AnyPointer) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 9)
+instance (GH.HasVariant "provide" GH.Slot Message Provide) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 10)
+instance (GH.HasVariant "accept" GH.Slot Message Accept) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 11)
+instance (GH.HasVariant "join" GH.Slot Message Join) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 12)
+instance (GH.HasVariant "disembargo" GH.Slot Message Disembargo) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 13)
+data instance C.Parsed (GH.Which Message)
+    = Message'unimplemented (RP.Parsed Message)
+    | Message'abort (RP.Parsed Exception)
+    | Message'call (RP.Parsed Call)
+    | Message'return (RP.Parsed Return)
+    | Message'finish (RP.Parsed Finish)
+    | Message'resolve (RP.Parsed Resolve)
+    | Message'release (RP.Parsed Release)
+    | Message'obsoleteSave (RP.Parsed Basics.AnyPointer)
+    | Message'bootstrap (RP.Parsed Bootstrap)
+    | Message'obsoleteDelete (RP.Parsed Basics.AnyPointer)
+    | Message'provide (RP.Parsed Provide)
+    | Message'accept (RP.Parsed Accept)
+    | Message'join (RP.Parsed Join)
+    | Message'disembargo (RP.Parsed Disembargo)
+    | Message'unknown' Std_.Word16
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed (GH.Which Message)))
+deriving instance (Std_.Eq (C.Parsed (GH.Which Message)))
+instance (C.Parse (GH.Which Message) (C.Parsed (GH.Which Message))) where
+    parse raw_ = (do
+        rawWhich_ <- (GH.unionWhich raw_)
+        case rawWhich_ of
+            (RW_Message'unimplemented rawArg_) ->
+                (Message'unimplemented <$> (C.parse rawArg_))
+            (RW_Message'abort rawArg_) ->
+                (Message'abort <$> (C.parse rawArg_))
+            (RW_Message'call rawArg_) ->
+                (Message'call <$> (C.parse rawArg_))
+            (RW_Message'return rawArg_) ->
+                (Message'return <$> (C.parse rawArg_))
+            (RW_Message'finish rawArg_) ->
+                (Message'finish <$> (C.parse rawArg_))
+            (RW_Message'resolve rawArg_) ->
+                (Message'resolve <$> (C.parse rawArg_))
+            (RW_Message'release rawArg_) ->
+                (Message'release <$> (C.parse rawArg_))
+            (RW_Message'obsoleteSave rawArg_) ->
+                (Message'obsoleteSave <$> (C.parse rawArg_))
+            (RW_Message'bootstrap rawArg_) ->
+                (Message'bootstrap <$> (C.parse rawArg_))
+            (RW_Message'obsoleteDelete rawArg_) ->
+                (Message'obsoleteDelete <$> (C.parse rawArg_))
+            (RW_Message'provide rawArg_) ->
+                (Message'provide <$> (C.parse rawArg_))
+            (RW_Message'accept rawArg_) ->
+                (Message'accept <$> (C.parse rawArg_))
+            (RW_Message'join rawArg_) ->
+                (Message'join <$> (C.parse rawArg_))
+            (RW_Message'disembargo rawArg_) ->
+                (Message'disembargo <$> (C.parse rawArg_))
+            (RW_Message'unknown' tag_) ->
+                (Std_.pure (Message'unknown' tag_))
+        )
+instance (C.Marshal (GH.Which Message) (C.Parsed (GH.Which Message))) where
+    marshalInto raw_ parsed_ = case parsed_ of
+        (Message'unimplemented arg_) ->
+            (GH.encodeVariant #unimplemented arg_ (GH.unionStruct raw_))
+        (Message'abort arg_) ->
+            (GH.encodeVariant #abort arg_ (GH.unionStruct raw_))
+        (Message'call arg_) ->
+            (GH.encodeVariant #call arg_ (GH.unionStruct raw_))
+        (Message'return arg_) ->
+            (GH.encodeVariant #return arg_ (GH.unionStruct raw_))
+        (Message'finish arg_) ->
+            (GH.encodeVariant #finish arg_ (GH.unionStruct raw_))
+        (Message'resolve arg_) ->
+            (GH.encodeVariant #resolve arg_ (GH.unionStruct raw_))
+        (Message'release arg_) ->
+            (GH.encodeVariant #release arg_ (GH.unionStruct raw_))
+        (Message'obsoleteSave arg_) ->
+            (GH.encodeVariant #obsoleteSave arg_ (GH.unionStruct raw_))
+        (Message'bootstrap arg_) ->
+            (GH.encodeVariant #bootstrap arg_ (GH.unionStruct raw_))
+        (Message'obsoleteDelete arg_) ->
+            (GH.encodeVariant #obsoleteDelete arg_ (GH.unionStruct raw_))
+        (Message'provide arg_) ->
+            (GH.encodeVariant #provide arg_ (GH.unionStruct raw_))
+        (Message'accept arg_) ->
+            (GH.encodeVariant #accept arg_ (GH.unionStruct raw_))
+        (Message'join arg_) ->
+            (GH.encodeVariant #join arg_ (GH.unionStruct raw_))
+        (Message'disembargo arg_) ->
+            (GH.encodeVariant #disembargo arg_ (GH.unionStruct raw_))
+        (Message'unknown' tag_) ->
+            (GH.encodeField GH.unionField tag_ (GH.unionStruct raw_))
+data Bootstrap 
+type instance (R.ReprFor Bootstrap) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Bootstrap) where
+    numStructWords  = 1
+    numStructPtrs  = 1
+instance (C.Allocate Bootstrap) where
+    type AllocHint Bootstrap = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Bootstrap (C.Parsed Bootstrap))
+instance (C.AllocateList Bootstrap) where
+    type ListAllocHint Bootstrap = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Bootstrap (C.Parsed Bootstrap))
+data instance C.Parsed Bootstrap
+    = Bootstrap 
+        {questionId :: (RP.Parsed Std_.Word32)
+        ,deprecatedObjectId :: (RP.Parsed Basics.AnyPointer)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Bootstrap))
+deriving instance (Std_.Eq (C.Parsed Bootstrap))
+instance (C.Parse Bootstrap (C.Parsed Bootstrap)) where
+    parse raw_ = (Bootstrap <$> (GH.parseField #questionId raw_)
+                            <*> (GH.parseField #deprecatedObjectId raw_))
+instance (C.Marshal Bootstrap (C.Parsed Bootstrap)) where
+    marshalInto raw_ Bootstrap{..} = (do
+        (GH.encodeField #questionId questionId raw_)
+        (GH.encodeField #deprecatedObjectId deprecatedObjectId raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "questionId" GH.Slot Bootstrap Std_.Word32) where
+    fieldByLabel  = (GH.dataField 0 0 32 0)
+instance (GH.HasField "deprecatedObjectId" GH.Slot Bootstrap Basics.AnyPointer) where
+    fieldByLabel  = (GH.ptrField 0)
+data Call 
+type instance (R.ReprFor Call) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Call) where
+    numStructWords  = 3
+    numStructPtrs  = 3
+instance (C.Allocate Call) where
+    type AllocHint Call = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Call (C.Parsed Call))
+instance (C.AllocateList Call) where
+    type ListAllocHint Call = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Call (C.Parsed Call))
+data instance C.Parsed Call
+    = Call 
+        {questionId :: (RP.Parsed Std_.Word32)
+        ,target :: (RP.Parsed MessageTarget)
+        ,interfaceId :: (RP.Parsed Std_.Word64)
+        ,methodId :: (RP.Parsed Std_.Word16)
+        ,params :: (RP.Parsed Payload)
+        ,sendResultsTo :: (RP.Parsed Call'sendResultsTo)
+        ,allowThirdPartyTailCall :: (RP.Parsed Std_.Bool)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Call))
+deriving instance (Std_.Eq (C.Parsed Call))
+instance (C.Parse Call (C.Parsed Call)) where
+    parse raw_ = (Call <$> (GH.parseField #questionId raw_)
+                       <*> (GH.parseField #target raw_)
+                       <*> (GH.parseField #interfaceId raw_)
+                       <*> (GH.parseField #methodId raw_)
+                       <*> (GH.parseField #params raw_)
+                       <*> (GH.parseField #sendResultsTo raw_)
+                       <*> (GH.parseField #allowThirdPartyTailCall raw_))
+instance (C.Marshal Call (C.Parsed Call)) where
+    marshalInto raw_ Call{..} = (do
+        (GH.encodeField #questionId questionId raw_)
+        (GH.encodeField #target target raw_)
+        (GH.encodeField #interfaceId interfaceId raw_)
+        (GH.encodeField #methodId methodId raw_)
+        (GH.encodeField #params params raw_)
+        (do
+            group_ <- (GH.readField #sendResultsTo raw_)
+            (C.marshalInto group_ sendResultsTo)
+            )
+        (GH.encodeField #allowThirdPartyTailCall allowThirdPartyTailCall raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "questionId" GH.Slot Call Std_.Word32) where
+    fieldByLabel  = (GH.dataField 0 0 32 0)
+instance (GH.HasField "target" GH.Slot Call MessageTarget) where
+    fieldByLabel  = (GH.ptrField 0)
+instance (GH.HasField "interfaceId" GH.Slot Call Std_.Word64) where
+    fieldByLabel  = (GH.dataField 0 1 64 0)
+instance (GH.HasField "methodId" GH.Slot Call Std_.Word16) where
+    fieldByLabel  = (GH.dataField 32 0 16 0)
+instance (GH.HasField "params" GH.Slot Call Payload) where
+    fieldByLabel  = (GH.ptrField 1)
+instance (GH.HasField "sendResultsTo" GH.Group Call Call'sendResultsTo) where
+    fieldByLabel  = GH.groupField
+instance (GH.HasField "allowThirdPartyTailCall" GH.Slot Call Std_.Bool) where
+    fieldByLabel  = (GH.dataField 0 2 1 0)
+data Call'sendResultsTo 
+type instance (R.ReprFor Call'sendResultsTo) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Call'sendResultsTo) where
+    numStructWords  = 3
+    numStructPtrs  = 3
+instance (C.Allocate Call'sendResultsTo) where
+    type AllocHint Call'sendResultsTo = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Call'sendResultsTo (C.Parsed Call'sendResultsTo))
+instance (C.AllocateList Call'sendResultsTo) where
+    type ListAllocHint Call'sendResultsTo = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Call'sendResultsTo (C.Parsed Call'sendResultsTo))
+data instance C.Parsed Call'sendResultsTo
+    = Call'sendResultsTo' 
+        {union' :: (C.Parsed (GH.Which Call'sendResultsTo))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Call'sendResultsTo))
+deriving instance (Std_.Eq (C.Parsed Call'sendResultsTo))
+instance (C.Parse Call'sendResultsTo (C.Parsed Call'sendResultsTo)) where
+    parse raw_ = (Call'sendResultsTo' <$> (C.parse (GH.structUnion raw_)))
+instance (C.Marshal Call'sendResultsTo (C.Parsed Call'sendResultsTo)) where
+    marshalInto raw_ Call'sendResultsTo'{..} = (do
+        (C.marshalInto (GH.structUnion raw_) union')
+        )
+instance (GH.HasUnion Call'sendResultsTo) where
+    unionField  = (GH.dataField 48 0 16 0)
+    data RawWhich mut_ Call'sendResultsTo
+        = RW_Call'sendResultsTo'caller (R.Raw mut_ ())
+        | RW_Call'sendResultsTo'yourself (R.Raw mut_ ())
+        | RW_Call'sendResultsTo'thirdParty (R.Raw mut_ Basics.AnyPointer)
+        | RW_Call'sendResultsTo'unknown' Std_.Word16
+    internalWhich tag_ struct_ = case tag_ of
+        0 ->
+            (RW_Call'sendResultsTo'caller <$> (GH.readVariant #caller struct_))
+        1 ->
+            (RW_Call'sendResultsTo'yourself <$> (GH.readVariant #yourself struct_))
+        2 ->
+            (RW_Call'sendResultsTo'thirdParty <$> (GH.readVariant #thirdParty struct_))
+        _ ->
+            (Std_.pure (RW_Call'sendResultsTo'unknown' tag_))
+    data Which Call'sendResultsTo
+instance (GH.HasVariant "caller" GH.Slot Call'sendResultsTo ()) where
+    variantByLabel  = (GH.Variant GH.voidField 0)
+instance (GH.HasVariant "yourself" GH.Slot Call'sendResultsTo ()) where
+    variantByLabel  = (GH.Variant GH.voidField 1)
+instance (GH.HasVariant "thirdParty" GH.Slot Call'sendResultsTo Basics.AnyPointer) where
+    variantByLabel  = (GH.Variant (GH.ptrField 2) 2)
+data instance C.Parsed (GH.Which Call'sendResultsTo)
+    = Call'sendResultsTo'caller 
+    | Call'sendResultsTo'yourself 
+    | Call'sendResultsTo'thirdParty (RP.Parsed Basics.AnyPointer)
+    | Call'sendResultsTo'unknown' Std_.Word16
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed (GH.Which Call'sendResultsTo)))
+deriving instance (Std_.Eq (C.Parsed (GH.Which Call'sendResultsTo)))
+instance (C.Parse (GH.Which Call'sendResultsTo) (C.Parsed (GH.Which Call'sendResultsTo))) where
+    parse raw_ = (do
+        rawWhich_ <- (GH.unionWhich raw_)
+        case rawWhich_ of
+            (RW_Call'sendResultsTo'caller _) ->
+                (Std_.pure Call'sendResultsTo'caller)
+            (RW_Call'sendResultsTo'yourself _) ->
+                (Std_.pure Call'sendResultsTo'yourself)
+            (RW_Call'sendResultsTo'thirdParty rawArg_) ->
+                (Call'sendResultsTo'thirdParty <$> (C.parse rawArg_))
+            (RW_Call'sendResultsTo'unknown' tag_) ->
+                (Std_.pure (Call'sendResultsTo'unknown' tag_))
+        )
+instance (C.Marshal (GH.Which Call'sendResultsTo) (C.Parsed (GH.Which Call'sendResultsTo))) where
+    marshalInto raw_ parsed_ = case parsed_ of
+        (Call'sendResultsTo'caller) ->
+            (GH.encodeVariant #caller () (GH.unionStruct raw_))
+        (Call'sendResultsTo'yourself) ->
+            (GH.encodeVariant #yourself () (GH.unionStruct raw_))
+        (Call'sendResultsTo'thirdParty arg_) ->
+            (GH.encodeVariant #thirdParty arg_ (GH.unionStruct raw_))
+        (Call'sendResultsTo'unknown' tag_) ->
+            (GH.encodeField GH.unionField tag_ (GH.unionStruct raw_))
+data Return 
+type instance (R.ReprFor Return) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Return) where
+    numStructWords  = 2
+    numStructPtrs  = 1
+instance (C.Allocate Return) where
+    type AllocHint Return = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Return (C.Parsed Return))
+instance (C.AllocateList Return) where
+    type ListAllocHint Return = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Return (C.Parsed Return))
+data instance C.Parsed Return
+    = Return 
+        {answerId :: (RP.Parsed Std_.Word32)
+        ,releaseParamCaps :: (RP.Parsed Std_.Bool)
+        ,union' :: (C.Parsed (GH.Which Return))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Return))
+deriving instance (Std_.Eq (C.Parsed Return))
+instance (C.Parse Return (C.Parsed Return)) where
+    parse raw_ = (Return <$> (GH.parseField #answerId raw_)
+                         <*> (GH.parseField #releaseParamCaps raw_)
+                         <*> (C.parse (GH.structUnion raw_)))
+instance (C.Marshal Return (C.Parsed Return)) where
+    marshalInto raw_ Return{..} = (do
+        (GH.encodeField #answerId answerId raw_)
+        (GH.encodeField #releaseParamCaps releaseParamCaps raw_)
+        (C.marshalInto (GH.structUnion raw_) union')
+        )
+instance (GH.HasUnion Return) where
+    unionField  = (GH.dataField 48 0 16 0)
+    data RawWhich mut_ Return
+        = RW_Return'results (R.Raw mut_ Payload)
+        | RW_Return'exception (R.Raw mut_ Exception)
+        | RW_Return'canceled (R.Raw mut_ ())
+        | RW_Return'resultsSentElsewhere (R.Raw mut_ ())
+        | RW_Return'takeFromOtherQuestion (R.Raw mut_ Std_.Word32)
+        | RW_Return'acceptFromThirdParty (R.Raw mut_ Basics.AnyPointer)
+        | RW_Return'unknown' Std_.Word16
+    internalWhich tag_ struct_ = case tag_ of
+        0 ->
+            (RW_Return'results <$> (GH.readVariant #results struct_))
+        1 ->
+            (RW_Return'exception <$> (GH.readVariant #exception struct_))
+        2 ->
+            (RW_Return'canceled <$> (GH.readVariant #canceled struct_))
+        3 ->
+            (RW_Return'resultsSentElsewhere <$> (GH.readVariant #resultsSentElsewhere struct_))
+        4 ->
+            (RW_Return'takeFromOtherQuestion <$> (GH.readVariant #takeFromOtherQuestion struct_))
+        5 ->
+            (RW_Return'acceptFromThirdParty <$> (GH.readVariant #acceptFromThirdParty struct_))
+        _ ->
+            (Std_.pure (RW_Return'unknown' tag_))
+    data Which Return
+instance (GH.HasVariant "results" GH.Slot Return Payload) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 0)
+instance (GH.HasVariant "exception" GH.Slot Return Exception) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 1)
+instance (GH.HasVariant "canceled" GH.Slot Return ()) where
+    variantByLabel  = (GH.Variant GH.voidField 2)
+instance (GH.HasVariant "resultsSentElsewhere" GH.Slot Return ()) where
+    variantByLabel  = (GH.Variant GH.voidField 3)
+instance (GH.HasVariant "takeFromOtherQuestion" GH.Slot Return Std_.Word32) where
+    variantByLabel  = (GH.Variant (GH.dataField 0 1 32 0) 4)
+instance (GH.HasVariant "acceptFromThirdParty" GH.Slot Return Basics.AnyPointer) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 5)
+data instance C.Parsed (GH.Which Return)
+    = Return'results (RP.Parsed Payload)
+    | Return'exception (RP.Parsed Exception)
+    | Return'canceled 
+    | Return'resultsSentElsewhere 
+    | Return'takeFromOtherQuestion (RP.Parsed Std_.Word32)
+    | Return'acceptFromThirdParty (RP.Parsed Basics.AnyPointer)
+    | Return'unknown' Std_.Word16
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed (GH.Which Return)))
+deriving instance (Std_.Eq (C.Parsed (GH.Which Return)))
+instance (C.Parse (GH.Which Return) (C.Parsed (GH.Which Return))) where
+    parse raw_ = (do
+        rawWhich_ <- (GH.unionWhich raw_)
+        case rawWhich_ of
+            (RW_Return'results rawArg_) ->
+                (Return'results <$> (C.parse rawArg_))
+            (RW_Return'exception rawArg_) ->
+                (Return'exception <$> (C.parse rawArg_))
+            (RW_Return'canceled _) ->
+                (Std_.pure Return'canceled)
+            (RW_Return'resultsSentElsewhere _) ->
+                (Std_.pure Return'resultsSentElsewhere)
+            (RW_Return'takeFromOtherQuestion rawArg_) ->
+                (Return'takeFromOtherQuestion <$> (C.parse rawArg_))
+            (RW_Return'acceptFromThirdParty rawArg_) ->
+                (Return'acceptFromThirdParty <$> (C.parse rawArg_))
+            (RW_Return'unknown' tag_) ->
+                (Std_.pure (Return'unknown' tag_))
+        )
+instance (C.Marshal (GH.Which Return) (C.Parsed (GH.Which Return))) where
+    marshalInto raw_ parsed_ = case parsed_ of
+        (Return'results arg_) ->
+            (GH.encodeVariant #results arg_ (GH.unionStruct raw_))
+        (Return'exception arg_) ->
+            (GH.encodeVariant #exception arg_ (GH.unionStruct raw_))
+        (Return'canceled) ->
+            (GH.encodeVariant #canceled () (GH.unionStruct raw_))
+        (Return'resultsSentElsewhere) ->
+            (GH.encodeVariant #resultsSentElsewhere () (GH.unionStruct raw_))
+        (Return'takeFromOtherQuestion arg_) ->
+            (GH.encodeVariant #takeFromOtherQuestion arg_ (GH.unionStruct raw_))
+        (Return'acceptFromThirdParty arg_) ->
+            (GH.encodeVariant #acceptFromThirdParty arg_ (GH.unionStruct raw_))
+        (Return'unknown' tag_) ->
+            (GH.encodeField GH.unionField tag_ (GH.unionStruct raw_))
+instance (GH.HasField "answerId" GH.Slot Return Std_.Word32) where
+    fieldByLabel  = (GH.dataField 0 0 32 0)
+instance (GH.HasField "releaseParamCaps" GH.Slot Return Std_.Bool) where
+    fieldByLabel  = (GH.dataField 32 0 1 1)
+data Finish 
+type instance (R.ReprFor Finish) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Finish) where
+    numStructWords  = 1
+    numStructPtrs  = 0
+instance (C.Allocate Finish) where
+    type AllocHint Finish = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Finish (C.Parsed Finish))
+instance (C.AllocateList Finish) where
+    type ListAllocHint Finish = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Finish (C.Parsed Finish))
+data instance C.Parsed Finish
+    = Finish 
+        {questionId :: (RP.Parsed Std_.Word32)
+        ,releaseResultCaps :: (RP.Parsed Std_.Bool)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Finish))
+deriving instance (Std_.Eq (C.Parsed Finish))
+instance (C.Parse Finish (C.Parsed Finish)) where
+    parse raw_ = (Finish <$> (GH.parseField #questionId raw_)
+                         <*> (GH.parseField #releaseResultCaps raw_))
+instance (C.Marshal Finish (C.Parsed Finish)) where
+    marshalInto raw_ Finish{..} = (do
+        (GH.encodeField #questionId questionId raw_)
+        (GH.encodeField #releaseResultCaps releaseResultCaps raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "questionId" GH.Slot Finish Std_.Word32) where
+    fieldByLabel  = (GH.dataField 0 0 32 0)
+instance (GH.HasField "releaseResultCaps" GH.Slot Finish Std_.Bool) where
+    fieldByLabel  = (GH.dataField 32 0 1 1)
+data Resolve 
+type instance (R.ReprFor Resolve) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Resolve) where
+    numStructWords  = 1
+    numStructPtrs  = 1
+instance (C.Allocate Resolve) where
+    type AllocHint Resolve = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Resolve (C.Parsed Resolve))
+instance (C.AllocateList Resolve) where
+    type ListAllocHint Resolve = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Resolve (C.Parsed Resolve))
+data instance C.Parsed Resolve
+    = Resolve 
+        {promiseId :: (RP.Parsed Std_.Word32)
+        ,union' :: (C.Parsed (GH.Which Resolve))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Resolve))
+deriving instance (Std_.Eq (C.Parsed Resolve))
+instance (C.Parse Resolve (C.Parsed Resolve)) where
+    parse raw_ = (Resolve <$> (GH.parseField #promiseId raw_)
+                          <*> (C.parse (GH.structUnion raw_)))
+instance (C.Marshal Resolve (C.Parsed Resolve)) where
+    marshalInto raw_ Resolve{..} = (do
+        (GH.encodeField #promiseId promiseId raw_)
+        (C.marshalInto (GH.structUnion raw_) union')
+        )
+instance (GH.HasUnion Resolve) where
+    unionField  = (GH.dataField 32 0 16 0)
+    data RawWhich mut_ Resolve
+        = RW_Resolve'cap (R.Raw mut_ CapDescriptor)
+        | RW_Resolve'exception (R.Raw mut_ Exception)
+        | RW_Resolve'unknown' Std_.Word16
+    internalWhich tag_ struct_ = case tag_ of
+        0 ->
+            (RW_Resolve'cap <$> (GH.readVariant #cap struct_))
+        1 ->
+            (RW_Resolve'exception <$> (GH.readVariant #exception struct_))
+        _ ->
+            (Std_.pure (RW_Resolve'unknown' tag_))
+    data Which Resolve
+instance (GH.HasVariant "cap" GH.Slot Resolve CapDescriptor) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 0)
+instance (GH.HasVariant "exception" GH.Slot Resolve Exception) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 1)
+data instance C.Parsed (GH.Which Resolve)
+    = Resolve'cap (RP.Parsed CapDescriptor)
+    | Resolve'exception (RP.Parsed Exception)
+    | Resolve'unknown' Std_.Word16
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed (GH.Which Resolve)))
+deriving instance (Std_.Eq (C.Parsed (GH.Which Resolve)))
+instance (C.Parse (GH.Which Resolve) (C.Parsed (GH.Which Resolve))) where
+    parse raw_ = (do
+        rawWhich_ <- (GH.unionWhich raw_)
+        case rawWhich_ of
+            (RW_Resolve'cap rawArg_) ->
+                (Resolve'cap <$> (C.parse rawArg_))
+            (RW_Resolve'exception rawArg_) ->
+                (Resolve'exception <$> (C.parse rawArg_))
+            (RW_Resolve'unknown' tag_) ->
+                (Std_.pure (Resolve'unknown' tag_))
+        )
+instance (C.Marshal (GH.Which Resolve) (C.Parsed (GH.Which Resolve))) where
+    marshalInto raw_ parsed_ = case parsed_ of
+        (Resolve'cap arg_) ->
+            (GH.encodeVariant #cap arg_ (GH.unionStruct raw_))
+        (Resolve'exception arg_) ->
+            (GH.encodeVariant #exception arg_ (GH.unionStruct raw_))
+        (Resolve'unknown' tag_) ->
+            (GH.encodeField GH.unionField tag_ (GH.unionStruct raw_))
+instance (GH.HasField "promiseId" GH.Slot Resolve Std_.Word32) where
+    fieldByLabel  = (GH.dataField 0 0 32 0)
+data Release 
+type instance (R.ReprFor Release) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Release) where
+    numStructWords  = 1
+    numStructPtrs  = 0
+instance (C.Allocate Release) where
+    type AllocHint Release = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Release (C.Parsed Release))
+instance (C.AllocateList Release) where
+    type ListAllocHint Release = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Release (C.Parsed Release))
+data instance C.Parsed Release
+    = Release 
+        {id :: (RP.Parsed Std_.Word32)
+        ,referenceCount :: (RP.Parsed Std_.Word32)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Release))
+deriving instance (Std_.Eq (C.Parsed Release))
+instance (C.Parse Release (C.Parsed Release)) where
+    parse raw_ = (Release <$> (GH.parseField #id raw_)
+                          <*> (GH.parseField #referenceCount raw_))
+instance (C.Marshal Release (C.Parsed Release)) where
+    marshalInto raw_ Release{..} = (do
+        (GH.encodeField #id id raw_)
+        (GH.encodeField #referenceCount referenceCount raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "id" GH.Slot Release Std_.Word32) where
+    fieldByLabel  = (GH.dataField 0 0 32 0)
+instance (GH.HasField "referenceCount" GH.Slot Release Std_.Word32) where
+    fieldByLabel  = (GH.dataField 32 0 32 0)
+data Disembargo 
+type instance (R.ReprFor Disembargo) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Disembargo) where
+    numStructWords  = 1
+    numStructPtrs  = 1
+instance (C.Allocate Disembargo) where
+    type AllocHint Disembargo = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Disembargo (C.Parsed Disembargo))
+instance (C.AllocateList Disembargo) where
+    type ListAllocHint Disembargo = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Disembargo (C.Parsed Disembargo))
+data instance C.Parsed Disembargo
+    = Disembargo 
+        {target :: (RP.Parsed MessageTarget)
+        ,context :: (RP.Parsed Disembargo'context)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Disembargo))
+deriving instance (Std_.Eq (C.Parsed Disembargo))
+instance (C.Parse Disembargo (C.Parsed Disembargo)) where
+    parse raw_ = (Disembargo <$> (GH.parseField #target raw_)
+                             <*> (GH.parseField #context raw_))
+instance (C.Marshal Disembargo (C.Parsed Disembargo)) where
+    marshalInto raw_ Disembargo{..} = (do
+        (GH.encodeField #target target raw_)
+        (do
+            group_ <- (GH.readField #context raw_)
+            (C.marshalInto group_ context)
+            )
+        (Std_.pure ())
+        )
+instance (GH.HasField "target" GH.Slot Disembargo MessageTarget) where
+    fieldByLabel  = (GH.ptrField 0)
+instance (GH.HasField "context" GH.Group Disembargo Disembargo'context) where
+    fieldByLabel  = GH.groupField
+data Disembargo'context 
+type instance (R.ReprFor Disembargo'context) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Disembargo'context) where
+    numStructWords  = 1
+    numStructPtrs  = 1
+instance (C.Allocate Disembargo'context) where
+    type AllocHint Disembargo'context = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Disembargo'context (C.Parsed Disembargo'context))
+instance (C.AllocateList Disembargo'context) where
+    type ListAllocHint Disembargo'context = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Disembargo'context (C.Parsed Disembargo'context))
+data instance C.Parsed Disembargo'context
+    = Disembargo'context' 
+        {union' :: (C.Parsed (GH.Which Disembargo'context))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Disembargo'context))
+deriving instance (Std_.Eq (C.Parsed Disembargo'context))
+instance (C.Parse Disembargo'context (C.Parsed Disembargo'context)) where
+    parse raw_ = (Disembargo'context' <$> (C.parse (GH.structUnion raw_)))
+instance (C.Marshal Disembargo'context (C.Parsed Disembargo'context)) where
+    marshalInto raw_ Disembargo'context'{..} = (do
+        (C.marshalInto (GH.structUnion raw_) union')
+        )
+instance (GH.HasUnion Disembargo'context) where
+    unionField  = (GH.dataField 32 0 16 0)
+    data RawWhich mut_ Disembargo'context
+        = RW_Disembargo'context'senderLoopback (R.Raw mut_ Std_.Word32)
+        | RW_Disembargo'context'receiverLoopback (R.Raw mut_ Std_.Word32)
+        | RW_Disembargo'context'accept (R.Raw mut_ ())
+        | RW_Disembargo'context'provide (R.Raw mut_ Std_.Word32)
+        | RW_Disembargo'context'unknown' Std_.Word16
+    internalWhich tag_ struct_ = case tag_ of
+        0 ->
+            (RW_Disembargo'context'senderLoopback <$> (GH.readVariant #senderLoopback struct_))
+        1 ->
+            (RW_Disembargo'context'receiverLoopback <$> (GH.readVariant #receiverLoopback struct_))
+        2 ->
+            (RW_Disembargo'context'accept <$> (GH.readVariant #accept struct_))
+        3 ->
+            (RW_Disembargo'context'provide <$> (GH.readVariant #provide struct_))
+        _ ->
+            (Std_.pure (RW_Disembargo'context'unknown' tag_))
+    data Which Disembargo'context
+instance (GH.HasVariant "senderLoopback" GH.Slot Disembargo'context Std_.Word32) where
+    variantByLabel  = (GH.Variant (GH.dataField 0 0 32 0) 0)
+instance (GH.HasVariant "receiverLoopback" GH.Slot Disembargo'context Std_.Word32) where
+    variantByLabel  = (GH.Variant (GH.dataField 0 0 32 0) 1)
+instance (GH.HasVariant "accept" GH.Slot Disembargo'context ()) where
+    variantByLabel  = (GH.Variant GH.voidField 2)
+instance (GH.HasVariant "provide" GH.Slot Disembargo'context Std_.Word32) where
+    variantByLabel  = (GH.Variant (GH.dataField 0 0 32 0) 3)
+data instance C.Parsed (GH.Which Disembargo'context)
+    = Disembargo'context'senderLoopback (RP.Parsed Std_.Word32)
+    | Disembargo'context'receiverLoopback (RP.Parsed Std_.Word32)
+    | Disembargo'context'accept 
+    | Disembargo'context'provide (RP.Parsed Std_.Word32)
+    | Disembargo'context'unknown' Std_.Word16
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed (GH.Which Disembargo'context)))
+deriving instance (Std_.Eq (C.Parsed (GH.Which Disembargo'context)))
+instance (C.Parse (GH.Which Disembargo'context) (C.Parsed (GH.Which Disembargo'context))) where
+    parse raw_ = (do
+        rawWhich_ <- (GH.unionWhich raw_)
+        case rawWhich_ of
+            (RW_Disembargo'context'senderLoopback rawArg_) ->
+                (Disembargo'context'senderLoopback <$> (C.parse rawArg_))
+            (RW_Disembargo'context'receiverLoopback rawArg_) ->
+                (Disembargo'context'receiverLoopback <$> (C.parse rawArg_))
+            (RW_Disembargo'context'accept _) ->
+                (Std_.pure Disembargo'context'accept)
+            (RW_Disembargo'context'provide rawArg_) ->
+                (Disembargo'context'provide <$> (C.parse rawArg_))
+            (RW_Disembargo'context'unknown' tag_) ->
+                (Std_.pure (Disembargo'context'unknown' tag_))
+        )
+instance (C.Marshal (GH.Which Disembargo'context) (C.Parsed (GH.Which Disembargo'context))) where
+    marshalInto raw_ parsed_ = case parsed_ of
+        (Disembargo'context'senderLoopback arg_) ->
+            (GH.encodeVariant #senderLoopback arg_ (GH.unionStruct raw_))
+        (Disembargo'context'receiverLoopback arg_) ->
+            (GH.encodeVariant #receiverLoopback arg_ (GH.unionStruct raw_))
+        (Disembargo'context'accept) ->
+            (GH.encodeVariant #accept () (GH.unionStruct raw_))
+        (Disembargo'context'provide arg_) ->
+            (GH.encodeVariant #provide arg_ (GH.unionStruct raw_))
+        (Disembargo'context'unknown' tag_) ->
+            (GH.encodeField GH.unionField tag_ (GH.unionStruct raw_))
+data Provide 
+type instance (R.ReprFor Provide) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Provide) where
+    numStructWords  = 1
+    numStructPtrs  = 2
+instance (C.Allocate Provide) where
+    type AllocHint Provide = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Provide (C.Parsed Provide))
+instance (C.AllocateList Provide) where
+    type ListAllocHint Provide = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Provide (C.Parsed Provide))
+data instance C.Parsed Provide
+    = Provide 
+        {questionId :: (RP.Parsed Std_.Word32)
+        ,target :: (RP.Parsed MessageTarget)
+        ,recipient :: (RP.Parsed Basics.AnyPointer)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Provide))
+deriving instance (Std_.Eq (C.Parsed Provide))
+instance (C.Parse Provide (C.Parsed Provide)) where
+    parse raw_ = (Provide <$> (GH.parseField #questionId raw_)
+                          <*> (GH.parseField #target raw_)
+                          <*> (GH.parseField #recipient raw_))
+instance (C.Marshal Provide (C.Parsed Provide)) where
+    marshalInto raw_ Provide{..} = (do
+        (GH.encodeField #questionId questionId raw_)
+        (GH.encodeField #target target raw_)
+        (GH.encodeField #recipient recipient raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "questionId" GH.Slot Provide Std_.Word32) where
+    fieldByLabel  = (GH.dataField 0 0 32 0)
+instance (GH.HasField "target" GH.Slot Provide MessageTarget) where
+    fieldByLabel  = (GH.ptrField 0)
+instance (GH.HasField "recipient" GH.Slot Provide Basics.AnyPointer) where
+    fieldByLabel  = (GH.ptrField 1)
+data Accept 
+type instance (R.ReprFor Accept) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Accept) where
+    numStructWords  = 1
+    numStructPtrs  = 1
+instance (C.Allocate Accept) where
+    type AllocHint Accept = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Accept (C.Parsed Accept))
+instance (C.AllocateList Accept) where
+    type ListAllocHint Accept = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Accept (C.Parsed Accept))
+data instance C.Parsed Accept
+    = Accept 
+        {questionId :: (RP.Parsed Std_.Word32)
+        ,provision :: (RP.Parsed Basics.AnyPointer)
+        ,embargo :: (RP.Parsed Std_.Bool)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Accept))
+deriving instance (Std_.Eq (C.Parsed Accept))
+instance (C.Parse Accept (C.Parsed Accept)) where
+    parse raw_ = (Accept <$> (GH.parseField #questionId raw_)
+                         <*> (GH.parseField #provision raw_)
+                         <*> (GH.parseField #embargo raw_))
+instance (C.Marshal Accept (C.Parsed Accept)) where
+    marshalInto raw_ Accept{..} = (do
+        (GH.encodeField #questionId questionId raw_)
+        (GH.encodeField #provision provision raw_)
+        (GH.encodeField #embargo embargo raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "questionId" GH.Slot Accept Std_.Word32) where
+    fieldByLabel  = (GH.dataField 0 0 32 0)
+instance (GH.HasField "provision" GH.Slot Accept Basics.AnyPointer) where
+    fieldByLabel  = (GH.ptrField 0)
+instance (GH.HasField "embargo" GH.Slot Accept Std_.Bool) where
+    fieldByLabel  = (GH.dataField 32 0 1 0)
+data Join 
+type instance (R.ReprFor Join) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Join) where
+    numStructWords  = 1
+    numStructPtrs  = 2
+instance (C.Allocate Join) where
+    type AllocHint Join = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Join (C.Parsed Join))
+instance (C.AllocateList Join) where
+    type ListAllocHint Join = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Join (C.Parsed Join))
+data instance C.Parsed Join
+    = Join 
+        {questionId :: (RP.Parsed Std_.Word32)
+        ,target :: (RP.Parsed MessageTarget)
+        ,keyPart :: (RP.Parsed Basics.AnyPointer)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Join))
+deriving instance (Std_.Eq (C.Parsed Join))
+instance (C.Parse Join (C.Parsed Join)) where
+    parse raw_ = (Join <$> (GH.parseField #questionId raw_)
+                       <*> (GH.parseField #target raw_)
+                       <*> (GH.parseField #keyPart raw_))
+instance (C.Marshal Join (C.Parsed Join)) where
+    marshalInto raw_ Join{..} = (do
+        (GH.encodeField #questionId questionId raw_)
+        (GH.encodeField #target target raw_)
+        (GH.encodeField #keyPart keyPart raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "questionId" GH.Slot Join Std_.Word32) where
+    fieldByLabel  = (GH.dataField 0 0 32 0)
+instance (GH.HasField "target" GH.Slot Join MessageTarget) where
+    fieldByLabel  = (GH.ptrField 0)
+instance (GH.HasField "keyPart" GH.Slot Join Basics.AnyPointer) where
+    fieldByLabel  = (GH.ptrField 1)
+data MessageTarget 
+type instance (R.ReprFor MessageTarget) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct MessageTarget) where
+    numStructWords  = 1
+    numStructPtrs  = 1
+instance (C.Allocate MessageTarget) where
+    type AllocHint MessageTarget = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc MessageTarget (C.Parsed MessageTarget))
+instance (C.AllocateList MessageTarget) where
+    type ListAllocHint MessageTarget = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc MessageTarget (C.Parsed MessageTarget))
+data instance C.Parsed MessageTarget
+    = MessageTarget 
+        {union' :: (C.Parsed (GH.Which MessageTarget))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed MessageTarget))
+deriving instance (Std_.Eq (C.Parsed MessageTarget))
+instance (C.Parse MessageTarget (C.Parsed MessageTarget)) where
+    parse raw_ = (MessageTarget <$> (C.parse (GH.structUnion raw_)))
+instance (C.Marshal MessageTarget (C.Parsed MessageTarget)) where
+    marshalInto raw_ MessageTarget{..} = (do
+        (C.marshalInto (GH.structUnion raw_) union')
+        )
+instance (GH.HasUnion MessageTarget) where
+    unionField  = (GH.dataField 32 0 16 0)
+    data RawWhich mut_ MessageTarget
+        = RW_MessageTarget'importedCap (R.Raw mut_ Std_.Word32)
+        | RW_MessageTarget'promisedAnswer (R.Raw mut_ PromisedAnswer)
+        | RW_MessageTarget'unknown' Std_.Word16
+    internalWhich tag_ struct_ = case tag_ of
+        0 ->
+            (RW_MessageTarget'importedCap <$> (GH.readVariant #importedCap struct_))
+        1 ->
+            (RW_MessageTarget'promisedAnswer <$> (GH.readVariant #promisedAnswer struct_))
+        _ ->
+            (Std_.pure (RW_MessageTarget'unknown' tag_))
+    data Which MessageTarget
+instance (GH.HasVariant "importedCap" GH.Slot MessageTarget Std_.Word32) where
+    variantByLabel  = (GH.Variant (GH.dataField 0 0 32 0) 0)
+instance (GH.HasVariant "promisedAnswer" GH.Slot MessageTarget PromisedAnswer) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 1)
+data instance C.Parsed (GH.Which MessageTarget)
+    = MessageTarget'importedCap (RP.Parsed Std_.Word32)
+    | MessageTarget'promisedAnswer (RP.Parsed PromisedAnswer)
+    | MessageTarget'unknown' Std_.Word16
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed (GH.Which MessageTarget)))
+deriving instance (Std_.Eq (C.Parsed (GH.Which MessageTarget)))
+instance (C.Parse (GH.Which MessageTarget) (C.Parsed (GH.Which MessageTarget))) where
+    parse raw_ = (do
+        rawWhich_ <- (GH.unionWhich raw_)
+        case rawWhich_ of
+            (RW_MessageTarget'importedCap rawArg_) ->
+                (MessageTarget'importedCap <$> (C.parse rawArg_))
+            (RW_MessageTarget'promisedAnswer rawArg_) ->
+                (MessageTarget'promisedAnswer <$> (C.parse rawArg_))
+            (RW_MessageTarget'unknown' tag_) ->
+                (Std_.pure (MessageTarget'unknown' tag_))
+        )
+instance (C.Marshal (GH.Which MessageTarget) (C.Parsed (GH.Which MessageTarget))) where
+    marshalInto raw_ parsed_ = case parsed_ of
+        (MessageTarget'importedCap arg_) ->
+            (GH.encodeVariant #importedCap arg_ (GH.unionStruct raw_))
+        (MessageTarget'promisedAnswer arg_) ->
+            (GH.encodeVariant #promisedAnswer arg_ (GH.unionStruct raw_))
+        (MessageTarget'unknown' tag_) ->
+            (GH.encodeField GH.unionField tag_ (GH.unionStruct raw_))
+data Payload 
+type instance (R.ReprFor Payload) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Payload) where
+    numStructWords  = 0
+    numStructPtrs  = 2
+instance (C.Allocate Payload) where
+    type AllocHint Payload = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Payload (C.Parsed Payload))
+instance (C.AllocateList Payload) where
+    type ListAllocHint Payload = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Payload (C.Parsed Payload))
+data instance C.Parsed Payload
+    = Payload 
+        {content :: (RP.Parsed Basics.AnyPointer)
+        ,capTable :: (RP.Parsed (R.List CapDescriptor))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Payload))
+deriving instance (Std_.Eq (C.Parsed Payload))
+instance (C.Parse Payload (C.Parsed Payload)) where
+    parse raw_ = (Payload <$> (GH.parseField #content raw_)
+                          <*> (GH.parseField #capTable raw_))
+instance (C.Marshal Payload (C.Parsed Payload)) where
+    marshalInto raw_ Payload{..} = (do
+        (GH.encodeField #content content raw_)
+        (GH.encodeField #capTable capTable raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "content" GH.Slot Payload Basics.AnyPointer) where
+    fieldByLabel  = (GH.ptrField 0)
+instance (GH.HasField "capTable" GH.Slot Payload (R.List CapDescriptor)) where
+    fieldByLabel  = (GH.ptrField 1)
+data CapDescriptor 
+type instance (R.ReprFor CapDescriptor) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct CapDescriptor) where
+    numStructWords  = 1
+    numStructPtrs  = 1
+instance (C.Allocate CapDescriptor) where
+    type AllocHint CapDescriptor = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc CapDescriptor (C.Parsed CapDescriptor))
+instance (C.AllocateList CapDescriptor) where
+    type ListAllocHint CapDescriptor = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc CapDescriptor (C.Parsed CapDescriptor))
+data instance C.Parsed CapDescriptor
+    = CapDescriptor 
+        {attachedFd :: (RP.Parsed Std_.Word8)
+        ,union' :: (C.Parsed (GH.Which CapDescriptor))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed CapDescriptor))
+deriving instance (Std_.Eq (C.Parsed CapDescriptor))
+instance (C.Parse CapDescriptor (C.Parsed CapDescriptor)) where
+    parse raw_ = (CapDescriptor <$> (GH.parseField #attachedFd raw_)
+                                <*> (C.parse (GH.structUnion raw_)))
+instance (C.Marshal CapDescriptor (C.Parsed CapDescriptor)) where
+    marshalInto raw_ CapDescriptor{..} = (do
+        (GH.encodeField #attachedFd attachedFd raw_)
+        (C.marshalInto (GH.structUnion raw_) union')
+        )
+instance (GH.HasUnion CapDescriptor) where
+    unionField  = (GH.dataField 0 0 16 0)
+    data RawWhich mut_ CapDescriptor
+        = RW_CapDescriptor'none (R.Raw mut_ ())
+        | RW_CapDescriptor'senderHosted (R.Raw mut_ Std_.Word32)
+        | RW_CapDescriptor'senderPromise (R.Raw mut_ Std_.Word32)
+        | RW_CapDescriptor'receiverHosted (R.Raw mut_ Std_.Word32)
+        | RW_CapDescriptor'receiverAnswer (R.Raw mut_ PromisedAnswer)
+        | RW_CapDescriptor'thirdPartyHosted (R.Raw mut_ ThirdPartyCapDescriptor)
+        | RW_CapDescriptor'unknown' Std_.Word16
+    internalWhich tag_ struct_ = case tag_ of
+        0 ->
+            (RW_CapDescriptor'none <$> (GH.readVariant #none struct_))
+        1 ->
+            (RW_CapDescriptor'senderHosted <$> (GH.readVariant #senderHosted struct_))
+        2 ->
+            (RW_CapDescriptor'senderPromise <$> (GH.readVariant #senderPromise struct_))
+        3 ->
+            (RW_CapDescriptor'receiverHosted <$> (GH.readVariant #receiverHosted struct_))
+        4 ->
+            (RW_CapDescriptor'receiverAnswer <$> (GH.readVariant #receiverAnswer struct_))
+        5 ->
+            (RW_CapDescriptor'thirdPartyHosted <$> (GH.readVariant #thirdPartyHosted struct_))
+        _ ->
+            (Std_.pure (RW_CapDescriptor'unknown' tag_))
+    data Which CapDescriptor
+instance (GH.HasVariant "none" GH.Slot CapDescriptor ()) where
+    variantByLabel  = (GH.Variant GH.voidField 0)
+instance (GH.HasVariant "senderHosted" GH.Slot CapDescriptor Std_.Word32) where
+    variantByLabel  = (GH.Variant (GH.dataField 32 0 32 0) 1)
+instance (GH.HasVariant "senderPromise" GH.Slot CapDescriptor Std_.Word32) where
+    variantByLabel  = (GH.Variant (GH.dataField 32 0 32 0) 2)
+instance (GH.HasVariant "receiverHosted" GH.Slot CapDescriptor Std_.Word32) where
+    variantByLabel  = (GH.Variant (GH.dataField 32 0 32 0) 3)
+instance (GH.HasVariant "receiverAnswer" GH.Slot CapDescriptor PromisedAnswer) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 4)
+instance (GH.HasVariant "thirdPartyHosted" GH.Slot CapDescriptor ThirdPartyCapDescriptor) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 5)
+data instance C.Parsed (GH.Which CapDescriptor)
+    = CapDescriptor'none 
+    | CapDescriptor'senderHosted (RP.Parsed Std_.Word32)
+    | CapDescriptor'senderPromise (RP.Parsed Std_.Word32)
+    | CapDescriptor'receiverHosted (RP.Parsed Std_.Word32)
+    | CapDescriptor'receiverAnswer (RP.Parsed PromisedAnswer)
+    | CapDescriptor'thirdPartyHosted (RP.Parsed ThirdPartyCapDescriptor)
+    | CapDescriptor'unknown' Std_.Word16
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed (GH.Which CapDescriptor)))
+deriving instance (Std_.Eq (C.Parsed (GH.Which CapDescriptor)))
+instance (C.Parse (GH.Which CapDescriptor) (C.Parsed (GH.Which CapDescriptor))) where
+    parse raw_ = (do
+        rawWhich_ <- (GH.unionWhich raw_)
+        case rawWhich_ of
+            (RW_CapDescriptor'none _) ->
+                (Std_.pure CapDescriptor'none)
+            (RW_CapDescriptor'senderHosted rawArg_) ->
+                (CapDescriptor'senderHosted <$> (C.parse rawArg_))
+            (RW_CapDescriptor'senderPromise rawArg_) ->
+                (CapDescriptor'senderPromise <$> (C.parse rawArg_))
+            (RW_CapDescriptor'receiverHosted rawArg_) ->
+                (CapDescriptor'receiverHosted <$> (C.parse rawArg_))
+            (RW_CapDescriptor'receiverAnswer rawArg_) ->
+                (CapDescriptor'receiverAnswer <$> (C.parse rawArg_))
+            (RW_CapDescriptor'thirdPartyHosted rawArg_) ->
+                (CapDescriptor'thirdPartyHosted <$> (C.parse rawArg_))
+            (RW_CapDescriptor'unknown' tag_) ->
+                (Std_.pure (CapDescriptor'unknown' tag_))
+        )
+instance (C.Marshal (GH.Which CapDescriptor) (C.Parsed (GH.Which CapDescriptor))) where
+    marshalInto raw_ parsed_ = case parsed_ of
+        (CapDescriptor'none) ->
+            (GH.encodeVariant #none () (GH.unionStruct raw_))
+        (CapDescriptor'senderHosted arg_) ->
+            (GH.encodeVariant #senderHosted arg_ (GH.unionStruct raw_))
+        (CapDescriptor'senderPromise arg_) ->
+            (GH.encodeVariant #senderPromise arg_ (GH.unionStruct raw_))
+        (CapDescriptor'receiverHosted arg_) ->
+            (GH.encodeVariant #receiverHosted arg_ (GH.unionStruct raw_))
+        (CapDescriptor'receiverAnswer arg_) ->
+            (GH.encodeVariant #receiverAnswer arg_ (GH.unionStruct raw_))
+        (CapDescriptor'thirdPartyHosted arg_) ->
+            (GH.encodeVariant #thirdPartyHosted arg_ (GH.unionStruct raw_))
+        (CapDescriptor'unknown' tag_) ->
+            (GH.encodeField GH.unionField tag_ (GH.unionStruct raw_))
+instance (GH.HasField "attachedFd" GH.Slot CapDescriptor Std_.Word8) where
+    fieldByLabel  = (GH.dataField 16 0 8 255)
+data PromisedAnswer 
+type instance (R.ReprFor PromisedAnswer) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct PromisedAnswer) where
+    numStructWords  = 1
+    numStructPtrs  = 1
+instance (C.Allocate PromisedAnswer) where
+    type AllocHint PromisedAnswer = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc PromisedAnswer (C.Parsed PromisedAnswer))
+instance (C.AllocateList PromisedAnswer) where
+    type ListAllocHint PromisedAnswer = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc PromisedAnswer (C.Parsed PromisedAnswer))
+data instance C.Parsed PromisedAnswer
+    = PromisedAnswer 
+        {questionId :: (RP.Parsed Std_.Word32)
+        ,transform :: (RP.Parsed (R.List PromisedAnswer'Op))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed PromisedAnswer))
+deriving instance (Std_.Eq (C.Parsed PromisedAnswer))
+instance (C.Parse PromisedAnswer (C.Parsed PromisedAnswer)) where
+    parse raw_ = (PromisedAnswer <$> (GH.parseField #questionId raw_)
+                                 <*> (GH.parseField #transform raw_))
+instance (C.Marshal PromisedAnswer (C.Parsed PromisedAnswer)) where
+    marshalInto raw_ PromisedAnswer{..} = (do
+        (GH.encodeField #questionId questionId raw_)
+        (GH.encodeField #transform transform raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "questionId" GH.Slot PromisedAnswer Std_.Word32) where
+    fieldByLabel  = (GH.dataField 0 0 32 0)
+instance (GH.HasField "transform" GH.Slot PromisedAnswer (R.List PromisedAnswer'Op)) where
+    fieldByLabel  = (GH.ptrField 0)
+data PromisedAnswer'Op 
+type instance (R.ReprFor PromisedAnswer'Op) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct PromisedAnswer'Op) where
+    numStructWords  = 1
+    numStructPtrs  = 0
+instance (C.Allocate PromisedAnswer'Op) where
+    type AllocHint PromisedAnswer'Op = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc PromisedAnswer'Op (C.Parsed PromisedAnswer'Op))
+instance (C.AllocateList PromisedAnswer'Op) where
+    type ListAllocHint PromisedAnswer'Op = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc PromisedAnswer'Op (C.Parsed PromisedAnswer'Op))
+data instance C.Parsed PromisedAnswer'Op
+    = PromisedAnswer'Op 
+        {union' :: (C.Parsed (GH.Which PromisedAnswer'Op))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed PromisedAnswer'Op))
+deriving instance (Std_.Eq (C.Parsed PromisedAnswer'Op))
+instance (C.Parse PromisedAnswer'Op (C.Parsed PromisedAnswer'Op)) where
+    parse raw_ = (PromisedAnswer'Op <$> (C.parse (GH.structUnion raw_)))
+instance (C.Marshal PromisedAnswer'Op (C.Parsed PromisedAnswer'Op)) where
+    marshalInto raw_ PromisedAnswer'Op{..} = (do
+        (C.marshalInto (GH.structUnion raw_) union')
+        )
+instance (GH.HasUnion PromisedAnswer'Op) where
+    unionField  = (GH.dataField 0 0 16 0)
+    data RawWhich mut_ PromisedAnswer'Op
+        = RW_PromisedAnswer'Op'noop (R.Raw mut_ ())
+        | RW_PromisedAnswer'Op'getPointerField (R.Raw mut_ Std_.Word16)
+        | RW_PromisedAnswer'Op'unknown' Std_.Word16
+    internalWhich tag_ struct_ = case tag_ of
+        0 ->
+            (RW_PromisedAnswer'Op'noop <$> (GH.readVariant #noop struct_))
+        1 ->
+            (RW_PromisedAnswer'Op'getPointerField <$> (GH.readVariant #getPointerField struct_))
+        _ ->
+            (Std_.pure (RW_PromisedAnswer'Op'unknown' tag_))
+    data Which PromisedAnswer'Op
+instance (GH.HasVariant "noop" GH.Slot PromisedAnswer'Op ()) where
+    variantByLabel  = (GH.Variant GH.voidField 0)
+instance (GH.HasVariant "getPointerField" GH.Slot PromisedAnswer'Op Std_.Word16) where
+    variantByLabel  = (GH.Variant (GH.dataField 16 0 16 0) 1)
+data instance C.Parsed (GH.Which PromisedAnswer'Op)
+    = PromisedAnswer'Op'noop 
+    | PromisedAnswer'Op'getPointerField (RP.Parsed Std_.Word16)
+    | PromisedAnswer'Op'unknown' Std_.Word16
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed (GH.Which PromisedAnswer'Op)))
+deriving instance (Std_.Eq (C.Parsed (GH.Which PromisedAnswer'Op)))
+instance (C.Parse (GH.Which PromisedAnswer'Op) (C.Parsed (GH.Which PromisedAnswer'Op))) where
+    parse raw_ = (do
+        rawWhich_ <- (GH.unionWhich raw_)
+        case rawWhich_ of
+            (RW_PromisedAnswer'Op'noop _) ->
+                (Std_.pure PromisedAnswer'Op'noop)
+            (RW_PromisedAnswer'Op'getPointerField rawArg_) ->
+                (PromisedAnswer'Op'getPointerField <$> (C.parse rawArg_))
+            (RW_PromisedAnswer'Op'unknown' tag_) ->
+                (Std_.pure (PromisedAnswer'Op'unknown' tag_))
+        )
+instance (C.Marshal (GH.Which PromisedAnswer'Op) (C.Parsed (GH.Which PromisedAnswer'Op))) where
+    marshalInto raw_ parsed_ = case parsed_ of
+        (PromisedAnswer'Op'noop) ->
+            (GH.encodeVariant #noop () (GH.unionStruct raw_))
+        (PromisedAnswer'Op'getPointerField arg_) ->
+            (GH.encodeVariant #getPointerField arg_ (GH.unionStruct raw_))
+        (PromisedAnswer'Op'unknown' tag_) ->
+            (GH.encodeField GH.unionField tag_ (GH.unionStruct raw_))
+data ThirdPartyCapDescriptor 
+type instance (R.ReprFor ThirdPartyCapDescriptor) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct ThirdPartyCapDescriptor) where
+    numStructWords  = 1
+    numStructPtrs  = 1
+instance (C.Allocate ThirdPartyCapDescriptor) where
+    type AllocHint ThirdPartyCapDescriptor = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc ThirdPartyCapDescriptor (C.Parsed ThirdPartyCapDescriptor))
+instance (C.AllocateList ThirdPartyCapDescriptor) where
+    type ListAllocHint ThirdPartyCapDescriptor = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc ThirdPartyCapDescriptor (C.Parsed ThirdPartyCapDescriptor))
+data instance C.Parsed ThirdPartyCapDescriptor
+    = ThirdPartyCapDescriptor 
+        {id :: (RP.Parsed Basics.AnyPointer)
+        ,vineId :: (RP.Parsed Std_.Word32)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed ThirdPartyCapDescriptor))
+deriving instance (Std_.Eq (C.Parsed ThirdPartyCapDescriptor))
+instance (C.Parse ThirdPartyCapDescriptor (C.Parsed ThirdPartyCapDescriptor)) where
+    parse raw_ = (ThirdPartyCapDescriptor <$> (GH.parseField #id raw_)
+                                          <*> (GH.parseField #vineId raw_))
+instance (C.Marshal ThirdPartyCapDescriptor (C.Parsed ThirdPartyCapDescriptor)) where
+    marshalInto raw_ ThirdPartyCapDescriptor{..} = (do
+        (GH.encodeField #id id raw_)
+        (GH.encodeField #vineId vineId raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "id" GH.Slot ThirdPartyCapDescriptor Basics.AnyPointer) where
+    fieldByLabel  = (GH.ptrField 0)
+instance (GH.HasField "vineId" GH.Slot ThirdPartyCapDescriptor Std_.Word32) where
+    fieldByLabel  = (GH.dataField 0 0 32 0)
+data Exception 
+type instance (R.ReprFor Exception) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Exception) where
+    numStructWords  = 1
+    numStructPtrs  = 1
+instance (C.Allocate Exception) where
+    type AllocHint Exception = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Exception (C.Parsed Exception))
+instance (C.AllocateList Exception) where
+    type ListAllocHint Exception = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Exception (C.Parsed Exception))
+data instance C.Parsed Exception
+    = Exception 
+        {reason :: (RP.Parsed Basics.Text)
+        ,obsoleteIsCallersFault :: (RP.Parsed Std_.Bool)
+        ,obsoleteDurability :: (RP.Parsed Std_.Word16)
+        ,type_ :: (RP.Parsed Exception'Type)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Exception))
+deriving instance (Std_.Eq (C.Parsed Exception))
+instance (C.Parse Exception (C.Parsed Exception)) where
+    parse raw_ = (Exception <$> (GH.parseField #reason raw_)
+                            <*> (GH.parseField #obsoleteIsCallersFault raw_)
+                            <*> (GH.parseField #obsoleteDurability raw_)
+                            <*> (GH.parseField #type_ raw_))
+instance (C.Marshal Exception (C.Parsed Exception)) where
+    marshalInto raw_ Exception{..} = (do
+        (GH.encodeField #reason reason raw_)
+        (GH.encodeField #obsoleteIsCallersFault obsoleteIsCallersFault raw_)
+        (GH.encodeField #obsoleteDurability obsoleteDurability raw_)
+        (GH.encodeField #type_ type_ raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "reason" GH.Slot Exception Basics.Text) where
+    fieldByLabel  = (GH.ptrField 0)
+instance (GH.HasField "obsoleteIsCallersFault" GH.Slot Exception Std_.Bool) where
+    fieldByLabel  = (GH.dataField 0 0 1 0)
+instance (GH.HasField "obsoleteDurability" GH.Slot Exception Std_.Word16) where
+    fieldByLabel  = (GH.dataField 16 0 16 0)
+instance (GH.HasField "type_" GH.Slot Exception Exception'Type) where
+    fieldByLabel  = (GH.dataField 32 0 16 0)
+data Exception'Type 
+    = Exception'Type'failed 
+    | Exception'Type'overloaded 
+    | Exception'Type'disconnected 
+    | Exception'Type'unimplemented 
+    | Exception'Type'unknown' Std_.Word16
+    deriving(Std_.Eq,Std_.Show)
+type instance (R.ReprFor Exception'Type) = (R.Data R.Sz16)
+instance (Std_.Enum Exception'Type) where
+    toEnum n_ = case n_ of
+        0 ->
+            Exception'Type'failed
+        1 ->
+            Exception'Type'overloaded
+        2 ->
+            Exception'Type'disconnected
+        3 ->
+            Exception'Type'unimplemented
+        tag_ ->
+            (Exception'Type'unknown' (Std_.fromIntegral tag_))
+    fromEnum value_ = case value_ of
+        (Exception'Type'failed) ->
+            0
+        (Exception'Type'overloaded) ->
+            1
+        (Exception'Type'disconnected) ->
+            2
+        (Exception'Type'unimplemented) ->
+            3
+        (Exception'Type'unknown' tag_) ->
+            (Std_.fromIntegral tag_)
+instance (C.IsWord Exception'Type) where
+    fromWord w_ = (Std_.toEnum (Std_.fromIntegral w_))
+    toWord v_ = (Std_.fromIntegral (Std_.fromEnum v_))
+instance (C.Parse Exception'Type Exception'Type) where
+    parse  = GH.parseEnum
+    encode  = GH.encodeEnum
+instance (C.AllocateList Exception'Type) where
+    type ListAllocHint Exception'Type = Std_.Int
+instance (C.EstimateListAlloc Exception'Type Exception'Type)
diff --git a/gen/lib/Capnp/Gen/Capnp/Rpc/Pure.hs b/gen/lib/Capnp/Gen/Capnp/Rpc/Pure.hs
--- a/gen/lib/Capnp/Gen/Capnp/Rpc/Pure.hs
+++ b/gen/lib/Capnp/Gen/Capnp/Rpc/Pure.hs
@@ -13,6 +13,7 @@
 {-# OPTIONS_GHC -Wno-unused-matches #-}
 {-# OPTIONS_GHC -Wno-orphans #-}
 {-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
 module Capnp.Gen.Capnp.Rpc.Pure(Capnp.Gen.ById.Xb312981b2552a250.Exception'Type(..)
                                ,Message(..)
                                ,Bootstrap(..)
@@ -73,12 +74,12 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Message)) where
+instance (Default.Default Message) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Message)) where
+instance (Classes.FromStruct Message.Const Message) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Message)) where
-    type Cerial msg (Message) = (Capnp.Gen.ById.Xb312981b2552a250.Message msg)
+instance (Classes.Decerialize Message) where
+    type Cerial msg Message = (Capnp.Gen.ById.Xb312981b2552a250.Message msg)
     decerialize raw = (do
         raw <- (Capnp.Gen.ById.Xb312981b2552a250.get_Message' raw)
         case raw of
@@ -113,7 +114,7 @@
             (Capnp.Gen.ById.Xb312981b2552a250.Message'unknown' tag) ->
                 (Std_.pure (Message'unknown' tag))
         )
-instance (Classes.Marshal s (Message)) where
+instance (Classes.Marshal s Message) where
     marshalInto raw_ value_ = case value_ of
         (Message'unimplemented arg_) ->
             ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.Xb312981b2552a250.set_Message'unimplemented raw_))
@@ -145,20 +146,20 @@
             ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.Xb312981b2552a250.set_Message'disembargo raw_))
         (Message'unknown' tag) ->
             (Capnp.Gen.ById.Xb312981b2552a250.set_Message'unknown' raw_ tag)
-instance (Classes.Cerialize s (Message))
-instance (Classes.Cerialize s (V.Vector (Message))) where
+instance (Classes.Cerialize s Message)
+instance (Classes.Cerialize s (V.Vector Message)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Message)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Message))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Message))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Message)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Message)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Message))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Message))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Message)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Message)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Message))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Message))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Message)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data Bootstrap 
     = Bootstrap 
@@ -167,15 +168,15 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Bootstrap)) where
+instance (Default.Default Bootstrap) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Bootstrap)) where
+instance (Classes.FromStruct Message.Const Bootstrap) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Bootstrap)) where
-    type Cerial msg (Bootstrap) = (Capnp.Gen.ById.Xb312981b2552a250.Bootstrap msg)
+instance (Classes.Decerialize Bootstrap) where
+    type Cerial msg Bootstrap = (Capnp.Gen.ById.Xb312981b2552a250.Bootstrap msg)
     decerialize raw = (Bootstrap <$> (Capnp.Gen.ById.Xb312981b2552a250.get_Bootstrap'questionId raw)
                                  <*> ((Capnp.Gen.ById.Xb312981b2552a250.get_Bootstrap'deprecatedObjectId raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Bootstrap)) where
+instance (Classes.Marshal s Bootstrap) where
     marshalInto raw_ value_ = case value_ of
         Bootstrap{..} ->
             (do
@@ -183,20 +184,20 @@
                 ((Classes.cerialize (Untyped.message raw_) deprecatedObjectId) >>= (Capnp.Gen.ById.Xb312981b2552a250.set_Bootstrap'deprecatedObjectId raw_))
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (Bootstrap))
-instance (Classes.Cerialize s (V.Vector (Bootstrap))) where
+instance (Classes.Cerialize s Bootstrap)
+instance (Classes.Cerialize s (V.Vector Bootstrap)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Bootstrap)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Bootstrap))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Bootstrap))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Bootstrap)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Bootstrap)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Bootstrap))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Bootstrap))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Bootstrap)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Bootstrap)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Bootstrap))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Bootstrap))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Bootstrap)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data Call 
     = Call 
@@ -210,12 +211,12 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Call)) where
+instance (Default.Default Call) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Call)) where
+instance (Classes.FromStruct Message.Const Call) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Call)) where
-    type Cerial msg (Call) = (Capnp.Gen.ById.Xb312981b2552a250.Call msg)
+instance (Classes.Decerialize Call) where
+    type Cerial msg Call = (Capnp.Gen.ById.Xb312981b2552a250.Call msg)
     decerialize raw = (Call <$> (Capnp.Gen.ById.Xb312981b2552a250.get_Call'questionId raw)
                             <*> ((Capnp.Gen.ById.Xb312981b2552a250.get_Call'target raw) >>= Classes.decerialize)
                             <*> (Capnp.Gen.ById.Xb312981b2552a250.get_Call'interfaceId raw)
@@ -223,7 +224,7 @@
                             <*> ((Capnp.Gen.ById.Xb312981b2552a250.get_Call'params raw) >>= Classes.decerialize)
                             <*> ((Capnp.Gen.ById.Xb312981b2552a250.get_Call'sendResultsTo raw) >>= Classes.decerialize)
                             <*> (Capnp.Gen.ById.Xb312981b2552a250.get_Call'allowThirdPartyTailCall raw))
-instance (Classes.Marshal s (Call)) where
+instance (Classes.Marshal s Call) where
     marshalInto raw_ value_ = case value_ of
         Call{..} ->
             (do
@@ -239,20 +240,20 @@
                 (Capnp.Gen.ById.Xb312981b2552a250.set_Call'allowThirdPartyTailCall raw_ allowThirdPartyTailCall)
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (Call))
-instance (Classes.Cerialize s (V.Vector (Call))) where
+instance (Classes.Cerialize s Call)
+instance (Classes.Cerialize s (V.Vector Call)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Call)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Call))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Call))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Call)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Call)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Call))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Call))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Call)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Call)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Call))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Call))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Call)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data Call'sendResultsTo 
     = Call'sendResultsTo'caller 
@@ -262,12 +263,12 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Call'sendResultsTo)) where
+instance (Default.Default Call'sendResultsTo) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Call'sendResultsTo)) where
+instance (Classes.FromStruct Message.Const Call'sendResultsTo) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Call'sendResultsTo)) where
-    type Cerial msg (Call'sendResultsTo) = (Capnp.Gen.ById.Xb312981b2552a250.Call'sendResultsTo msg)
+instance (Classes.Decerialize Call'sendResultsTo) where
+    type Cerial msg Call'sendResultsTo = (Capnp.Gen.ById.Xb312981b2552a250.Call'sendResultsTo msg)
     decerialize raw = (do
         raw <- (Capnp.Gen.ById.Xb312981b2552a250.get_Call'sendResultsTo' raw)
         case raw of
@@ -280,7 +281,7 @@
             (Capnp.Gen.ById.Xb312981b2552a250.Call'sendResultsTo'unknown' tag) ->
                 (Std_.pure (Call'sendResultsTo'unknown' tag))
         )
-instance (Classes.Marshal s (Call'sendResultsTo)) where
+instance (Classes.Marshal s Call'sendResultsTo) where
     marshalInto raw_ value_ = case value_ of
         (Call'sendResultsTo'caller) ->
             (Capnp.Gen.ById.Xb312981b2552a250.set_Call'sendResultsTo'caller raw_)
@@ -298,16 +299,16 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Return)) where
+instance (Default.Default Return) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Return)) where
+instance (Classes.FromStruct Message.Const Return) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Return)) where
-    type Cerial msg (Return) = (Capnp.Gen.ById.Xb312981b2552a250.Return msg)
+instance (Classes.Decerialize Return) where
+    type Cerial msg Return = (Capnp.Gen.ById.Xb312981b2552a250.Return msg)
     decerialize raw = (Return <$> (Capnp.Gen.ById.Xb312981b2552a250.get_Return'answerId raw)
                               <*> (Capnp.Gen.ById.Xb312981b2552a250.get_Return'releaseParamCaps raw)
                               <*> (Classes.decerialize raw))
-instance (Classes.Marshal s (Return)) where
+instance (Classes.Marshal s Return) where
     marshalInto raw_ value_ = case value_ of
         Return{..} ->
             (do
@@ -318,20 +319,20 @@
                     )
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (Return))
-instance (Classes.Cerialize s (V.Vector (Return))) where
+instance (Classes.Cerialize s Return)
+instance (Classes.Cerialize s (V.Vector Return)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Return)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Return))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Return))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Return)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Return)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Return))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Return))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Return)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Return)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Return))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Return))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Return)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data Return' 
     = Return'results Payload
@@ -344,12 +345,12 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Return')) where
+instance (Default.Default Return') where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Return')) where
+instance (Classes.FromStruct Message.Const Return') where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Return')) where
-    type Cerial msg (Return') = (Capnp.Gen.ById.Xb312981b2552a250.Return msg)
+instance (Classes.Decerialize Return') where
+    type Cerial msg Return' = (Capnp.Gen.ById.Xb312981b2552a250.Return msg)
     decerialize raw = (do
         raw <- (Capnp.Gen.ById.Xb312981b2552a250.get_Return' raw)
         case raw of
@@ -368,7 +369,7 @@
             (Capnp.Gen.ById.Xb312981b2552a250.Return'unknown' tag) ->
                 (Std_.pure (Return'unknown' tag))
         )
-instance (Classes.Marshal s (Return')) where
+instance (Classes.Marshal s Return') where
     marshalInto raw_ value_ = case value_ of
         (Return'results arg_) ->
             ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.Xb312981b2552a250.set_Return'results raw_))
@@ -391,15 +392,15 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Finish)) where
+instance (Default.Default Finish) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Finish)) where
+instance (Classes.FromStruct Message.Const Finish) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Finish)) where
-    type Cerial msg (Finish) = (Capnp.Gen.ById.Xb312981b2552a250.Finish msg)
+instance (Classes.Decerialize Finish) where
+    type Cerial msg Finish = (Capnp.Gen.ById.Xb312981b2552a250.Finish msg)
     decerialize raw = (Finish <$> (Capnp.Gen.ById.Xb312981b2552a250.get_Finish'questionId raw)
                               <*> (Capnp.Gen.ById.Xb312981b2552a250.get_Finish'releaseResultCaps raw))
-instance (Classes.Marshal s (Finish)) where
+instance (Classes.Marshal s Finish) where
     marshalInto raw_ value_ = case value_ of
         Finish{..} ->
             (do
@@ -407,20 +408,20 @@
                 (Capnp.Gen.ById.Xb312981b2552a250.set_Finish'releaseResultCaps raw_ releaseResultCaps)
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (Finish))
-instance (Classes.Cerialize s (V.Vector (Finish))) where
+instance (Classes.Cerialize s Finish)
+instance (Classes.Cerialize s (V.Vector Finish)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Finish)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Finish))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Finish))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Finish)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Finish)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Finish))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Finish))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Finish)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Finish)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Finish))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Finish))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Finish)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data Resolve 
     = Resolve 
@@ -429,15 +430,15 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Resolve)) where
+instance (Default.Default Resolve) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Resolve)) where
+instance (Classes.FromStruct Message.Const Resolve) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Resolve)) where
-    type Cerial msg (Resolve) = (Capnp.Gen.ById.Xb312981b2552a250.Resolve msg)
+instance (Classes.Decerialize Resolve) where
+    type Cerial msg Resolve = (Capnp.Gen.ById.Xb312981b2552a250.Resolve msg)
     decerialize raw = (Resolve <$> (Capnp.Gen.ById.Xb312981b2552a250.get_Resolve'promiseId raw)
                                <*> (Classes.decerialize raw))
-instance (Classes.Marshal s (Resolve)) where
+instance (Classes.Marshal s Resolve) where
     marshalInto raw_ value_ = case value_ of
         Resolve{..} ->
             (do
@@ -447,20 +448,20 @@
                     )
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (Resolve))
-instance (Classes.Cerialize s (V.Vector (Resolve))) where
+instance (Classes.Cerialize s Resolve)
+instance (Classes.Cerialize s (V.Vector Resolve)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Resolve)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Resolve))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Resolve))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Resolve)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Resolve)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Resolve))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Resolve))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Resolve)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Resolve)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Resolve))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Resolve))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Resolve)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data Resolve' 
     = Resolve'cap CapDescriptor
@@ -469,12 +470,12 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Resolve')) where
+instance (Default.Default Resolve') where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Resolve')) where
+instance (Classes.FromStruct Message.Const Resolve') where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Resolve')) where
-    type Cerial msg (Resolve') = (Capnp.Gen.ById.Xb312981b2552a250.Resolve msg)
+instance (Classes.Decerialize Resolve') where
+    type Cerial msg Resolve' = (Capnp.Gen.ById.Xb312981b2552a250.Resolve msg)
     decerialize raw = (do
         raw <- (Capnp.Gen.ById.Xb312981b2552a250.get_Resolve' raw)
         case raw of
@@ -485,7 +486,7 @@
             (Capnp.Gen.ById.Xb312981b2552a250.Resolve'unknown' tag) ->
                 (Std_.pure (Resolve'unknown' tag))
         )
-instance (Classes.Marshal s (Resolve')) where
+instance (Classes.Marshal s Resolve') where
     marshalInto raw_ value_ = case value_ of
         (Resolve'cap arg_) ->
             ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.Xb312981b2552a250.set_Resolve'cap raw_))
@@ -500,15 +501,15 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Release)) where
+instance (Default.Default Release) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Release)) where
+instance (Classes.FromStruct Message.Const Release) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Release)) where
-    type Cerial msg (Release) = (Capnp.Gen.ById.Xb312981b2552a250.Release msg)
+instance (Classes.Decerialize Release) where
+    type Cerial msg Release = (Capnp.Gen.ById.Xb312981b2552a250.Release msg)
     decerialize raw = (Release <$> (Capnp.Gen.ById.Xb312981b2552a250.get_Release'id raw)
                                <*> (Capnp.Gen.ById.Xb312981b2552a250.get_Release'referenceCount raw))
-instance (Classes.Marshal s (Release)) where
+instance (Classes.Marshal s Release) where
     marshalInto raw_ value_ = case value_ of
         Release{..} ->
             (do
@@ -516,20 +517,20 @@
                 (Capnp.Gen.ById.Xb312981b2552a250.set_Release'referenceCount raw_ referenceCount)
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (Release))
-instance (Classes.Cerialize s (V.Vector (Release))) where
+instance (Classes.Cerialize s Release)
+instance (Classes.Cerialize s (V.Vector Release)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Release)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Release))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Release))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Release)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Release)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Release))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Release))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Release)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Release)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Release))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Release))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Release)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data Disembargo 
     = Disembargo 
@@ -538,15 +539,15 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Disembargo)) where
+instance (Default.Default Disembargo) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Disembargo)) where
+instance (Classes.FromStruct Message.Const Disembargo) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Disembargo)) where
-    type Cerial msg (Disembargo) = (Capnp.Gen.ById.Xb312981b2552a250.Disembargo msg)
+instance (Classes.Decerialize Disembargo) where
+    type Cerial msg Disembargo = (Capnp.Gen.ById.Xb312981b2552a250.Disembargo msg)
     decerialize raw = (Disembargo <$> ((Capnp.Gen.ById.Xb312981b2552a250.get_Disembargo'target raw) >>= Classes.decerialize)
                                   <*> ((Capnp.Gen.ById.Xb312981b2552a250.get_Disembargo'context raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Disembargo)) where
+instance (Classes.Marshal s Disembargo) where
     marshalInto raw_ value_ = case value_ of
         Disembargo{..} ->
             (do
@@ -557,20 +558,20 @@
                     )
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (Disembargo))
-instance (Classes.Cerialize s (V.Vector (Disembargo))) where
+instance (Classes.Cerialize s Disembargo)
+instance (Classes.Cerialize s (V.Vector Disembargo)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Disembargo)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Disembargo))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Disembargo))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Disembargo)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Disembargo)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Disembargo))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Disembargo))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Disembargo)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Disembargo)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Disembargo))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Disembargo))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Disembargo)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data Disembargo'context 
     = Disembargo'context'senderLoopback Std_.Word32
@@ -581,12 +582,12 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Disembargo'context)) where
+instance (Default.Default Disembargo'context) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Disembargo'context)) where
+instance (Classes.FromStruct Message.Const Disembargo'context) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Disembargo'context)) where
-    type Cerial msg (Disembargo'context) = (Capnp.Gen.ById.Xb312981b2552a250.Disembargo'context msg)
+instance (Classes.Decerialize Disembargo'context) where
+    type Cerial msg Disembargo'context = (Capnp.Gen.ById.Xb312981b2552a250.Disembargo'context msg)
     decerialize raw = (do
         raw <- (Capnp.Gen.ById.Xb312981b2552a250.get_Disembargo'context' raw)
         case raw of
@@ -601,7 +602,7 @@
             (Capnp.Gen.ById.Xb312981b2552a250.Disembargo'context'unknown' tag) ->
                 (Std_.pure (Disembargo'context'unknown' tag))
         )
-instance (Classes.Marshal s (Disembargo'context)) where
+instance (Classes.Marshal s Disembargo'context) where
     marshalInto raw_ value_ = case value_ of
         (Disembargo'context'senderLoopback arg_) ->
             (Capnp.Gen.ById.Xb312981b2552a250.set_Disembargo'context'senderLoopback raw_ arg_)
@@ -621,16 +622,16 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Provide)) where
+instance (Default.Default Provide) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Provide)) where
+instance (Classes.FromStruct Message.Const Provide) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Provide)) where
-    type Cerial msg (Provide) = (Capnp.Gen.ById.Xb312981b2552a250.Provide msg)
+instance (Classes.Decerialize Provide) where
+    type Cerial msg Provide = (Capnp.Gen.ById.Xb312981b2552a250.Provide msg)
     decerialize raw = (Provide <$> (Capnp.Gen.ById.Xb312981b2552a250.get_Provide'questionId raw)
                                <*> ((Capnp.Gen.ById.Xb312981b2552a250.get_Provide'target raw) >>= Classes.decerialize)
                                <*> ((Capnp.Gen.ById.Xb312981b2552a250.get_Provide'recipient raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Provide)) where
+instance (Classes.Marshal s Provide) where
     marshalInto raw_ value_ = case value_ of
         Provide{..} ->
             (do
@@ -639,20 +640,20 @@
                 ((Classes.cerialize (Untyped.message raw_) recipient) >>= (Capnp.Gen.ById.Xb312981b2552a250.set_Provide'recipient raw_))
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (Provide))
-instance (Classes.Cerialize s (V.Vector (Provide))) where
+instance (Classes.Cerialize s Provide)
+instance (Classes.Cerialize s (V.Vector Provide)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Provide)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Provide))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Provide))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Provide)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Provide)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Provide))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Provide))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Provide)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Provide)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Provide))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Provide))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Provide)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data Accept 
     = Accept 
@@ -662,16 +663,16 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Accept)) where
+instance (Default.Default Accept) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Accept)) where
+instance (Classes.FromStruct Message.Const Accept) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Accept)) where
-    type Cerial msg (Accept) = (Capnp.Gen.ById.Xb312981b2552a250.Accept msg)
+instance (Classes.Decerialize Accept) where
+    type Cerial msg Accept = (Capnp.Gen.ById.Xb312981b2552a250.Accept msg)
     decerialize raw = (Accept <$> (Capnp.Gen.ById.Xb312981b2552a250.get_Accept'questionId raw)
                               <*> ((Capnp.Gen.ById.Xb312981b2552a250.get_Accept'provision raw) >>= Classes.decerialize)
                               <*> (Capnp.Gen.ById.Xb312981b2552a250.get_Accept'embargo raw))
-instance (Classes.Marshal s (Accept)) where
+instance (Classes.Marshal s Accept) where
     marshalInto raw_ value_ = case value_ of
         Accept{..} ->
             (do
@@ -680,20 +681,20 @@
                 (Capnp.Gen.ById.Xb312981b2552a250.set_Accept'embargo raw_ embargo)
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (Accept))
-instance (Classes.Cerialize s (V.Vector (Accept))) where
+instance (Classes.Cerialize s Accept)
+instance (Classes.Cerialize s (V.Vector Accept)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Accept)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Accept))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Accept))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Accept)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Accept)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Accept))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Accept))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Accept)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Accept)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Accept))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Accept))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Accept)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data Join 
     = Join 
@@ -703,16 +704,16 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Join)) where
+instance (Default.Default Join) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Join)) where
+instance (Classes.FromStruct Message.Const Join) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Join)) where
-    type Cerial msg (Join) = (Capnp.Gen.ById.Xb312981b2552a250.Join msg)
+instance (Classes.Decerialize Join) where
+    type Cerial msg Join = (Capnp.Gen.ById.Xb312981b2552a250.Join msg)
     decerialize raw = (Join <$> (Capnp.Gen.ById.Xb312981b2552a250.get_Join'questionId raw)
                             <*> ((Capnp.Gen.ById.Xb312981b2552a250.get_Join'target raw) >>= Classes.decerialize)
                             <*> ((Capnp.Gen.ById.Xb312981b2552a250.get_Join'keyPart raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Join)) where
+instance (Classes.Marshal s Join) where
     marshalInto raw_ value_ = case value_ of
         Join{..} ->
             (do
@@ -721,20 +722,20 @@
                 ((Classes.cerialize (Untyped.message raw_) keyPart) >>= (Capnp.Gen.ById.Xb312981b2552a250.set_Join'keyPart raw_))
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (Join))
-instance (Classes.Cerialize s (V.Vector (Join))) where
+instance (Classes.Cerialize s Join)
+instance (Classes.Cerialize s (V.Vector Join)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Join)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Join))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Join))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Join)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Join)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Join))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Join))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Join)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Join)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Join))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Join))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Join)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data MessageTarget 
     = MessageTarget'importedCap Std_.Word32
@@ -743,12 +744,12 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (MessageTarget)) where
+instance (Default.Default MessageTarget) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (MessageTarget)) where
+instance (Classes.FromStruct Message.Const MessageTarget) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (MessageTarget)) where
-    type Cerial msg (MessageTarget) = (Capnp.Gen.ById.Xb312981b2552a250.MessageTarget msg)
+instance (Classes.Decerialize MessageTarget) where
+    type Cerial msg MessageTarget = (Capnp.Gen.ById.Xb312981b2552a250.MessageTarget msg)
     decerialize raw = (do
         raw <- (Capnp.Gen.ById.Xb312981b2552a250.get_MessageTarget' raw)
         case raw of
@@ -759,7 +760,7 @@
             (Capnp.Gen.ById.Xb312981b2552a250.MessageTarget'unknown' tag) ->
                 (Std_.pure (MessageTarget'unknown' tag))
         )
-instance (Classes.Marshal s (MessageTarget)) where
+instance (Classes.Marshal s MessageTarget) where
     marshalInto raw_ value_ = case value_ of
         (MessageTarget'importedCap arg_) ->
             (Capnp.Gen.ById.Xb312981b2552a250.set_MessageTarget'importedCap raw_ arg_)
@@ -767,20 +768,20 @@
             ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.Xb312981b2552a250.set_MessageTarget'promisedAnswer raw_))
         (MessageTarget'unknown' tag) ->
             (Capnp.Gen.ById.Xb312981b2552a250.set_MessageTarget'unknown' raw_ tag)
-instance (Classes.Cerialize s (MessageTarget))
-instance (Classes.Cerialize s (V.Vector (MessageTarget))) where
+instance (Classes.Cerialize s MessageTarget)
+instance (Classes.Cerialize s (V.Vector MessageTarget)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (MessageTarget)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector MessageTarget))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (MessageTarget))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector MessageTarget)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (MessageTarget)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector MessageTarget))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (MessageTarget))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector MessageTarget)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (MessageTarget)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector MessageTarget))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (MessageTarget))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector MessageTarget)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data Payload 
     = Payload 
@@ -789,15 +790,15 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Payload)) where
+instance (Default.Default Payload) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Payload)) where
+instance (Classes.FromStruct Message.Const Payload) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Payload)) where
-    type Cerial msg (Payload) = (Capnp.Gen.ById.Xb312981b2552a250.Payload msg)
+instance (Classes.Decerialize Payload) where
+    type Cerial msg Payload = (Capnp.Gen.ById.Xb312981b2552a250.Payload msg)
     decerialize raw = (Payload <$> ((Capnp.Gen.ById.Xb312981b2552a250.get_Payload'content raw) >>= Classes.decerialize)
                                <*> ((Capnp.Gen.ById.Xb312981b2552a250.get_Payload'capTable raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Payload)) where
+instance (Classes.Marshal s Payload) where
     marshalInto raw_ value_ = case value_ of
         Payload{..} ->
             (do
@@ -805,20 +806,20 @@
                 ((Classes.cerialize (Untyped.message raw_) capTable) >>= (Capnp.Gen.ById.Xb312981b2552a250.set_Payload'capTable raw_))
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (Payload))
-instance (Classes.Cerialize s (V.Vector (Payload))) where
+instance (Classes.Cerialize s Payload)
+instance (Classes.Cerialize s (V.Vector Payload)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Payload)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Payload))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Payload))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Payload)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Payload)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Payload))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Payload))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Payload)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Payload)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Payload))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Payload))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Payload)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data CapDescriptor 
     = CapDescriptor 
@@ -827,15 +828,15 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (CapDescriptor)) where
+instance (Default.Default CapDescriptor) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (CapDescriptor)) where
+instance (Classes.FromStruct Message.Const CapDescriptor) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (CapDescriptor)) where
-    type Cerial msg (CapDescriptor) = (Capnp.Gen.ById.Xb312981b2552a250.CapDescriptor msg)
+instance (Classes.Decerialize CapDescriptor) where
+    type Cerial msg CapDescriptor = (Capnp.Gen.ById.Xb312981b2552a250.CapDescriptor msg)
     decerialize raw = (CapDescriptor <$> (Capnp.Gen.ById.Xb312981b2552a250.get_CapDescriptor'attachedFd raw)
                                      <*> (Classes.decerialize raw))
-instance (Classes.Marshal s (CapDescriptor)) where
+instance (Classes.Marshal s CapDescriptor) where
     marshalInto raw_ value_ = case value_ of
         CapDescriptor{..} ->
             (do
@@ -845,20 +846,20 @@
                     )
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (CapDescriptor))
-instance (Classes.Cerialize s (V.Vector (CapDescriptor))) where
+instance (Classes.Cerialize s CapDescriptor)
+instance (Classes.Cerialize s (V.Vector CapDescriptor)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (CapDescriptor)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector CapDescriptor))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (CapDescriptor))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector CapDescriptor)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (CapDescriptor)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector CapDescriptor))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (CapDescriptor))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector CapDescriptor)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (CapDescriptor)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector CapDescriptor))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (CapDescriptor))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector CapDescriptor)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data CapDescriptor' 
     = CapDescriptor'none 
@@ -871,12 +872,12 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (CapDescriptor')) where
+instance (Default.Default CapDescriptor') where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (CapDescriptor')) where
+instance (Classes.FromStruct Message.Const CapDescriptor') where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (CapDescriptor')) where
-    type Cerial msg (CapDescriptor') = (Capnp.Gen.ById.Xb312981b2552a250.CapDescriptor msg)
+instance (Classes.Decerialize CapDescriptor') where
+    type Cerial msg CapDescriptor' = (Capnp.Gen.ById.Xb312981b2552a250.CapDescriptor msg)
     decerialize raw = (do
         raw <- (Capnp.Gen.ById.Xb312981b2552a250.get_CapDescriptor' raw)
         case raw of
@@ -895,7 +896,7 @@
             (Capnp.Gen.ById.Xb312981b2552a250.CapDescriptor'unknown' tag) ->
                 (Std_.pure (CapDescriptor'unknown' tag))
         )
-instance (Classes.Marshal s (CapDescriptor')) where
+instance (Classes.Marshal s CapDescriptor') where
     marshalInto raw_ value_ = case value_ of
         (CapDescriptor'none) ->
             (Capnp.Gen.ById.Xb312981b2552a250.set_CapDescriptor'none raw_)
@@ -918,15 +919,15 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (PromisedAnswer)) where
+instance (Default.Default PromisedAnswer) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (PromisedAnswer)) where
+instance (Classes.FromStruct Message.Const PromisedAnswer) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (PromisedAnswer)) where
-    type Cerial msg (PromisedAnswer) = (Capnp.Gen.ById.Xb312981b2552a250.PromisedAnswer msg)
+instance (Classes.Decerialize PromisedAnswer) where
+    type Cerial msg PromisedAnswer = (Capnp.Gen.ById.Xb312981b2552a250.PromisedAnswer msg)
     decerialize raw = (PromisedAnswer <$> (Capnp.Gen.ById.Xb312981b2552a250.get_PromisedAnswer'questionId raw)
                                       <*> ((Capnp.Gen.ById.Xb312981b2552a250.get_PromisedAnswer'transform raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (PromisedAnswer)) where
+instance (Classes.Marshal s PromisedAnswer) where
     marshalInto raw_ value_ = case value_ of
         PromisedAnswer{..} ->
             (do
@@ -934,20 +935,20 @@
                 ((Classes.cerialize (Untyped.message raw_) transform) >>= (Capnp.Gen.ById.Xb312981b2552a250.set_PromisedAnswer'transform raw_))
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (PromisedAnswer))
-instance (Classes.Cerialize s (V.Vector (PromisedAnswer))) where
+instance (Classes.Cerialize s PromisedAnswer)
+instance (Classes.Cerialize s (V.Vector PromisedAnswer)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (PromisedAnswer)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector PromisedAnswer))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (PromisedAnswer))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector PromisedAnswer)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (PromisedAnswer)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector PromisedAnswer))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (PromisedAnswer))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector PromisedAnswer)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (PromisedAnswer)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector PromisedAnswer))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (PromisedAnswer))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector PromisedAnswer)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data PromisedAnswer'Op 
     = PromisedAnswer'Op'noop 
@@ -956,12 +957,12 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (PromisedAnswer'Op)) where
+instance (Default.Default PromisedAnswer'Op) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (PromisedAnswer'Op)) where
+instance (Classes.FromStruct Message.Const PromisedAnswer'Op) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (PromisedAnswer'Op)) where
-    type Cerial msg (PromisedAnswer'Op) = (Capnp.Gen.ById.Xb312981b2552a250.PromisedAnswer'Op msg)
+instance (Classes.Decerialize PromisedAnswer'Op) where
+    type Cerial msg PromisedAnswer'Op = (Capnp.Gen.ById.Xb312981b2552a250.PromisedAnswer'Op msg)
     decerialize raw = (do
         raw <- (Capnp.Gen.ById.Xb312981b2552a250.get_PromisedAnswer'Op' raw)
         case raw of
@@ -972,7 +973,7 @@
             (Capnp.Gen.ById.Xb312981b2552a250.PromisedAnswer'Op'unknown' tag) ->
                 (Std_.pure (PromisedAnswer'Op'unknown' tag))
         )
-instance (Classes.Marshal s (PromisedAnswer'Op)) where
+instance (Classes.Marshal s PromisedAnswer'Op) where
     marshalInto raw_ value_ = case value_ of
         (PromisedAnswer'Op'noop) ->
             (Capnp.Gen.ById.Xb312981b2552a250.set_PromisedAnswer'Op'noop raw_)
@@ -980,20 +981,20 @@
             (Capnp.Gen.ById.Xb312981b2552a250.set_PromisedAnswer'Op'getPointerField raw_ arg_)
         (PromisedAnswer'Op'unknown' tag) ->
             (Capnp.Gen.ById.Xb312981b2552a250.set_PromisedAnswer'Op'unknown' raw_ tag)
-instance (Classes.Cerialize s (PromisedAnswer'Op))
-instance (Classes.Cerialize s (V.Vector (PromisedAnswer'Op))) where
+instance (Classes.Cerialize s PromisedAnswer'Op)
+instance (Classes.Cerialize s (V.Vector PromisedAnswer'Op)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (PromisedAnswer'Op)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector PromisedAnswer'Op))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (PromisedAnswer'Op))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector PromisedAnswer'Op)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (PromisedAnswer'Op)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector PromisedAnswer'Op))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (PromisedAnswer'Op))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector PromisedAnswer'Op)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (PromisedAnswer'Op)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector PromisedAnswer'Op))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (PromisedAnswer'Op))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector PromisedAnswer'Op)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data ThirdPartyCapDescriptor 
     = ThirdPartyCapDescriptor 
@@ -1002,15 +1003,15 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (ThirdPartyCapDescriptor)) where
+instance (Default.Default ThirdPartyCapDescriptor) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (ThirdPartyCapDescriptor)) where
+instance (Classes.FromStruct Message.Const ThirdPartyCapDescriptor) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (ThirdPartyCapDescriptor)) where
-    type Cerial msg (ThirdPartyCapDescriptor) = (Capnp.Gen.ById.Xb312981b2552a250.ThirdPartyCapDescriptor msg)
+instance (Classes.Decerialize ThirdPartyCapDescriptor) where
+    type Cerial msg ThirdPartyCapDescriptor = (Capnp.Gen.ById.Xb312981b2552a250.ThirdPartyCapDescriptor msg)
     decerialize raw = (ThirdPartyCapDescriptor <$> ((Capnp.Gen.ById.Xb312981b2552a250.get_ThirdPartyCapDescriptor'id raw) >>= Classes.decerialize)
                                                <*> (Capnp.Gen.ById.Xb312981b2552a250.get_ThirdPartyCapDescriptor'vineId raw))
-instance (Classes.Marshal s (ThirdPartyCapDescriptor)) where
+instance (Classes.Marshal s ThirdPartyCapDescriptor) where
     marshalInto raw_ value_ = case value_ of
         ThirdPartyCapDescriptor{..} ->
             (do
@@ -1018,20 +1019,20 @@
                 (Capnp.Gen.ById.Xb312981b2552a250.set_ThirdPartyCapDescriptor'vineId raw_ vineId)
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (ThirdPartyCapDescriptor))
-instance (Classes.Cerialize s (V.Vector (ThirdPartyCapDescriptor))) where
+instance (Classes.Cerialize s ThirdPartyCapDescriptor)
+instance (Classes.Cerialize s (V.Vector ThirdPartyCapDescriptor)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (ThirdPartyCapDescriptor)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector ThirdPartyCapDescriptor))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (ThirdPartyCapDescriptor))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector ThirdPartyCapDescriptor)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (ThirdPartyCapDescriptor)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector ThirdPartyCapDescriptor))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (ThirdPartyCapDescriptor))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector ThirdPartyCapDescriptor)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (ThirdPartyCapDescriptor)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector ThirdPartyCapDescriptor))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (ThirdPartyCapDescriptor))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector ThirdPartyCapDescriptor)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data Exception 
     = Exception 
@@ -1042,17 +1043,17 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Exception)) where
+instance (Default.Default Exception) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Exception)) where
+instance (Classes.FromStruct Message.Const Exception) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Exception)) where
-    type Cerial msg (Exception) = (Capnp.Gen.ById.Xb312981b2552a250.Exception msg)
+instance (Classes.Decerialize Exception) where
+    type Cerial msg Exception = (Capnp.Gen.ById.Xb312981b2552a250.Exception msg)
     decerialize raw = (Exception <$> ((Capnp.Gen.ById.Xb312981b2552a250.get_Exception'reason raw) >>= Classes.decerialize)
                                  <*> (Capnp.Gen.ById.Xb312981b2552a250.get_Exception'obsoleteIsCallersFault raw)
                                  <*> (Capnp.Gen.ById.Xb312981b2552a250.get_Exception'obsoleteDurability raw)
                                  <*> (Capnp.Gen.ById.Xb312981b2552a250.get_Exception'type_ raw))
-instance (Classes.Marshal s (Exception)) where
+instance (Classes.Marshal s Exception) where
     marshalInto raw_ value_ = case value_ of
         Exception{..} ->
             (do
@@ -1062,20 +1063,20 @@
                 (Capnp.Gen.ById.Xb312981b2552a250.set_Exception'type_ raw_ type_)
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (Exception))
-instance (Classes.Cerialize s (V.Vector (Exception))) where
+instance (Classes.Cerialize s Exception)
+instance (Classes.Cerialize s (V.Vector Exception)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Exception)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Exception))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Exception))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Exception)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Exception)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Exception))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Exception))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Exception)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Exception)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Exception))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Exception))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Exception)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 instance (Classes.Decerialize Capnp.Gen.ById.Xb312981b2552a250.Exception'Type) where
     type Cerial msg Capnp.Gen.ById.Xb312981b2552a250.Exception'Type = Capnp.Gen.ById.Xb312981b2552a250.Exception'Type
diff --git a/gen/lib/Capnp/Gen/Capnp/RpcTwoparty.hs b/gen/lib/Capnp/Gen/Capnp/RpcTwoparty.hs
--- a/gen/lib/Capnp/Gen/Capnp/RpcTwoparty.hs
+++ b/gen/lib/Capnp/Gen/Capnp/RpcTwoparty.hs
@@ -10,6 +10,7 @@
 {-# OPTIONS_GHC -Wno-unused-matches #-}
 {-# OPTIONS_GHC -Wno-orphans #-}
 {-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
 module Capnp.Gen.Capnp.RpcTwoparty where
 import qualified Capnp.Message as Message
 import qualified Capnp.Untyped as Untyped
diff --git a/gen/lib/Capnp/Gen/Capnp/RpcTwoparty/New.hs b/gen/lib/Capnp/Gen/Capnp/RpcTwoparty/New.hs
new file mode 100644
--- /dev/null
+++ b/gen/lib/Capnp/Gen/Capnp/RpcTwoparty/New.hs
@@ -0,0 +1,239 @@
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE EmptyDataDeriving #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE UndecidableInstances #-}
+{-# LANGUAGE OverloadedLabels #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE StandaloneDeriving #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# OPTIONS_GHC -Wno-unused-imports #-}
+{-# OPTIONS_GHC -Wno-dodgy-exports #-}
+{-# OPTIONS_GHC -Wno-unused-matches #-}
+{-# OPTIONS_GHC -Wno-orphans #-}
+{-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
+module Capnp.Gen.Capnp.RpcTwoparty.New where
+import qualified Capnp.Repr as R
+import qualified Capnp.Repr.Parsed as RP
+import qualified Capnp.New.Basics as Basics
+import qualified GHC.OverloadedLabels as OL
+import qualified Capnp.GenHelpers.New as GH
+import qualified Capnp.New.Classes as C
+import qualified GHC.Generics as Generics
+import qualified Capnp.GenHelpers.ReExports.Data.ByteString as BS
+import qualified Prelude as Std_
+import qualified Data.Word as Std_
+import qualified Data.Int as Std_
+import Prelude ((<$>), (<*>), (>>=))
+data Side 
+    = Side'server 
+    | Side'client 
+    | Side'unknown' Std_.Word16
+    deriving(Std_.Eq,Std_.Show)
+type instance (R.ReprFor Side) = (R.Data R.Sz16)
+instance (Std_.Enum Side) where
+    toEnum n_ = case n_ of
+        0 ->
+            Side'server
+        1 ->
+            Side'client
+        tag_ ->
+            (Side'unknown' (Std_.fromIntegral tag_))
+    fromEnum value_ = case value_ of
+        (Side'server) ->
+            0
+        (Side'client) ->
+            1
+        (Side'unknown' tag_) ->
+            (Std_.fromIntegral tag_)
+instance (C.IsWord Side) where
+    fromWord w_ = (Std_.toEnum (Std_.fromIntegral w_))
+    toWord v_ = (Std_.fromIntegral (Std_.fromEnum v_))
+instance (C.Parse Side Side) where
+    parse  = GH.parseEnum
+    encode  = GH.encodeEnum
+instance (C.AllocateList Side) where
+    type ListAllocHint Side = Std_.Int
+instance (C.EstimateListAlloc Side Side)
+data VatId 
+type instance (R.ReprFor VatId) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct VatId) where
+    numStructWords  = 1
+    numStructPtrs  = 0
+instance (C.Allocate VatId) where
+    type AllocHint VatId = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc VatId (C.Parsed VatId))
+instance (C.AllocateList VatId) where
+    type ListAllocHint VatId = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc VatId (C.Parsed VatId))
+data instance C.Parsed VatId
+    = VatId 
+        {side :: (RP.Parsed Side)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed VatId))
+deriving instance (Std_.Eq (C.Parsed VatId))
+instance (C.Parse VatId (C.Parsed VatId)) where
+    parse raw_ = (VatId <$> (GH.parseField #side raw_))
+instance (C.Marshal VatId (C.Parsed VatId)) where
+    marshalInto raw_ VatId{..} = (do
+        (GH.encodeField #side side raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "side" GH.Slot VatId Side) where
+    fieldByLabel  = (GH.dataField 0 0 16 0)
+data ProvisionId 
+type instance (R.ReprFor ProvisionId) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct ProvisionId) where
+    numStructWords  = 1
+    numStructPtrs  = 0
+instance (C.Allocate ProvisionId) where
+    type AllocHint ProvisionId = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc ProvisionId (C.Parsed ProvisionId))
+instance (C.AllocateList ProvisionId) where
+    type ListAllocHint ProvisionId = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc ProvisionId (C.Parsed ProvisionId))
+data instance C.Parsed ProvisionId
+    = ProvisionId 
+        {joinId :: (RP.Parsed Std_.Word32)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed ProvisionId))
+deriving instance (Std_.Eq (C.Parsed ProvisionId))
+instance (C.Parse ProvisionId (C.Parsed ProvisionId)) where
+    parse raw_ = (ProvisionId <$> (GH.parseField #joinId raw_))
+instance (C.Marshal ProvisionId (C.Parsed ProvisionId)) where
+    marshalInto raw_ ProvisionId{..} = (do
+        (GH.encodeField #joinId joinId raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "joinId" GH.Slot ProvisionId Std_.Word32) where
+    fieldByLabel  = (GH.dataField 0 0 32 0)
+data RecipientId 
+type instance (R.ReprFor RecipientId) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct RecipientId) where
+    numStructWords  = 0
+    numStructPtrs  = 0
+instance (C.Allocate RecipientId) where
+    type AllocHint RecipientId = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc RecipientId (C.Parsed RecipientId))
+instance (C.AllocateList RecipientId) where
+    type ListAllocHint RecipientId = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc RecipientId (C.Parsed RecipientId))
+data instance C.Parsed RecipientId
+    = RecipientId 
+        {}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed RecipientId))
+deriving instance (Std_.Eq (C.Parsed RecipientId))
+instance (C.Parse RecipientId (C.Parsed RecipientId)) where
+    parse raw_ = (Std_.pure RecipientId)
+instance (C.Marshal RecipientId (C.Parsed RecipientId)) where
+    marshalInto _raw (RecipientId) = (Std_.pure ())
+data ThirdPartyCapId 
+type instance (R.ReprFor ThirdPartyCapId) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct ThirdPartyCapId) where
+    numStructWords  = 0
+    numStructPtrs  = 0
+instance (C.Allocate ThirdPartyCapId) where
+    type AllocHint ThirdPartyCapId = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc ThirdPartyCapId (C.Parsed ThirdPartyCapId))
+instance (C.AllocateList ThirdPartyCapId) where
+    type ListAllocHint ThirdPartyCapId = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc ThirdPartyCapId (C.Parsed ThirdPartyCapId))
+data instance C.Parsed ThirdPartyCapId
+    = ThirdPartyCapId 
+        {}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed ThirdPartyCapId))
+deriving instance (Std_.Eq (C.Parsed ThirdPartyCapId))
+instance (C.Parse ThirdPartyCapId (C.Parsed ThirdPartyCapId)) where
+    parse raw_ = (Std_.pure ThirdPartyCapId)
+instance (C.Marshal ThirdPartyCapId (C.Parsed ThirdPartyCapId)) where
+    marshalInto _raw (ThirdPartyCapId) = (Std_.pure ())
+data JoinKeyPart 
+type instance (R.ReprFor JoinKeyPart) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct JoinKeyPart) where
+    numStructWords  = 1
+    numStructPtrs  = 0
+instance (C.Allocate JoinKeyPart) where
+    type AllocHint JoinKeyPart = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc JoinKeyPart (C.Parsed JoinKeyPart))
+instance (C.AllocateList JoinKeyPart) where
+    type ListAllocHint JoinKeyPart = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc JoinKeyPart (C.Parsed JoinKeyPart))
+data instance C.Parsed JoinKeyPart
+    = JoinKeyPart 
+        {joinId :: (RP.Parsed Std_.Word32)
+        ,partCount :: (RP.Parsed Std_.Word16)
+        ,partNum :: (RP.Parsed Std_.Word16)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed JoinKeyPart))
+deriving instance (Std_.Eq (C.Parsed JoinKeyPart))
+instance (C.Parse JoinKeyPart (C.Parsed JoinKeyPart)) where
+    parse raw_ = (JoinKeyPart <$> (GH.parseField #joinId raw_)
+                              <*> (GH.parseField #partCount raw_)
+                              <*> (GH.parseField #partNum raw_))
+instance (C.Marshal JoinKeyPart (C.Parsed JoinKeyPart)) where
+    marshalInto raw_ JoinKeyPart{..} = (do
+        (GH.encodeField #joinId joinId raw_)
+        (GH.encodeField #partCount partCount raw_)
+        (GH.encodeField #partNum partNum raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "joinId" GH.Slot JoinKeyPart Std_.Word32) where
+    fieldByLabel  = (GH.dataField 0 0 32 0)
+instance (GH.HasField "partCount" GH.Slot JoinKeyPart Std_.Word16) where
+    fieldByLabel  = (GH.dataField 32 0 16 0)
+instance (GH.HasField "partNum" GH.Slot JoinKeyPart Std_.Word16) where
+    fieldByLabel  = (GH.dataField 48 0 16 0)
+data JoinResult 
+type instance (R.ReprFor JoinResult) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct JoinResult) where
+    numStructWords  = 1
+    numStructPtrs  = 1
+instance (C.Allocate JoinResult) where
+    type AllocHint JoinResult = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc JoinResult (C.Parsed JoinResult))
+instance (C.AllocateList JoinResult) where
+    type ListAllocHint JoinResult = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc JoinResult (C.Parsed JoinResult))
+data instance C.Parsed JoinResult
+    = JoinResult 
+        {joinId :: (RP.Parsed Std_.Word32)
+        ,succeeded :: (RP.Parsed Std_.Bool)
+        ,cap :: (RP.Parsed Basics.AnyPointer)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed JoinResult))
+deriving instance (Std_.Eq (C.Parsed JoinResult))
+instance (C.Parse JoinResult (C.Parsed JoinResult)) where
+    parse raw_ = (JoinResult <$> (GH.parseField #joinId raw_)
+                             <*> (GH.parseField #succeeded raw_)
+                             <*> (GH.parseField #cap raw_))
+instance (C.Marshal JoinResult (C.Parsed JoinResult)) where
+    marshalInto raw_ JoinResult{..} = (do
+        (GH.encodeField #joinId joinId raw_)
+        (GH.encodeField #succeeded succeeded raw_)
+        (GH.encodeField #cap cap raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "joinId" GH.Slot JoinResult Std_.Word32) where
+    fieldByLabel  = (GH.dataField 0 0 32 0)
+instance (GH.HasField "succeeded" GH.Slot JoinResult Std_.Bool) where
+    fieldByLabel  = (GH.dataField 32 0 1 0)
+instance (GH.HasField "cap" GH.Slot JoinResult Basics.AnyPointer) where
+    fieldByLabel  = (GH.ptrField 0)
diff --git a/gen/lib/Capnp/Gen/Capnp/RpcTwoparty/Pure.hs b/gen/lib/Capnp/Gen/Capnp/RpcTwoparty/Pure.hs
--- a/gen/lib/Capnp/Gen/Capnp/RpcTwoparty/Pure.hs
+++ b/gen/lib/Capnp/Gen/Capnp/RpcTwoparty/Pure.hs
@@ -13,6 +13,7 @@
 {-# OPTIONS_GHC -Wno-unused-matches #-}
 {-# OPTIONS_GHC -Wno-orphans #-}
 {-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
 module Capnp.Gen.Capnp.RpcTwoparty.Pure(Capnp.Gen.ById.Xa184c7885cdaf2a1.Side(..)
                                        ,VatId(..)
                                        ,ProvisionId(..)
@@ -43,34 +44,34 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (VatId)) where
+instance (Default.Default VatId) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (VatId)) where
+instance (Classes.FromStruct Message.Const VatId) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (VatId)) where
-    type Cerial msg (VatId) = (Capnp.Gen.ById.Xa184c7885cdaf2a1.VatId msg)
+instance (Classes.Decerialize VatId) where
+    type Cerial msg VatId = (Capnp.Gen.ById.Xa184c7885cdaf2a1.VatId msg)
     decerialize raw = (VatId <$> (Capnp.Gen.ById.Xa184c7885cdaf2a1.get_VatId'side raw))
-instance (Classes.Marshal s (VatId)) where
+instance (Classes.Marshal s VatId) where
     marshalInto raw_ value_ = case value_ of
         VatId{..} ->
             (do
                 (Capnp.Gen.ById.Xa184c7885cdaf2a1.set_VatId'side raw_ side)
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (VatId))
-instance (Classes.Cerialize s (V.Vector (VatId))) where
+instance (Classes.Cerialize s VatId)
+instance (Classes.Cerialize s (V.Vector VatId)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (VatId)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector VatId))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (VatId))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector VatId)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (VatId)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector VatId))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (VatId))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector VatId)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (VatId)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector VatId))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (VatId))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector VatId)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data ProvisionId 
     = ProvisionId 
@@ -78,34 +79,34 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (ProvisionId)) where
+instance (Default.Default ProvisionId) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (ProvisionId)) where
+instance (Classes.FromStruct Message.Const ProvisionId) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (ProvisionId)) where
-    type Cerial msg (ProvisionId) = (Capnp.Gen.ById.Xa184c7885cdaf2a1.ProvisionId msg)
+instance (Classes.Decerialize ProvisionId) where
+    type Cerial msg ProvisionId = (Capnp.Gen.ById.Xa184c7885cdaf2a1.ProvisionId msg)
     decerialize raw = (ProvisionId <$> (Capnp.Gen.ById.Xa184c7885cdaf2a1.get_ProvisionId'joinId raw))
-instance (Classes.Marshal s (ProvisionId)) where
+instance (Classes.Marshal s ProvisionId) where
     marshalInto raw_ value_ = case value_ of
         ProvisionId{..} ->
             (do
                 (Capnp.Gen.ById.Xa184c7885cdaf2a1.set_ProvisionId'joinId raw_ joinId)
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (ProvisionId))
-instance (Classes.Cerialize s (V.Vector (ProvisionId))) where
+instance (Classes.Cerialize s ProvisionId)
+instance (Classes.Cerialize s (V.Vector ProvisionId)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (ProvisionId)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector ProvisionId))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (ProvisionId))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector ProvisionId)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (ProvisionId)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector ProvisionId))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (ProvisionId))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector ProvisionId)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (ProvisionId)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector ProvisionId))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (ProvisionId))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector ProvisionId)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data RecipientId 
     = RecipientId 
@@ -113,33 +114,33 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (RecipientId)) where
+instance (Default.Default RecipientId) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (RecipientId)) where
+instance (Classes.FromStruct Message.Const RecipientId) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (RecipientId)) where
-    type Cerial msg (RecipientId) = (Capnp.Gen.ById.Xa184c7885cdaf2a1.RecipientId msg)
+instance (Classes.Decerialize RecipientId) where
+    type Cerial msg RecipientId = (Capnp.Gen.ById.Xa184c7885cdaf2a1.RecipientId msg)
     decerialize raw = (Std_.pure RecipientId)
-instance (Classes.Marshal s (RecipientId)) where
+instance (Classes.Marshal s RecipientId) where
     marshalInto raw_ value_ = case value_ of
         (RecipientId) ->
             (do
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (RecipientId))
-instance (Classes.Cerialize s (V.Vector (RecipientId))) where
+instance (Classes.Cerialize s RecipientId)
+instance (Classes.Cerialize s (V.Vector RecipientId)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (RecipientId)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector RecipientId))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (RecipientId))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector RecipientId)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (RecipientId)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector RecipientId))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (RecipientId))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector RecipientId)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (RecipientId)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector RecipientId))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (RecipientId))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector RecipientId)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data ThirdPartyCapId 
     = ThirdPartyCapId 
@@ -147,33 +148,33 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (ThirdPartyCapId)) where
+instance (Default.Default ThirdPartyCapId) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (ThirdPartyCapId)) where
+instance (Classes.FromStruct Message.Const ThirdPartyCapId) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (ThirdPartyCapId)) where
-    type Cerial msg (ThirdPartyCapId) = (Capnp.Gen.ById.Xa184c7885cdaf2a1.ThirdPartyCapId msg)
+instance (Classes.Decerialize ThirdPartyCapId) where
+    type Cerial msg ThirdPartyCapId = (Capnp.Gen.ById.Xa184c7885cdaf2a1.ThirdPartyCapId msg)
     decerialize raw = (Std_.pure ThirdPartyCapId)
-instance (Classes.Marshal s (ThirdPartyCapId)) where
+instance (Classes.Marshal s ThirdPartyCapId) where
     marshalInto raw_ value_ = case value_ of
         (ThirdPartyCapId) ->
             (do
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (ThirdPartyCapId))
-instance (Classes.Cerialize s (V.Vector (ThirdPartyCapId))) where
+instance (Classes.Cerialize s ThirdPartyCapId)
+instance (Classes.Cerialize s (V.Vector ThirdPartyCapId)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (ThirdPartyCapId)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector ThirdPartyCapId))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (ThirdPartyCapId))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector ThirdPartyCapId)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (ThirdPartyCapId)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector ThirdPartyCapId))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (ThirdPartyCapId))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector ThirdPartyCapId)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (ThirdPartyCapId)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector ThirdPartyCapId))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (ThirdPartyCapId))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector ThirdPartyCapId)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data JoinKeyPart 
     = JoinKeyPart 
@@ -183,16 +184,16 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (JoinKeyPart)) where
+instance (Default.Default JoinKeyPart) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (JoinKeyPart)) where
+instance (Classes.FromStruct Message.Const JoinKeyPart) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (JoinKeyPart)) where
-    type Cerial msg (JoinKeyPart) = (Capnp.Gen.ById.Xa184c7885cdaf2a1.JoinKeyPart msg)
+instance (Classes.Decerialize JoinKeyPart) where
+    type Cerial msg JoinKeyPart = (Capnp.Gen.ById.Xa184c7885cdaf2a1.JoinKeyPart msg)
     decerialize raw = (JoinKeyPart <$> (Capnp.Gen.ById.Xa184c7885cdaf2a1.get_JoinKeyPart'joinId raw)
                                    <*> (Capnp.Gen.ById.Xa184c7885cdaf2a1.get_JoinKeyPart'partCount raw)
                                    <*> (Capnp.Gen.ById.Xa184c7885cdaf2a1.get_JoinKeyPart'partNum raw))
-instance (Classes.Marshal s (JoinKeyPart)) where
+instance (Classes.Marshal s JoinKeyPart) where
     marshalInto raw_ value_ = case value_ of
         JoinKeyPart{..} ->
             (do
@@ -201,20 +202,20 @@
                 (Capnp.Gen.ById.Xa184c7885cdaf2a1.set_JoinKeyPart'partNum raw_ partNum)
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (JoinKeyPart))
-instance (Classes.Cerialize s (V.Vector (JoinKeyPart))) where
+instance (Classes.Cerialize s JoinKeyPart)
+instance (Classes.Cerialize s (V.Vector JoinKeyPart)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (JoinKeyPart)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector JoinKeyPart))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (JoinKeyPart))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector JoinKeyPart)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (JoinKeyPart)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector JoinKeyPart))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (JoinKeyPart))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector JoinKeyPart)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (JoinKeyPart)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector JoinKeyPart))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (JoinKeyPart))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector JoinKeyPart)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data JoinResult 
     = JoinResult 
@@ -224,16 +225,16 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (JoinResult)) where
+instance (Default.Default JoinResult) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (JoinResult)) where
+instance (Classes.FromStruct Message.Const JoinResult) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (JoinResult)) where
-    type Cerial msg (JoinResult) = (Capnp.Gen.ById.Xa184c7885cdaf2a1.JoinResult msg)
+instance (Classes.Decerialize JoinResult) where
+    type Cerial msg JoinResult = (Capnp.Gen.ById.Xa184c7885cdaf2a1.JoinResult msg)
     decerialize raw = (JoinResult <$> (Capnp.Gen.ById.Xa184c7885cdaf2a1.get_JoinResult'joinId raw)
                                   <*> (Capnp.Gen.ById.Xa184c7885cdaf2a1.get_JoinResult'succeeded raw)
                                   <*> ((Capnp.Gen.ById.Xa184c7885cdaf2a1.get_JoinResult'cap raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (JoinResult)) where
+instance (Classes.Marshal s JoinResult) where
     marshalInto raw_ value_ = case value_ of
         JoinResult{..} ->
             (do
@@ -242,20 +243,20 @@
                 ((Classes.cerialize (Untyped.message raw_) cap) >>= (Capnp.Gen.ById.Xa184c7885cdaf2a1.set_JoinResult'cap raw_))
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (JoinResult))
-instance (Classes.Cerialize s (V.Vector (JoinResult))) where
+instance (Classes.Cerialize s JoinResult)
+instance (Classes.Cerialize s (V.Vector JoinResult)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (JoinResult)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector JoinResult))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (JoinResult))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector JoinResult)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (JoinResult)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector JoinResult))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (JoinResult))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector JoinResult)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (JoinResult)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector JoinResult))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (JoinResult))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector JoinResult)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 instance (Classes.Decerialize Capnp.Gen.ById.Xa184c7885cdaf2a1.Side) where
     type Cerial msg Capnp.Gen.ById.Xa184c7885cdaf2a1.Side = Capnp.Gen.ById.Xa184c7885cdaf2a1.Side
diff --git a/gen/lib/Capnp/Gen/Capnp/Schema.hs b/gen/lib/Capnp/Gen/Capnp/Schema.hs
--- a/gen/lib/Capnp/Gen/Capnp/Schema.hs
+++ b/gen/lib/Capnp/Gen/Capnp/Schema.hs
@@ -10,6 +10,7 @@
 {-# OPTIONS_GHC -Wno-unused-matches #-}
 {-# OPTIONS_GHC -Wno-orphans #-}
 {-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
 module Capnp.Gen.Capnp.Schema where
 import qualified Capnp.Message as Message
 import qualified Capnp.Untyped as Untyped
diff --git a/gen/lib/Capnp/Gen/Capnp/Schema/New.hs b/gen/lib/Capnp/Gen/Capnp/Schema/New.hs
new file mode 100644
--- /dev/null
+++ b/gen/lib/Capnp/Gen/Capnp/Schema/New.hs
@@ -0,0 +1,2220 @@
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE EmptyDataDeriving #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE UndecidableInstances #-}
+{-# LANGUAGE OverloadedLabels #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE StandaloneDeriving #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# OPTIONS_GHC -Wno-unused-imports #-}
+{-# OPTIONS_GHC -Wno-dodgy-exports #-}
+{-# OPTIONS_GHC -Wno-unused-matches #-}
+{-# OPTIONS_GHC -Wno-orphans #-}
+{-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
+module Capnp.Gen.Capnp.Schema.New where
+import qualified Capnp.Repr as R
+import qualified Capnp.Repr.Parsed as RP
+import qualified Capnp.New.Basics as Basics
+import qualified GHC.OverloadedLabels as OL
+import qualified Capnp.GenHelpers.New as GH
+import qualified Capnp.New.Classes as C
+import qualified GHC.Generics as Generics
+import qualified Capnp.GenHelpers.ReExports.Data.ByteString as BS
+import qualified Prelude as Std_
+import qualified Data.Word as Std_
+import qualified Data.Int as Std_
+import Prelude ((<$>), (<*>), (>>=))
+data Node 
+type instance (R.ReprFor Node) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Node) where
+    numStructWords  = 5
+    numStructPtrs  = 6
+instance (C.Allocate Node) where
+    type AllocHint Node = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Node (C.Parsed Node))
+instance (C.AllocateList Node) where
+    type ListAllocHint Node = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Node (C.Parsed Node))
+data instance C.Parsed Node
+    = Node 
+        {id :: (RP.Parsed Std_.Word64)
+        ,displayName :: (RP.Parsed Basics.Text)
+        ,displayNamePrefixLength :: (RP.Parsed Std_.Word32)
+        ,scopeId :: (RP.Parsed Std_.Word64)
+        ,nestedNodes :: (RP.Parsed (R.List Node'NestedNode))
+        ,annotations :: (RP.Parsed (R.List Annotation))
+        ,parameters :: (RP.Parsed (R.List Node'Parameter))
+        ,isGeneric :: (RP.Parsed Std_.Bool)
+        ,union' :: (C.Parsed (GH.Which Node))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Node))
+deriving instance (Std_.Eq (C.Parsed Node))
+instance (C.Parse Node (C.Parsed Node)) where
+    parse raw_ = (Node <$> (GH.parseField #id raw_)
+                       <*> (GH.parseField #displayName raw_)
+                       <*> (GH.parseField #displayNamePrefixLength raw_)
+                       <*> (GH.parseField #scopeId raw_)
+                       <*> (GH.parseField #nestedNodes raw_)
+                       <*> (GH.parseField #annotations raw_)
+                       <*> (GH.parseField #parameters raw_)
+                       <*> (GH.parseField #isGeneric raw_)
+                       <*> (C.parse (GH.structUnion raw_)))
+instance (C.Marshal Node (C.Parsed Node)) where
+    marshalInto raw_ Node{..} = (do
+        (GH.encodeField #id id raw_)
+        (GH.encodeField #displayName displayName raw_)
+        (GH.encodeField #displayNamePrefixLength displayNamePrefixLength raw_)
+        (GH.encodeField #scopeId scopeId raw_)
+        (GH.encodeField #nestedNodes nestedNodes raw_)
+        (GH.encodeField #annotations annotations raw_)
+        (GH.encodeField #parameters parameters raw_)
+        (GH.encodeField #isGeneric isGeneric raw_)
+        (C.marshalInto (GH.structUnion raw_) union')
+        )
+instance (GH.HasUnion Node) where
+    unionField  = (GH.dataField 32 1 16 0)
+    data RawWhich mut_ Node
+        = RW_Node'file (R.Raw mut_ ())
+        | RW_Node'struct (R.Raw mut_ Node'struct)
+        | RW_Node'enum (R.Raw mut_ Node'enum)
+        | RW_Node'interface (R.Raw mut_ Node'interface)
+        | RW_Node'const (R.Raw mut_ Node'const)
+        | RW_Node'annotation (R.Raw mut_ Node'annotation)
+        | RW_Node'unknown' Std_.Word16
+    internalWhich tag_ struct_ = case tag_ of
+        0 ->
+            (RW_Node'file <$> (GH.readVariant #file struct_))
+        1 ->
+            (RW_Node'struct <$> (GH.readVariant #struct struct_))
+        2 ->
+            (RW_Node'enum <$> (GH.readVariant #enum struct_))
+        3 ->
+            (RW_Node'interface <$> (GH.readVariant #interface struct_))
+        4 ->
+            (RW_Node'const <$> (GH.readVariant #const struct_))
+        5 ->
+            (RW_Node'annotation <$> (GH.readVariant #annotation struct_))
+        _ ->
+            (Std_.pure (RW_Node'unknown' tag_))
+    data Which Node
+instance (GH.HasVariant "file" GH.Slot Node ()) where
+    variantByLabel  = (GH.Variant GH.voidField 0)
+instance (GH.HasVariant "struct" GH.Group Node Node'struct) where
+    variantByLabel  = (GH.Variant GH.groupField 1)
+instance (GH.HasVariant "enum" GH.Group Node Node'enum) where
+    variantByLabel  = (GH.Variant GH.groupField 2)
+instance (GH.HasVariant "interface" GH.Group Node Node'interface) where
+    variantByLabel  = (GH.Variant GH.groupField 3)
+instance (GH.HasVariant "const" GH.Group Node Node'const) where
+    variantByLabel  = (GH.Variant GH.groupField 4)
+instance (GH.HasVariant "annotation" GH.Group Node Node'annotation) where
+    variantByLabel  = (GH.Variant GH.groupField 5)
+data instance C.Parsed (GH.Which Node)
+    = Node'file 
+    | Node'struct (RP.Parsed Node'struct)
+    | Node'enum (RP.Parsed Node'enum)
+    | Node'interface (RP.Parsed Node'interface)
+    | Node'const (RP.Parsed Node'const)
+    | Node'annotation (RP.Parsed Node'annotation)
+    | Node'unknown' Std_.Word16
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed (GH.Which Node)))
+deriving instance (Std_.Eq (C.Parsed (GH.Which Node)))
+instance (C.Parse (GH.Which Node) (C.Parsed (GH.Which Node))) where
+    parse raw_ = (do
+        rawWhich_ <- (GH.unionWhich raw_)
+        case rawWhich_ of
+            (RW_Node'file _) ->
+                (Std_.pure Node'file)
+            (RW_Node'struct rawArg_) ->
+                (Node'struct <$> (C.parse rawArg_))
+            (RW_Node'enum rawArg_) ->
+                (Node'enum <$> (C.parse rawArg_))
+            (RW_Node'interface rawArg_) ->
+                (Node'interface <$> (C.parse rawArg_))
+            (RW_Node'const rawArg_) ->
+                (Node'const <$> (C.parse rawArg_))
+            (RW_Node'annotation rawArg_) ->
+                (Node'annotation <$> (C.parse rawArg_))
+            (RW_Node'unknown' tag_) ->
+                (Std_.pure (Node'unknown' tag_))
+        )
+instance (C.Marshal (GH.Which Node) (C.Parsed (GH.Which Node))) where
+    marshalInto raw_ parsed_ = case parsed_ of
+        (Node'file) ->
+            (GH.encodeVariant #file () (GH.unionStruct raw_))
+        (Node'struct arg_) ->
+            (do
+                rawGroup_ <- (GH.initVariant #struct (GH.unionStruct raw_))
+                (C.marshalInto rawGroup_ arg_)
+                )
+        (Node'enum arg_) ->
+            (do
+                rawGroup_ <- (GH.initVariant #enum (GH.unionStruct raw_))
+                (C.marshalInto rawGroup_ arg_)
+                )
+        (Node'interface arg_) ->
+            (do
+                rawGroup_ <- (GH.initVariant #interface (GH.unionStruct raw_))
+                (C.marshalInto rawGroup_ arg_)
+                )
+        (Node'const arg_) ->
+            (do
+                rawGroup_ <- (GH.initVariant #const (GH.unionStruct raw_))
+                (C.marshalInto rawGroup_ arg_)
+                )
+        (Node'annotation arg_) ->
+            (do
+                rawGroup_ <- (GH.initVariant #annotation (GH.unionStruct raw_))
+                (C.marshalInto rawGroup_ arg_)
+                )
+        (Node'unknown' tag_) ->
+            (GH.encodeField GH.unionField tag_ (GH.unionStruct raw_))
+instance (GH.HasField "id" GH.Slot Node Std_.Word64) where
+    fieldByLabel  = (GH.dataField 0 0 64 0)
+instance (GH.HasField "displayName" GH.Slot Node Basics.Text) where
+    fieldByLabel  = (GH.ptrField 0)
+instance (GH.HasField "displayNamePrefixLength" GH.Slot Node Std_.Word32) where
+    fieldByLabel  = (GH.dataField 0 1 32 0)
+instance (GH.HasField "scopeId" GH.Slot Node Std_.Word64) where
+    fieldByLabel  = (GH.dataField 0 2 64 0)
+instance (GH.HasField "nestedNodes" GH.Slot Node (R.List Node'NestedNode)) where
+    fieldByLabel  = (GH.ptrField 1)
+instance (GH.HasField "annotations" GH.Slot Node (R.List Annotation)) where
+    fieldByLabel  = (GH.ptrField 2)
+instance (GH.HasField "parameters" GH.Slot Node (R.List Node'Parameter)) where
+    fieldByLabel  = (GH.ptrField 5)
+instance (GH.HasField "isGeneric" GH.Slot Node Std_.Bool) where
+    fieldByLabel  = (GH.dataField 32 4 1 0)
+data Node'struct 
+type instance (R.ReprFor Node'struct) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Node'struct) where
+    numStructWords  = 5
+    numStructPtrs  = 6
+instance (C.Allocate Node'struct) where
+    type AllocHint Node'struct = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Node'struct (C.Parsed Node'struct))
+instance (C.AllocateList Node'struct) where
+    type ListAllocHint Node'struct = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Node'struct (C.Parsed Node'struct))
+data instance C.Parsed Node'struct
+    = Node'struct' 
+        {dataWordCount :: (RP.Parsed Std_.Word16)
+        ,pointerCount :: (RP.Parsed Std_.Word16)
+        ,preferredListEncoding :: (RP.Parsed ElementSize)
+        ,isGroup :: (RP.Parsed Std_.Bool)
+        ,discriminantCount :: (RP.Parsed Std_.Word16)
+        ,discriminantOffset :: (RP.Parsed Std_.Word32)
+        ,fields :: (RP.Parsed (R.List Field))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Node'struct))
+deriving instance (Std_.Eq (C.Parsed Node'struct))
+instance (C.Parse Node'struct (C.Parsed Node'struct)) where
+    parse raw_ = (Node'struct' <$> (GH.parseField #dataWordCount raw_)
+                               <*> (GH.parseField #pointerCount raw_)
+                               <*> (GH.parseField #preferredListEncoding raw_)
+                               <*> (GH.parseField #isGroup raw_)
+                               <*> (GH.parseField #discriminantCount raw_)
+                               <*> (GH.parseField #discriminantOffset raw_)
+                               <*> (GH.parseField #fields raw_))
+instance (C.Marshal Node'struct (C.Parsed Node'struct)) where
+    marshalInto raw_ Node'struct'{..} = (do
+        (GH.encodeField #dataWordCount dataWordCount raw_)
+        (GH.encodeField #pointerCount pointerCount raw_)
+        (GH.encodeField #preferredListEncoding preferredListEncoding raw_)
+        (GH.encodeField #isGroup isGroup raw_)
+        (GH.encodeField #discriminantCount discriminantCount raw_)
+        (GH.encodeField #discriminantOffset discriminantOffset raw_)
+        (GH.encodeField #fields fields raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "dataWordCount" GH.Slot Node'struct Std_.Word16) where
+    fieldByLabel  = (GH.dataField 48 1 16 0)
+instance (GH.HasField "pointerCount" GH.Slot Node'struct Std_.Word16) where
+    fieldByLabel  = (GH.dataField 0 3 16 0)
+instance (GH.HasField "preferredListEncoding" GH.Slot Node'struct ElementSize) where
+    fieldByLabel  = (GH.dataField 16 3 16 0)
+instance (GH.HasField "isGroup" GH.Slot Node'struct Std_.Bool) where
+    fieldByLabel  = (GH.dataField 32 3 1 0)
+instance (GH.HasField "discriminantCount" GH.Slot Node'struct Std_.Word16) where
+    fieldByLabel  = (GH.dataField 48 3 16 0)
+instance (GH.HasField "discriminantOffset" GH.Slot Node'struct Std_.Word32) where
+    fieldByLabel  = (GH.dataField 0 4 32 0)
+instance (GH.HasField "fields" GH.Slot Node'struct (R.List Field)) where
+    fieldByLabel  = (GH.ptrField 3)
+data Node'enum 
+type instance (R.ReprFor Node'enum) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Node'enum) where
+    numStructWords  = 5
+    numStructPtrs  = 6
+instance (C.Allocate Node'enum) where
+    type AllocHint Node'enum = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Node'enum (C.Parsed Node'enum))
+instance (C.AllocateList Node'enum) where
+    type ListAllocHint Node'enum = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Node'enum (C.Parsed Node'enum))
+data instance C.Parsed Node'enum
+    = Node'enum' 
+        {enumerants :: (RP.Parsed (R.List Enumerant))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Node'enum))
+deriving instance (Std_.Eq (C.Parsed Node'enum))
+instance (C.Parse Node'enum (C.Parsed Node'enum)) where
+    parse raw_ = (Node'enum' <$> (GH.parseField #enumerants raw_))
+instance (C.Marshal Node'enum (C.Parsed Node'enum)) where
+    marshalInto raw_ Node'enum'{..} = (do
+        (GH.encodeField #enumerants enumerants raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "enumerants" GH.Slot Node'enum (R.List Enumerant)) where
+    fieldByLabel  = (GH.ptrField 3)
+data Node'interface 
+type instance (R.ReprFor Node'interface) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Node'interface) where
+    numStructWords  = 5
+    numStructPtrs  = 6
+instance (C.Allocate Node'interface) where
+    type AllocHint Node'interface = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Node'interface (C.Parsed Node'interface))
+instance (C.AllocateList Node'interface) where
+    type ListAllocHint Node'interface = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Node'interface (C.Parsed Node'interface))
+data instance C.Parsed Node'interface
+    = Node'interface' 
+        {methods :: (RP.Parsed (R.List Method))
+        ,superclasses :: (RP.Parsed (R.List Superclass))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Node'interface))
+deriving instance (Std_.Eq (C.Parsed Node'interface))
+instance (C.Parse Node'interface (C.Parsed Node'interface)) where
+    parse raw_ = (Node'interface' <$> (GH.parseField #methods raw_)
+                                  <*> (GH.parseField #superclasses raw_))
+instance (C.Marshal Node'interface (C.Parsed Node'interface)) where
+    marshalInto raw_ Node'interface'{..} = (do
+        (GH.encodeField #methods methods raw_)
+        (GH.encodeField #superclasses superclasses raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "methods" GH.Slot Node'interface (R.List Method)) where
+    fieldByLabel  = (GH.ptrField 3)
+instance (GH.HasField "superclasses" GH.Slot Node'interface (R.List Superclass)) where
+    fieldByLabel  = (GH.ptrField 4)
+data Node'const 
+type instance (R.ReprFor Node'const) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Node'const) where
+    numStructWords  = 5
+    numStructPtrs  = 6
+instance (C.Allocate Node'const) where
+    type AllocHint Node'const = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Node'const (C.Parsed Node'const))
+instance (C.AllocateList Node'const) where
+    type ListAllocHint Node'const = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Node'const (C.Parsed Node'const))
+data instance C.Parsed Node'const
+    = Node'const' 
+        {type_ :: (RP.Parsed Type)
+        ,value :: (RP.Parsed Value)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Node'const))
+deriving instance (Std_.Eq (C.Parsed Node'const))
+instance (C.Parse Node'const (C.Parsed Node'const)) where
+    parse raw_ = (Node'const' <$> (GH.parseField #type_ raw_)
+                              <*> (GH.parseField #value raw_))
+instance (C.Marshal Node'const (C.Parsed Node'const)) where
+    marshalInto raw_ Node'const'{..} = (do
+        (GH.encodeField #type_ type_ raw_)
+        (GH.encodeField #value value raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "type_" GH.Slot Node'const Type) where
+    fieldByLabel  = (GH.ptrField 3)
+instance (GH.HasField "value" GH.Slot Node'const Value) where
+    fieldByLabel  = (GH.ptrField 4)
+data Node'annotation 
+type instance (R.ReprFor Node'annotation) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Node'annotation) where
+    numStructWords  = 5
+    numStructPtrs  = 6
+instance (C.Allocate Node'annotation) where
+    type AllocHint Node'annotation = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Node'annotation (C.Parsed Node'annotation))
+instance (C.AllocateList Node'annotation) where
+    type ListAllocHint Node'annotation = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Node'annotation (C.Parsed Node'annotation))
+data instance C.Parsed Node'annotation
+    = Node'annotation' 
+        {type_ :: (RP.Parsed Type)
+        ,targetsFile :: (RP.Parsed Std_.Bool)
+        ,targetsConst :: (RP.Parsed Std_.Bool)
+        ,targetsEnum :: (RP.Parsed Std_.Bool)
+        ,targetsEnumerant :: (RP.Parsed Std_.Bool)
+        ,targetsStruct :: (RP.Parsed Std_.Bool)
+        ,targetsField :: (RP.Parsed Std_.Bool)
+        ,targetsUnion :: (RP.Parsed Std_.Bool)
+        ,targetsGroup :: (RP.Parsed Std_.Bool)
+        ,targetsInterface :: (RP.Parsed Std_.Bool)
+        ,targetsMethod :: (RP.Parsed Std_.Bool)
+        ,targetsParam :: (RP.Parsed Std_.Bool)
+        ,targetsAnnotation :: (RP.Parsed Std_.Bool)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Node'annotation))
+deriving instance (Std_.Eq (C.Parsed Node'annotation))
+instance (C.Parse Node'annotation (C.Parsed Node'annotation)) where
+    parse raw_ = (Node'annotation' <$> (GH.parseField #type_ raw_)
+                                   <*> (GH.parseField #targetsFile raw_)
+                                   <*> (GH.parseField #targetsConst raw_)
+                                   <*> (GH.parseField #targetsEnum raw_)
+                                   <*> (GH.parseField #targetsEnumerant raw_)
+                                   <*> (GH.parseField #targetsStruct raw_)
+                                   <*> (GH.parseField #targetsField raw_)
+                                   <*> (GH.parseField #targetsUnion raw_)
+                                   <*> (GH.parseField #targetsGroup raw_)
+                                   <*> (GH.parseField #targetsInterface raw_)
+                                   <*> (GH.parseField #targetsMethod raw_)
+                                   <*> (GH.parseField #targetsParam raw_)
+                                   <*> (GH.parseField #targetsAnnotation raw_))
+instance (C.Marshal Node'annotation (C.Parsed Node'annotation)) where
+    marshalInto raw_ Node'annotation'{..} = (do
+        (GH.encodeField #type_ type_ raw_)
+        (GH.encodeField #targetsFile targetsFile raw_)
+        (GH.encodeField #targetsConst targetsConst raw_)
+        (GH.encodeField #targetsEnum targetsEnum raw_)
+        (GH.encodeField #targetsEnumerant targetsEnumerant raw_)
+        (GH.encodeField #targetsStruct targetsStruct raw_)
+        (GH.encodeField #targetsField targetsField raw_)
+        (GH.encodeField #targetsUnion targetsUnion raw_)
+        (GH.encodeField #targetsGroup targetsGroup raw_)
+        (GH.encodeField #targetsInterface targetsInterface raw_)
+        (GH.encodeField #targetsMethod targetsMethod raw_)
+        (GH.encodeField #targetsParam targetsParam raw_)
+        (GH.encodeField #targetsAnnotation targetsAnnotation raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "type_" GH.Slot Node'annotation Type) where
+    fieldByLabel  = (GH.ptrField 3)
+instance (GH.HasField "targetsFile" GH.Slot Node'annotation Std_.Bool) where
+    fieldByLabel  = (GH.dataField 48 1 1 0)
+instance (GH.HasField "targetsConst" GH.Slot Node'annotation Std_.Bool) where
+    fieldByLabel  = (GH.dataField 49 1 1 0)
+instance (GH.HasField "targetsEnum" GH.Slot Node'annotation Std_.Bool) where
+    fieldByLabel  = (GH.dataField 50 1 1 0)
+instance (GH.HasField "targetsEnumerant" GH.Slot Node'annotation Std_.Bool) where
+    fieldByLabel  = (GH.dataField 51 1 1 0)
+instance (GH.HasField "targetsStruct" GH.Slot Node'annotation Std_.Bool) where
+    fieldByLabel  = (GH.dataField 52 1 1 0)
+instance (GH.HasField "targetsField" GH.Slot Node'annotation Std_.Bool) where
+    fieldByLabel  = (GH.dataField 53 1 1 0)
+instance (GH.HasField "targetsUnion" GH.Slot Node'annotation Std_.Bool) where
+    fieldByLabel  = (GH.dataField 54 1 1 0)
+instance (GH.HasField "targetsGroup" GH.Slot Node'annotation Std_.Bool) where
+    fieldByLabel  = (GH.dataField 55 1 1 0)
+instance (GH.HasField "targetsInterface" GH.Slot Node'annotation Std_.Bool) where
+    fieldByLabel  = (GH.dataField 56 1 1 0)
+instance (GH.HasField "targetsMethod" GH.Slot Node'annotation Std_.Bool) where
+    fieldByLabel  = (GH.dataField 57 1 1 0)
+instance (GH.HasField "targetsParam" GH.Slot Node'annotation Std_.Bool) where
+    fieldByLabel  = (GH.dataField 58 1 1 0)
+instance (GH.HasField "targetsAnnotation" GH.Slot Node'annotation Std_.Bool) where
+    fieldByLabel  = (GH.dataField 59 1 1 0)
+data Node'Parameter 
+type instance (R.ReprFor Node'Parameter) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Node'Parameter) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance (C.Allocate Node'Parameter) where
+    type AllocHint Node'Parameter = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Node'Parameter (C.Parsed Node'Parameter))
+instance (C.AllocateList Node'Parameter) where
+    type ListAllocHint Node'Parameter = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Node'Parameter (C.Parsed Node'Parameter))
+data instance C.Parsed Node'Parameter
+    = Node'Parameter 
+        {name :: (RP.Parsed Basics.Text)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Node'Parameter))
+deriving instance (Std_.Eq (C.Parsed Node'Parameter))
+instance (C.Parse Node'Parameter (C.Parsed Node'Parameter)) where
+    parse raw_ = (Node'Parameter <$> (GH.parseField #name raw_))
+instance (C.Marshal Node'Parameter (C.Parsed Node'Parameter)) where
+    marshalInto raw_ Node'Parameter{..} = (do
+        (GH.encodeField #name name raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "name" GH.Slot Node'Parameter Basics.Text) where
+    fieldByLabel  = (GH.ptrField 0)
+data Node'NestedNode 
+type instance (R.ReprFor Node'NestedNode) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Node'NestedNode) where
+    numStructWords  = 1
+    numStructPtrs  = 1
+instance (C.Allocate Node'NestedNode) where
+    type AllocHint Node'NestedNode = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Node'NestedNode (C.Parsed Node'NestedNode))
+instance (C.AllocateList Node'NestedNode) where
+    type ListAllocHint Node'NestedNode = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Node'NestedNode (C.Parsed Node'NestedNode))
+data instance C.Parsed Node'NestedNode
+    = Node'NestedNode 
+        {name :: (RP.Parsed Basics.Text)
+        ,id :: (RP.Parsed Std_.Word64)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Node'NestedNode))
+deriving instance (Std_.Eq (C.Parsed Node'NestedNode))
+instance (C.Parse Node'NestedNode (C.Parsed Node'NestedNode)) where
+    parse raw_ = (Node'NestedNode <$> (GH.parseField #name raw_)
+                                  <*> (GH.parseField #id raw_))
+instance (C.Marshal Node'NestedNode (C.Parsed Node'NestedNode)) where
+    marshalInto raw_ Node'NestedNode{..} = (do
+        (GH.encodeField #name name raw_)
+        (GH.encodeField #id id raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "name" GH.Slot Node'NestedNode Basics.Text) where
+    fieldByLabel  = (GH.ptrField 0)
+instance (GH.HasField "id" GH.Slot Node'NestedNode Std_.Word64) where
+    fieldByLabel  = (GH.dataField 0 0 64 0)
+data Node'SourceInfo 
+type instance (R.ReprFor Node'SourceInfo) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Node'SourceInfo) where
+    numStructWords  = 1
+    numStructPtrs  = 2
+instance (C.Allocate Node'SourceInfo) where
+    type AllocHint Node'SourceInfo = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Node'SourceInfo (C.Parsed Node'SourceInfo))
+instance (C.AllocateList Node'SourceInfo) where
+    type ListAllocHint Node'SourceInfo = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Node'SourceInfo (C.Parsed Node'SourceInfo))
+data instance C.Parsed Node'SourceInfo
+    = Node'SourceInfo 
+        {id :: (RP.Parsed Std_.Word64)
+        ,docComment :: (RP.Parsed Basics.Text)
+        ,members :: (RP.Parsed (R.List Node'SourceInfo'Member))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Node'SourceInfo))
+deriving instance (Std_.Eq (C.Parsed Node'SourceInfo))
+instance (C.Parse Node'SourceInfo (C.Parsed Node'SourceInfo)) where
+    parse raw_ = (Node'SourceInfo <$> (GH.parseField #id raw_)
+                                  <*> (GH.parseField #docComment raw_)
+                                  <*> (GH.parseField #members raw_))
+instance (C.Marshal Node'SourceInfo (C.Parsed Node'SourceInfo)) where
+    marshalInto raw_ Node'SourceInfo{..} = (do
+        (GH.encodeField #id id raw_)
+        (GH.encodeField #docComment docComment raw_)
+        (GH.encodeField #members members raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "id" GH.Slot Node'SourceInfo Std_.Word64) where
+    fieldByLabel  = (GH.dataField 0 0 64 0)
+instance (GH.HasField "docComment" GH.Slot Node'SourceInfo Basics.Text) where
+    fieldByLabel  = (GH.ptrField 0)
+instance (GH.HasField "members" GH.Slot Node'SourceInfo (R.List Node'SourceInfo'Member)) where
+    fieldByLabel  = (GH.ptrField 1)
+data Node'SourceInfo'Member 
+type instance (R.ReprFor Node'SourceInfo'Member) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Node'SourceInfo'Member) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance (C.Allocate Node'SourceInfo'Member) where
+    type AllocHint Node'SourceInfo'Member = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Node'SourceInfo'Member (C.Parsed Node'SourceInfo'Member))
+instance (C.AllocateList Node'SourceInfo'Member) where
+    type ListAllocHint Node'SourceInfo'Member = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Node'SourceInfo'Member (C.Parsed Node'SourceInfo'Member))
+data instance C.Parsed Node'SourceInfo'Member
+    = Node'SourceInfo'Member 
+        {docComment :: (RP.Parsed Basics.Text)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Node'SourceInfo'Member))
+deriving instance (Std_.Eq (C.Parsed Node'SourceInfo'Member))
+instance (C.Parse Node'SourceInfo'Member (C.Parsed Node'SourceInfo'Member)) where
+    parse raw_ = (Node'SourceInfo'Member <$> (GH.parseField #docComment raw_))
+instance (C.Marshal Node'SourceInfo'Member (C.Parsed Node'SourceInfo'Member)) where
+    marshalInto raw_ Node'SourceInfo'Member{..} = (do
+        (GH.encodeField #docComment docComment raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "docComment" GH.Slot Node'SourceInfo'Member Basics.Text) where
+    fieldByLabel  = (GH.ptrField 0)
+data Field 
+type instance (R.ReprFor Field) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Field) where
+    numStructWords  = 3
+    numStructPtrs  = 4
+instance (C.Allocate Field) where
+    type AllocHint Field = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Field (C.Parsed Field))
+instance (C.AllocateList Field) where
+    type ListAllocHint Field = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Field (C.Parsed Field))
+data instance C.Parsed Field
+    = Field 
+        {name :: (RP.Parsed Basics.Text)
+        ,codeOrder :: (RP.Parsed Std_.Word16)
+        ,annotations :: (RP.Parsed (R.List Annotation))
+        ,discriminantValue :: (RP.Parsed Std_.Word16)
+        ,ordinal :: (RP.Parsed Field'ordinal)
+        ,union' :: (C.Parsed (GH.Which Field))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Field))
+deriving instance (Std_.Eq (C.Parsed Field))
+instance (C.Parse Field (C.Parsed Field)) where
+    parse raw_ = (Field <$> (GH.parseField #name raw_)
+                        <*> (GH.parseField #codeOrder raw_)
+                        <*> (GH.parseField #annotations raw_)
+                        <*> (GH.parseField #discriminantValue raw_)
+                        <*> (GH.parseField #ordinal raw_)
+                        <*> (C.parse (GH.structUnion raw_)))
+instance (C.Marshal Field (C.Parsed Field)) where
+    marshalInto raw_ Field{..} = (do
+        (GH.encodeField #name name raw_)
+        (GH.encodeField #codeOrder codeOrder raw_)
+        (GH.encodeField #annotations annotations raw_)
+        (GH.encodeField #discriminantValue discriminantValue raw_)
+        (do
+            group_ <- (GH.readField #ordinal raw_)
+            (C.marshalInto group_ ordinal)
+            )
+        (C.marshalInto (GH.structUnion raw_) union')
+        )
+instance (GH.HasUnion Field) where
+    unionField  = (GH.dataField 0 1 16 0)
+    data RawWhich mut_ Field
+        = RW_Field'slot (R.Raw mut_ Field'slot)
+        | RW_Field'group (R.Raw mut_ Field'group)
+        | RW_Field'unknown' Std_.Word16
+    internalWhich tag_ struct_ = case tag_ of
+        0 ->
+            (RW_Field'slot <$> (GH.readVariant #slot struct_))
+        1 ->
+            (RW_Field'group <$> (GH.readVariant #group struct_))
+        _ ->
+            (Std_.pure (RW_Field'unknown' tag_))
+    data Which Field
+instance (GH.HasVariant "slot" GH.Group Field Field'slot) where
+    variantByLabel  = (GH.Variant GH.groupField 0)
+instance (GH.HasVariant "group" GH.Group Field Field'group) where
+    variantByLabel  = (GH.Variant GH.groupField 1)
+data instance C.Parsed (GH.Which Field)
+    = Field'slot (RP.Parsed Field'slot)
+    | Field'group (RP.Parsed Field'group)
+    | Field'unknown' Std_.Word16
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed (GH.Which Field)))
+deriving instance (Std_.Eq (C.Parsed (GH.Which Field)))
+instance (C.Parse (GH.Which Field) (C.Parsed (GH.Which Field))) where
+    parse raw_ = (do
+        rawWhich_ <- (GH.unionWhich raw_)
+        case rawWhich_ of
+            (RW_Field'slot rawArg_) ->
+                (Field'slot <$> (C.parse rawArg_))
+            (RW_Field'group rawArg_) ->
+                (Field'group <$> (C.parse rawArg_))
+            (RW_Field'unknown' tag_) ->
+                (Std_.pure (Field'unknown' tag_))
+        )
+instance (C.Marshal (GH.Which Field) (C.Parsed (GH.Which Field))) where
+    marshalInto raw_ parsed_ = case parsed_ of
+        (Field'slot arg_) ->
+            (do
+                rawGroup_ <- (GH.initVariant #slot (GH.unionStruct raw_))
+                (C.marshalInto rawGroup_ arg_)
+                )
+        (Field'group arg_) ->
+            (do
+                rawGroup_ <- (GH.initVariant #group (GH.unionStruct raw_))
+                (C.marshalInto rawGroup_ arg_)
+                )
+        (Field'unknown' tag_) ->
+            (GH.encodeField GH.unionField tag_ (GH.unionStruct raw_))
+instance (GH.HasField "name" GH.Slot Field Basics.Text) where
+    fieldByLabel  = (GH.ptrField 0)
+instance (GH.HasField "codeOrder" GH.Slot Field Std_.Word16) where
+    fieldByLabel  = (GH.dataField 0 0 16 0)
+instance (GH.HasField "annotations" GH.Slot Field (R.List Annotation)) where
+    fieldByLabel  = (GH.ptrField 1)
+instance (GH.HasField "discriminantValue" GH.Slot Field Std_.Word16) where
+    fieldByLabel  = (GH.dataField 16 0 16 65535)
+instance (GH.HasField "ordinal" GH.Group Field Field'ordinal) where
+    fieldByLabel  = GH.groupField
+data Field'slot 
+type instance (R.ReprFor Field'slot) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Field'slot) where
+    numStructWords  = 3
+    numStructPtrs  = 4
+instance (C.Allocate Field'slot) where
+    type AllocHint Field'slot = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Field'slot (C.Parsed Field'slot))
+instance (C.AllocateList Field'slot) where
+    type ListAllocHint Field'slot = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Field'slot (C.Parsed Field'slot))
+data instance C.Parsed Field'slot
+    = Field'slot' 
+        {offset :: (RP.Parsed Std_.Word32)
+        ,type_ :: (RP.Parsed Type)
+        ,defaultValue :: (RP.Parsed Value)
+        ,hadExplicitDefault :: (RP.Parsed Std_.Bool)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Field'slot))
+deriving instance (Std_.Eq (C.Parsed Field'slot))
+instance (C.Parse Field'slot (C.Parsed Field'slot)) where
+    parse raw_ = (Field'slot' <$> (GH.parseField #offset raw_)
+                              <*> (GH.parseField #type_ raw_)
+                              <*> (GH.parseField #defaultValue raw_)
+                              <*> (GH.parseField #hadExplicitDefault raw_))
+instance (C.Marshal Field'slot (C.Parsed Field'slot)) where
+    marshalInto raw_ Field'slot'{..} = (do
+        (GH.encodeField #offset offset raw_)
+        (GH.encodeField #type_ type_ raw_)
+        (GH.encodeField #defaultValue defaultValue raw_)
+        (GH.encodeField #hadExplicitDefault hadExplicitDefault raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "offset" GH.Slot Field'slot Std_.Word32) where
+    fieldByLabel  = (GH.dataField 32 0 32 0)
+instance (GH.HasField "type_" GH.Slot Field'slot Type) where
+    fieldByLabel  = (GH.ptrField 2)
+instance (GH.HasField "defaultValue" GH.Slot Field'slot Value) where
+    fieldByLabel  = (GH.ptrField 3)
+instance (GH.HasField "hadExplicitDefault" GH.Slot Field'slot Std_.Bool) where
+    fieldByLabel  = (GH.dataField 0 2 1 0)
+data Field'group 
+type instance (R.ReprFor Field'group) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Field'group) where
+    numStructWords  = 3
+    numStructPtrs  = 4
+instance (C.Allocate Field'group) where
+    type AllocHint Field'group = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Field'group (C.Parsed Field'group))
+instance (C.AllocateList Field'group) where
+    type ListAllocHint Field'group = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Field'group (C.Parsed Field'group))
+data instance C.Parsed Field'group
+    = Field'group' 
+        {typeId :: (RP.Parsed Std_.Word64)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Field'group))
+deriving instance (Std_.Eq (C.Parsed Field'group))
+instance (C.Parse Field'group (C.Parsed Field'group)) where
+    parse raw_ = (Field'group' <$> (GH.parseField #typeId raw_))
+instance (C.Marshal Field'group (C.Parsed Field'group)) where
+    marshalInto raw_ Field'group'{..} = (do
+        (GH.encodeField #typeId typeId raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "typeId" GH.Slot Field'group Std_.Word64) where
+    fieldByLabel  = (GH.dataField 0 2 64 0)
+data Field'ordinal 
+type instance (R.ReprFor Field'ordinal) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Field'ordinal) where
+    numStructWords  = 3
+    numStructPtrs  = 4
+instance (C.Allocate Field'ordinal) where
+    type AllocHint Field'ordinal = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Field'ordinal (C.Parsed Field'ordinal))
+instance (C.AllocateList Field'ordinal) where
+    type ListAllocHint Field'ordinal = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Field'ordinal (C.Parsed Field'ordinal))
+data instance C.Parsed Field'ordinal
+    = Field'ordinal' 
+        {union' :: (C.Parsed (GH.Which Field'ordinal))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Field'ordinal))
+deriving instance (Std_.Eq (C.Parsed Field'ordinal))
+instance (C.Parse Field'ordinal (C.Parsed Field'ordinal)) where
+    parse raw_ = (Field'ordinal' <$> (C.parse (GH.structUnion raw_)))
+instance (C.Marshal Field'ordinal (C.Parsed Field'ordinal)) where
+    marshalInto raw_ Field'ordinal'{..} = (do
+        (C.marshalInto (GH.structUnion raw_) union')
+        )
+instance (GH.HasUnion Field'ordinal) where
+    unionField  = (GH.dataField 16 1 16 0)
+    data RawWhich mut_ Field'ordinal
+        = RW_Field'ordinal'implicit (R.Raw mut_ ())
+        | RW_Field'ordinal'explicit (R.Raw mut_ Std_.Word16)
+        | RW_Field'ordinal'unknown' Std_.Word16
+    internalWhich tag_ struct_ = case tag_ of
+        0 ->
+            (RW_Field'ordinal'implicit <$> (GH.readVariant #implicit struct_))
+        1 ->
+            (RW_Field'ordinal'explicit <$> (GH.readVariant #explicit struct_))
+        _ ->
+            (Std_.pure (RW_Field'ordinal'unknown' tag_))
+    data Which Field'ordinal
+instance (GH.HasVariant "implicit" GH.Slot Field'ordinal ()) where
+    variantByLabel  = (GH.Variant GH.voidField 0)
+instance (GH.HasVariant "explicit" GH.Slot Field'ordinal Std_.Word16) where
+    variantByLabel  = (GH.Variant (GH.dataField 32 1 16 0) 1)
+data instance C.Parsed (GH.Which Field'ordinal)
+    = Field'ordinal'implicit 
+    | Field'ordinal'explicit (RP.Parsed Std_.Word16)
+    | Field'ordinal'unknown' Std_.Word16
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed (GH.Which Field'ordinal)))
+deriving instance (Std_.Eq (C.Parsed (GH.Which Field'ordinal)))
+instance (C.Parse (GH.Which Field'ordinal) (C.Parsed (GH.Which Field'ordinal))) where
+    parse raw_ = (do
+        rawWhich_ <- (GH.unionWhich raw_)
+        case rawWhich_ of
+            (RW_Field'ordinal'implicit _) ->
+                (Std_.pure Field'ordinal'implicit)
+            (RW_Field'ordinal'explicit rawArg_) ->
+                (Field'ordinal'explicit <$> (C.parse rawArg_))
+            (RW_Field'ordinal'unknown' tag_) ->
+                (Std_.pure (Field'ordinal'unknown' tag_))
+        )
+instance (C.Marshal (GH.Which Field'ordinal) (C.Parsed (GH.Which Field'ordinal))) where
+    marshalInto raw_ parsed_ = case parsed_ of
+        (Field'ordinal'implicit) ->
+            (GH.encodeVariant #implicit () (GH.unionStruct raw_))
+        (Field'ordinal'explicit arg_) ->
+            (GH.encodeVariant #explicit arg_ (GH.unionStruct raw_))
+        (Field'ordinal'unknown' tag_) ->
+            (GH.encodeField GH.unionField tag_ (GH.unionStruct raw_))
+field'noDiscriminant :: Std_.Word16
+field'noDiscriminant  = (C.fromWord 65535)
+data Enumerant 
+type instance (R.ReprFor Enumerant) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Enumerant) where
+    numStructWords  = 1
+    numStructPtrs  = 2
+instance (C.Allocate Enumerant) where
+    type AllocHint Enumerant = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Enumerant (C.Parsed Enumerant))
+instance (C.AllocateList Enumerant) where
+    type ListAllocHint Enumerant = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Enumerant (C.Parsed Enumerant))
+data instance C.Parsed Enumerant
+    = Enumerant 
+        {name :: (RP.Parsed Basics.Text)
+        ,codeOrder :: (RP.Parsed Std_.Word16)
+        ,annotations :: (RP.Parsed (R.List Annotation))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Enumerant))
+deriving instance (Std_.Eq (C.Parsed Enumerant))
+instance (C.Parse Enumerant (C.Parsed Enumerant)) where
+    parse raw_ = (Enumerant <$> (GH.parseField #name raw_)
+                            <*> (GH.parseField #codeOrder raw_)
+                            <*> (GH.parseField #annotations raw_))
+instance (C.Marshal Enumerant (C.Parsed Enumerant)) where
+    marshalInto raw_ Enumerant{..} = (do
+        (GH.encodeField #name name raw_)
+        (GH.encodeField #codeOrder codeOrder raw_)
+        (GH.encodeField #annotations annotations raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "name" GH.Slot Enumerant Basics.Text) where
+    fieldByLabel  = (GH.ptrField 0)
+instance (GH.HasField "codeOrder" GH.Slot Enumerant Std_.Word16) where
+    fieldByLabel  = (GH.dataField 0 0 16 0)
+instance (GH.HasField "annotations" GH.Slot Enumerant (R.List Annotation)) where
+    fieldByLabel  = (GH.ptrField 1)
+data Superclass 
+type instance (R.ReprFor Superclass) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Superclass) where
+    numStructWords  = 1
+    numStructPtrs  = 1
+instance (C.Allocate Superclass) where
+    type AllocHint Superclass = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Superclass (C.Parsed Superclass))
+instance (C.AllocateList Superclass) where
+    type ListAllocHint Superclass = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Superclass (C.Parsed Superclass))
+data instance C.Parsed Superclass
+    = Superclass 
+        {id :: (RP.Parsed Std_.Word64)
+        ,brand :: (RP.Parsed Brand)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Superclass))
+deriving instance (Std_.Eq (C.Parsed Superclass))
+instance (C.Parse Superclass (C.Parsed Superclass)) where
+    parse raw_ = (Superclass <$> (GH.parseField #id raw_)
+                             <*> (GH.parseField #brand raw_))
+instance (C.Marshal Superclass (C.Parsed Superclass)) where
+    marshalInto raw_ Superclass{..} = (do
+        (GH.encodeField #id id raw_)
+        (GH.encodeField #brand brand raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "id" GH.Slot Superclass Std_.Word64) where
+    fieldByLabel  = (GH.dataField 0 0 64 0)
+instance (GH.HasField "brand" GH.Slot Superclass Brand) where
+    fieldByLabel  = (GH.ptrField 0)
+data Method 
+type instance (R.ReprFor Method) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Method) where
+    numStructWords  = 3
+    numStructPtrs  = 5
+instance (C.Allocate Method) where
+    type AllocHint Method = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Method (C.Parsed Method))
+instance (C.AllocateList Method) where
+    type ListAllocHint Method = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Method (C.Parsed Method))
+data instance C.Parsed Method
+    = Method 
+        {name :: (RP.Parsed Basics.Text)
+        ,codeOrder :: (RP.Parsed Std_.Word16)
+        ,paramStructType :: (RP.Parsed Std_.Word64)
+        ,resultStructType :: (RP.Parsed Std_.Word64)
+        ,annotations :: (RP.Parsed (R.List Annotation))
+        ,paramBrand :: (RP.Parsed Brand)
+        ,resultBrand :: (RP.Parsed Brand)
+        ,implicitParameters :: (RP.Parsed (R.List Node'Parameter))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Method))
+deriving instance (Std_.Eq (C.Parsed Method))
+instance (C.Parse Method (C.Parsed Method)) where
+    parse raw_ = (Method <$> (GH.parseField #name raw_)
+                         <*> (GH.parseField #codeOrder raw_)
+                         <*> (GH.parseField #paramStructType raw_)
+                         <*> (GH.parseField #resultStructType raw_)
+                         <*> (GH.parseField #annotations raw_)
+                         <*> (GH.parseField #paramBrand raw_)
+                         <*> (GH.parseField #resultBrand raw_)
+                         <*> (GH.parseField #implicitParameters raw_))
+instance (C.Marshal Method (C.Parsed Method)) where
+    marshalInto raw_ Method{..} = (do
+        (GH.encodeField #name name raw_)
+        (GH.encodeField #codeOrder codeOrder raw_)
+        (GH.encodeField #paramStructType paramStructType raw_)
+        (GH.encodeField #resultStructType resultStructType raw_)
+        (GH.encodeField #annotations annotations raw_)
+        (GH.encodeField #paramBrand paramBrand raw_)
+        (GH.encodeField #resultBrand resultBrand raw_)
+        (GH.encodeField #implicitParameters implicitParameters raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "name" GH.Slot Method Basics.Text) where
+    fieldByLabel  = (GH.ptrField 0)
+instance (GH.HasField "codeOrder" GH.Slot Method Std_.Word16) where
+    fieldByLabel  = (GH.dataField 0 0 16 0)
+instance (GH.HasField "paramStructType" GH.Slot Method Std_.Word64) where
+    fieldByLabel  = (GH.dataField 0 1 64 0)
+instance (GH.HasField "resultStructType" GH.Slot Method Std_.Word64) where
+    fieldByLabel  = (GH.dataField 0 2 64 0)
+instance (GH.HasField "annotations" GH.Slot Method (R.List Annotation)) where
+    fieldByLabel  = (GH.ptrField 1)
+instance (GH.HasField "paramBrand" GH.Slot Method Brand) where
+    fieldByLabel  = (GH.ptrField 2)
+instance (GH.HasField "resultBrand" GH.Slot Method Brand) where
+    fieldByLabel  = (GH.ptrField 3)
+instance (GH.HasField "implicitParameters" GH.Slot Method (R.List Node'Parameter)) where
+    fieldByLabel  = (GH.ptrField 4)
+data Type 
+type instance (R.ReprFor Type) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Type) where
+    numStructWords  = 3
+    numStructPtrs  = 1
+instance (C.Allocate Type) where
+    type AllocHint Type = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Type (C.Parsed Type))
+instance (C.AllocateList Type) where
+    type ListAllocHint Type = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Type (C.Parsed Type))
+data instance C.Parsed Type
+    = Type 
+        {union' :: (C.Parsed (GH.Which Type))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Type))
+deriving instance (Std_.Eq (C.Parsed Type))
+instance (C.Parse Type (C.Parsed Type)) where
+    parse raw_ = (Type <$> (C.parse (GH.structUnion raw_)))
+instance (C.Marshal Type (C.Parsed Type)) where
+    marshalInto raw_ Type{..} = (do
+        (C.marshalInto (GH.structUnion raw_) union')
+        )
+instance (GH.HasUnion Type) where
+    unionField  = (GH.dataField 0 0 16 0)
+    data RawWhich mut_ Type
+        = RW_Type'void (R.Raw mut_ ())
+        | RW_Type'bool (R.Raw mut_ ())
+        | RW_Type'int8 (R.Raw mut_ ())
+        | RW_Type'int16 (R.Raw mut_ ())
+        | RW_Type'int32 (R.Raw mut_ ())
+        | RW_Type'int64 (R.Raw mut_ ())
+        | RW_Type'uint8 (R.Raw mut_ ())
+        | RW_Type'uint16 (R.Raw mut_ ())
+        | RW_Type'uint32 (R.Raw mut_ ())
+        | RW_Type'uint64 (R.Raw mut_ ())
+        | RW_Type'float32 (R.Raw mut_ ())
+        | RW_Type'float64 (R.Raw mut_ ())
+        | RW_Type'text (R.Raw mut_ ())
+        | RW_Type'data_ (R.Raw mut_ ())
+        | RW_Type'list (R.Raw mut_ Type'list)
+        | RW_Type'enum (R.Raw mut_ Type'enum)
+        | RW_Type'struct (R.Raw mut_ Type'struct)
+        | RW_Type'interface (R.Raw mut_ Type'interface)
+        | RW_Type'anyPointer (R.Raw mut_ Type'anyPointer)
+        | RW_Type'unknown' Std_.Word16
+    internalWhich tag_ struct_ = case tag_ of
+        0 ->
+            (RW_Type'void <$> (GH.readVariant #void struct_))
+        1 ->
+            (RW_Type'bool <$> (GH.readVariant #bool struct_))
+        2 ->
+            (RW_Type'int8 <$> (GH.readVariant #int8 struct_))
+        3 ->
+            (RW_Type'int16 <$> (GH.readVariant #int16 struct_))
+        4 ->
+            (RW_Type'int32 <$> (GH.readVariant #int32 struct_))
+        5 ->
+            (RW_Type'int64 <$> (GH.readVariant #int64 struct_))
+        6 ->
+            (RW_Type'uint8 <$> (GH.readVariant #uint8 struct_))
+        7 ->
+            (RW_Type'uint16 <$> (GH.readVariant #uint16 struct_))
+        8 ->
+            (RW_Type'uint32 <$> (GH.readVariant #uint32 struct_))
+        9 ->
+            (RW_Type'uint64 <$> (GH.readVariant #uint64 struct_))
+        10 ->
+            (RW_Type'float32 <$> (GH.readVariant #float32 struct_))
+        11 ->
+            (RW_Type'float64 <$> (GH.readVariant #float64 struct_))
+        12 ->
+            (RW_Type'text <$> (GH.readVariant #text struct_))
+        13 ->
+            (RW_Type'data_ <$> (GH.readVariant #data_ struct_))
+        14 ->
+            (RW_Type'list <$> (GH.readVariant #list struct_))
+        15 ->
+            (RW_Type'enum <$> (GH.readVariant #enum struct_))
+        16 ->
+            (RW_Type'struct <$> (GH.readVariant #struct struct_))
+        17 ->
+            (RW_Type'interface <$> (GH.readVariant #interface struct_))
+        18 ->
+            (RW_Type'anyPointer <$> (GH.readVariant #anyPointer struct_))
+        _ ->
+            (Std_.pure (RW_Type'unknown' tag_))
+    data Which Type
+instance (GH.HasVariant "void" GH.Slot Type ()) where
+    variantByLabel  = (GH.Variant GH.voidField 0)
+instance (GH.HasVariant "bool" GH.Slot Type ()) where
+    variantByLabel  = (GH.Variant GH.voidField 1)
+instance (GH.HasVariant "int8" GH.Slot Type ()) where
+    variantByLabel  = (GH.Variant GH.voidField 2)
+instance (GH.HasVariant "int16" GH.Slot Type ()) where
+    variantByLabel  = (GH.Variant GH.voidField 3)
+instance (GH.HasVariant "int32" GH.Slot Type ()) where
+    variantByLabel  = (GH.Variant GH.voidField 4)
+instance (GH.HasVariant "int64" GH.Slot Type ()) where
+    variantByLabel  = (GH.Variant GH.voidField 5)
+instance (GH.HasVariant "uint8" GH.Slot Type ()) where
+    variantByLabel  = (GH.Variant GH.voidField 6)
+instance (GH.HasVariant "uint16" GH.Slot Type ()) where
+    variantByLabel  = (GH.Variant GH.voidField 7)
+instance (GH.HasVariant "uint32" GH.Slot Type ()) where
+    variantByLabel  = (GH.Variant GH.voidField 8)
+instance (GH.HasVariant "uint64" GH.Slot Type ()) where
+    variantByLabel  = (GH.Variant GH.voidField 9)
+instance (GH.HasVariant "float32" GH.Slot Type ()) where
+    variantByLabel  = (GH.Variant GH.voidField 10)
+instance (GH.HasVariant "float64" GH.Slot Type ()) where
+    variantByLabel  = (GH.Variant GH.voidField 11)
+instance (GH.HasVariant "text" GH.Slot Type ()) where
+    variantByLabel  = (GH.Variant GH.voidField 12)
+instance (GH.HasVariant "data_" GH.Slot Type ()) where
+    variantByLabel  = (GH.Variant GH.voidField 13)
+instance (GH.HasVariant "list" GH.Group Type Type'list) where
+    variantByLabel  = (GH.Variant GH.groupField 14)
+instance (GH.HasVariant "enum" GH.Group Type Type'enum) where
+    variantByLabel  = (GH.Variant GH.groupField 15)
+instance (GH.HasVariant "struct" GH.Group Type Type'struct) where
+    variantByLabel  = (GH.Variant GH.groupField 16)
+instance (GH.HasVariant "interface" GH.Group Type Type'interface) where
+    variantByLabel  = (GH.Variant GH.groupField 17)
+instance (GH.HasVariant "anyPointer" GH.Group Type Type'anyPointer) where
+    variantByLabel  = (GH.Variant GH.groupField 18)
+data instance C.Parsed (GH.Which Type)
+    = Type'void 
+    | Type'bool 
+    | Type'int8 
+    | Type'int16 
+    | Type'int32 
+    | Type'int64 
+    | Type'uint8 
+    | Type'uint16 
+    | Type'uint32 
+    | Type'uint64 
+    | Type'float32 
+    | Type'float64 
+    | Type'text 
+    | Type'data_ 
+    | Type'list (RP.Parsed Type'list)
+    | Type'enum (RP.Parsed Type'enum)
+    | Type'struct (RP.Parsed Type'struct)
+    | Type'interface (RP.Parsed Type'interface)
+    | Type'anyPointer (RP.Parsed Type'anyPointer)
+    | Type'unknown' Std_.Word16
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed (GH.Which Type)))
+deriving instance (Std_.Eq (C.Parsed (GH.Which Type)))
+instance (C.Parse (GH.Which Type) (C.Parsed (GH.Which Type))) where
+    parse raw_ = (do
+        rawWhich_ <- (GH.unionWhich raw_)
+        case rawWhich_ of
+            (RW_Type'void _) ->
+                (Std_.pure Type'void)
+            (RW_Type'bool _) ->
+                (Std_.pure Type'bool)
+            (RW_Type'int8 _) ->
+                (Std_.pure Type'int8)
+            (RW_Type'int16 _) ->
+                (Std_.pure Type'int16)
+            (RW_Type'int32 _) ->
+                (Std_.pure Type'int32)
+            (RW_Type'int64 _) ->
+                (Std_.pure Type'int64)
+            (RW_Type'uint8 _) ->
+                (Std_.pure Type'uint8)
+            (RW_Type'uint16 _) ->
+                (Std_.pure Type'uint16)
+            (RW_Type'uint32 _) ->
+                (Std_.pure Type'uint32)
+            (RW_Type'uint64 _) ->
+                (Std_.pure Type'uint64)
+            (RW_Type'float32 _) ->
+                (Std_.pure Type'float32)
+            (RW_Type'float64 _) ->
+                (Std_.pure Type'float64)
+            (RW_Type'text _) ->
+                (Std_.pure Type'text)
+            (RW_Type'data_ _) ->
+                (Std_.pure Type'data_)
+            (RW_Type'list rawArg_) ->
+                (Type'list <$> (C.parse rawArg_))
+            (RW_Type'enum rawArg_) ->
+                (Type'enum <$> (C.parse rawArg_))
+            (RW_Type'struct rawArg_) ->
+                (Type'struct <$> (C.parse rawArg_))
+            (RW_Type'interface rawArg_) ->
+                (Type'interface <$> (C.parse rawArg_))
+            (RW_Type'anyPointer rawArg_) ->
+                (Type'anyPointer <$> (C.parse rawArg_))
+            (RW_Type'unknown' tag_) ->
+                (Std_.pure (Type'unknown' tag_))
+        )
+instance (C.Marshal (GH.Which Type) (C.Parsed (GH.Which Type))) where
+    marshalInto raw_ parsed_ = case parsed_ of
+        (Type'void) ->
+            (GH.encodeVariant #void () (GH.unionStruct raw_))
+        (Type'bool) ->
+            (GH.encodeVariant #bool () (GH.unionStruct raw_))
+        (Type'int8) ->
+            (GH.encodeVariant #int8 () (GH.unionStruct raw_))
+        (Type'int16) ->
+            (GH.encodeVariant #int16 () (GH.unionStruct raw_))
+        (Type'int32) ->
+            (GH.encodeVariant #int32 () (GH.unionStruct raw_))
+        (Type'int64) ->
+            (GH.encodeVariant #int64 () (GH.unionStruct raw_))
+        (Type'uint8) ->
+            (GH.encodeVariant #uint8 () (GH.unionStruct raw_))
+        (Type'uint16) ->
+            (GH.encodeVariant #uint16 () (GH.unionStruct raw_))
+        (Type'uint32) ->
+            (GH.encodeVariant #uint32 () (GH.unionStruct raw_))
+        (Type'uint64) ->
+            (GH.encodeVariant #uint64 () (GH.unionStruct raw_))
+        (Type'float32) ->
+            (GH.encodeVariant #float32 () (GH.unionStruct raw_))
+        (Type'float64) ->
+            (GH.encodeVariant #float64 () (GH.unionStruct raw_))
+        (Type'text) ->
+            (GH.encodeVariant #text () (GH.unionStruct raw_))
+        (Type'data_) ->
+            (GH.encodeVariant #data_ () (GH.unionStruct raw_))
+        (Type'list arg_) ->
+            (do
+                rawGroup_ <- (GH.initVariant #list (GH.unionStruct raw_))
+                (C.marshalInto rawGroup_ arg_)
+                )
+        (Type'enum arg_) ->
+            (do
+                rawGroup_ <- (GH.initVariant #enum (GH.unionStruct raw_))
+                (C.marshalInto rawGroup_ arg_)
+                )
+        (Type'struct arg_) ->
+            (do
+                rawGroup_ <- (GH.initVariant #struct (GH.unionStruct raw_))
+                (C.marshalInto rawGroup_ arg_)
+                )
+        (Type'interface arg_) ->
+            (do
+                rawGroup_ <- (GH.initVariant #interface (GH.unionStruct raw_))
+                (C.marshalInto rawGroup_ arg_)
+                )
+        (Type'anyPointer arg_) ->
+            (do
+                rawGroup_ <- (GH.initVariant #anyPointer (GH.unionStruct raw_))
+                (C.marshalInto rawGroup_ arg_)
+                )
+        (Type'unknown' tag_) ->
+            (GH.encodeField GH.unionField tag_ (GH.unionStruct raw_))
+data Type'list 
+type instance (R.ReprFor Type'list) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Type'list) where
+    numStructWords  = 3
+    numStructPtrs  = 1
+instance (C.Allocate Type'list) where
+    type AllocHint Type'list = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Type'list (C.Parsed Type'list))
+instance (C.AllocateList Type'list) where
+    type ListAllocHint Type'list = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Type'list (C.Parsed Type'list))
+data instance C.Parsed Type'list
+    = Type'list' 
+        {elementType :: (RP.Parsed Type)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Type'list))
+deriving instance (Std_.Eq (C.Parsed Type'list))
+instance (C.Parse Type'list (C.Parsed Type'list)) where
+    parse raw_ = (Type'list' <$> (GH.parseField #elementType raw_))
+instance (C.Marshal Type'list (C.Parsed Type'list)) where
+    marshalInto raw_ Type'list'{..} = (do
+        (GH.encodeField #elementType elementType raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "elementType" GH.Slot Type'list Type) where
+    fieldByLabel  = (GH.ptrField 0)
+data Type'enum 
+type instance (R.ReprFor Type'enum) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Type'enum) where
+    numStructWords  = 3
+    numStructPtrs  = 1
+instance (C.Allocate Type'enum) where
+    type AllocHint Type'enum = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Type'enum (C.Parsed Type'enum))
+instance (C.AllocateList Type'enum) where
+    type ListAllocHint Type'enum = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Type'enum (C.Parsed Type'enum))
+data instance C.Parsed Type'enum
+    = Type'enum' 
+        {typeId :: (RP.Parsed Std_.Word64)
+        ,brand :: (RP.Parsed Brand)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Type'enum))
+deriving instance (Std_.Eq (C.Parsed Type'enum))
+instance (C.Parse Type'enum (C.Parsed Type'enum)) where
+    parse raw_ = (Type'enum' <$> (GH.parseField #typeId raw_)
+                             <*> (GH.parseField #brand raw_))
+instance (C.Marshal Type'enum (C.Parsed Type'enum)) where
+    marshalInto raw_ Type'enum'{..} = (do
+        (GH.encodeField #typeId typeId raw_)
+        (GH.encodeField #brand brand raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "typeId" GH.Slot Type'enum Std_.Word64) where
+    fieldByLabel  = (GH.dataField 0 1 64 0)
+instance (GH.HasField "brand" GH.Slot Type'enum Brand) where
+    fieldByLabel  = (GH.ptrField 0)
+data Type'struct 
+type instance (R.ReprFor Type'struct) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Type'struct) where
+    numStructWords  = 3
+    numStructPtrs  = 1
+instance (C.Allocate Type'struct) where
+    type AllocHint Type'struct = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Type'struct (C.Parsed Type'struct))
+instance (C.AllocateList Type'struct) where
+    type ListAllocHint Type'struct = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Type'struct (C.Parsed Type'struct))
+data instance C.Parsed Type'struct
+    = Type'struct' 
+        {typeId :: (RP.Parsed Std_.Word64)
+        ,brand :: (RP.Parsed Brand)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Type'struct))
+deriving instance (Std_.Eq (C.Parsed Type'struct))
+instance (C.Parse Type'struct (C.Parsed Type'struct)) where
+    parse raw_ = (Type'struct' <$> (GH.parseField #typeId raw_)
+                               <*> (GH.parseField #brand raw_))
+instance (C.Marshal Type'struct (C.Parsed Type'struct)) where
+    marshalInto raw_ Type'struct'{..} = (do
+        (GH.encodeField #typeId typeId raw_)
+        (GH.encodeField #brand brand raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "typeId" GH.Slot Type'struct Std_.Word64) where
+    fieldByLabel  = (GH.dataField 0 1 64 0)
+instance (GH.HasField "brand" GH.Slot Type'struct Brand) where
+    fieldByLabel  = (GH.ptrField 0)
+data Type'interface 
+type instance (R.ReprFor Type'interface) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Type'interface) where
+    numStructWords  = 3
+    numStructPtrs  = 1
+instance (C.Allocate Type'interface) where
+    type AllocHint Type'interface = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Type'interface (C.Parsed Type'interface))
+instance (C.AllocateList Type'interface) where
+    type ListAllocHint Type'interface = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Type'interface (C.Parsed Type'interface))
+data instance C.Parsed Type'interface
+    = Type'interface' 
+        {typeId :: (RP.Parsed Std_.Word64)
+        ,brand :: (RP.Parsed Brand)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Type'interface))
+deriving instance (Std_.Eq (C.Parsed Type'interface))
+instance (C.Parse Type'interface (C.Parsed Type'interface)) where
+    parse raw_ = (Type'interface' <$> (GH.parseField #typeId raw_)
+                                  <*> (GH.parseField #brand raw_))
+instance (C.Marshal Type'interface (C.Parsed Type'interface)) where
+    marshalInto raw_ Type'interface'{..} = (do
+        (GH.encodeField #typeId typeId raw_)
+        (GH.encodeField #brand brand raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "typeId" GH.Slot Type'interface Std_.Word64) where
+    fieldByLabel  = (GH.dataField 0 1 64 0)
+instance (GH.HasField "brand" GH.Slot Type'interface Brand) where
+    fieldByLabel  = (GH.ptrField 0)
+data Type'anyPointer 
+type instance (R.ReprFor Type'anyPointer) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Type'anyPointer) where
+    numStructWords  = 3
+    numStructPtrs  = 1
+instance (C.Allocate Type'anyPointer) where
+    type AllocHint Type'anyPointer = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Type'anyPointer (C.Parsed Type'anyPointer))
+instance (C.AllocateList Type'anyPointer) where
+    type ListAllocHint Type'anyPointer = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Type'anyPointer (C.Parsed Type'anyPointer))
+data instance C.Parsed Type'anyPointer
+    = Type'anyPointer' 
+        {union' :: (C.Parsed (GH.Which Type'anyPointer))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Type'anyPointer))
+deriving instance (Std_.Eq (C.Parsed Type'anyPointer))
+instance (C.Parse Type'anyPointer (C.Parsed Type'anyPointer)) where
+    parse raw_ = (Type'anyPointer' <$> (C.parse (GH.structUnion raw_)))
+instance (C.Marshal Type'anyPointer (C.Parsed Type'anyPointer)) where
+    marshalInto raw_ Type'anyPointer'{..} = (do
+        (C.marshalInto (GH.structUnion raw_) union')
+        )
+instance (GH.HasUnion Type'anyPointer) where
+    unionField  = (GH.dataField 0 1 16 0)
+    data RawWhich mut_ Type'anyPointer
+        = RW_Type'anyPointer'unconstrained (R.Raw mut_ Type'anyPointer'unconstrained)
+        | RW_Type'anyPointer'parameter (R.Raw mut_ Type'anyPointer'parameter)
+        | RW_Type'anyPointer'implicitMethodParameter (R.Raw mut_ Type'anyPointer'implicitMethodParameter)
+        | RW_Type'anyPointer'unknown' Std_.Word16
+    internalWhich tag_ struct_ = case tag_ of
+        0 ->
+            (RW_Type'anyPointer'unconstrained <$> (GH.readVariant #unconstrained struct_))
+        1 ->
+            (RW_Type'anyPointer'parameter <$> (GH.readVariant #parameter struct_))
+        2 ->
+            (RW_Type'anyPointer'implicitMethodParameter <$> (GH.readVariant #implicitMethodParameter struct_))
+        _ ->
+            (Std_.pure (RW_Type'anyPointer'unknown' tag_))
+    data Which Type'anyPointer
+instance (GH.HasVariant "unconstrained" GH.Group Type'anyPointer Type'anyPointer'unconstrained) where
+    variantByLabel  = (GH.Variant GH.groupField 0)
+instance (GH.HasVariant "parameter" GH.Group Type'anyPointer Type'anyPointer'parameter) where
+    variantByLabel  = (GH.Variant GH.groupField 1)
+instance (GH.HasVariant "implicitMethodParameter" GH.Group Type'anyPointer Type'anyPointer'implicitMethodParameter) where
+    variantByLabel  = (GH.Variant GH.groupField 2)
+data instance C.Parsed (GH.Which Type'anyPointer)
+    = Type'anyPointer'unconstrained (RP.Parsed Type'anyPointer'unconstrained)
+    | Type'anyPointer'parameter (RP.Parsed Type'anyPointer'parameter)
+    | Type'anyPointer'implicitMethodParameter (RP.Parsed Type'anyPointer'implicitMethodParameter)
+    | Type'anyPointer'unknown' Std_.Word16
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed (GH.Which Type'anyPointer)))
+deriving instance (Std_.Eq (C.Parsed (GH.Which Type'anyPointer)))
+instance (C.Parse (GH.Which Type'anyPointer) (C.Parsed (GH.Which Type'anyPointer))) where
+    parse raw_ = (do
+        rawWhich_ <- (GH.unionWhich raw_)
+        case rawWhich_ of
+            (RW_Type'anyPointer'unconstrained rawArg_) ->
+                (Type'anyPointer'unconstrained <$> (C.parse rawArg_))
+            (RW_Type'anyPointer'parameter rawArg_) ->
+                (Type'anyPointer'parameter <$> (C.parse rawArg_))
+            (RW_Type'anyPointer'implicitMethodParameter rawArg_) ->
+                (Type'anyPointer'implicitMethodParameter <$> (C.parse rawArg_))
+            (RW_Type'anyPointer'unknown' tag_) ->
+                (Std_.pure (Type'anyPointer'unknown' tag_))
+        )
+instance (C.Marshal (GH.Which Type'anyPointer) (C.Parsed (GH.Which Type'anyPointer))) where
+    marshalInto raw_ parsed_ = case parsed_ of
+        (Type'anyPointer'unconstrained arg_) ->
+            (do
+                rawGroup_ <- (GH.initVariant #unconstrained (GH.unionStruct raw_))
+                (C.marshalInto rawGroup_ arg_)
+                )
+        (Type'anyPointer'parameter arg_) ->
+            (do
+                rawGroup_ <- (GH.initVariant #parameter (GH.unionStruct raw_))
+                (C.marshalInto rawGroup_ arg_)
+                )
+        (Type'anyPointer'implicitMethodParameter arg_) ->
+            (do
+                rawGroup_ <- (GH.initVariant #implicitMethodParameter (GH.unionStruct raw_))
+                (C.marshalInto rawGroup_ arg_)
+                )
+        (Type'anyPointer'unknown' tag_) ->
+            (GH.encodeField GH.unionField tag_ (GH.unionStruct raw_))
+data Type'anyPointer'unconstrained 
+type instance (R.ReprFor Type'anyPointer'unconstrained) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Type'anyPointer'unconstrained) where
+    numStructWords  = 3
+    numStructPtrs  = 1
+instance (C.Allocate Type'anyPointer'unconstrained) where
+    type AllocHint Type'anyPointer'unconstrained = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Type'anyPointer'unconstrained (C.Parsed Type'anyPointer'unconstrained))
+instance (C.AllocateList Type'anyPointer'unconstrained) where
+    type ListAllocHint Type'anyPointer'unconstrained = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Type'anyPointer'unconstrained (C.Parsed Type'anyPointer'unconstrained))
+data instance C.Parsed Type'anyPointer'unconstrained
+    = Type'anyPointer'unconstrained' 
+        {union' :: (C.Parsed (GH.Which Type'anyPointer'unconstrained))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Type'anyPointer'unconstrained))
+deriving instance (Std_.Eq (C.Parsed Type'anyPointer'unconstrained))
+instance (C.Parse Type'anyPointer'unconstrained (C.Parsed Type'anyPointer'unconstrained)) where
+    parse raw_ = (Type'anyPointer'unconstrained' <$> (C.parse (GH.structUnion raw_)))
+instance (C.Marshal Type'anyPointer'unconstrained (C.Parsed Type'anyPointer'unconstrained)) where
+    marshalInto raw_ Type'anyPointer'unconstrained'{..} = (do
+        (C.marshalInto (GH.structUnion raw_) union')
+        )
+instance (GH.HasUnion Type'anyPointer'unconstrained) where
+    unionField  = (GH.dataField 16 1 16 0)
+    data RawWhich mut_ Type'anyPointer'unconstrained
+        = RW_Type'anyPointer'unconstrained'anyKind (R.Raw mut_ ())
+        | RW_Type'anyPointer'unconstrained'struct (R.Raw mut_ ())
+        | RW_Type'anyPointer'unconstrained'list (R.Raw mut_ ())
+        | RW_Type'anyPointer'unconstrained'capability (R.Raw mut_ ())
+        | RW_Type'anyPointer'unconstrained'unknown' Std_.Word16
+    internalWhich tag_ struct_ = case tag_ of
+        0 ->
+            (RW_Type'anyPointer'unconstrained'anyKind <$> (GH.readVariant #anyKind struct_))
+        1 ->
+            (RW_Type'anyPointer'unconstrained'struct <$> (GH.readVariant #struct struct_))
+        2 ->
+            (RW_Type'anyPointer'unconstrained'list <$> (GH.readVariant #list struct_))
+        3 ->
+            (RW_Type'anyPointer'unconstrained'capability <$> (GH.readVariant #capability struct_))
+        _ ->
+            (Std_.pure (RW_Type'anyPointer'unconstrained'unknown' tag_))
+    data Which Type'anyPointer'unconstrained
+instance (GH.HasVariant "anyKind" GH.Slot Type'anyPointer'unconstrained ()) where
+    variantByLabel  = (GH.Variant GH.voidField 0)
+instance (GH.HasVariant "struct" GH.Slot Type'anyPointer'unconstrained ()) where
+    variantByLabel  = (GH.Variant GH.voidField 1)
+instance (GH.HasVariant "list" GH.Slot Type'anyPointer'unconstrained ()) where
+    variantByLabel  = (GH.Variant GH.voidField 2)
+instance (GH.HasVariant "capability" GH.Slot Type'anyPointer'unconstrained ()) where
+    variantByLabel  = (GH.Variant GH.voidField 3)
+data instance C.Parsed (GH.Which Type'anyPointer'unconstrained)
+    = Type'anyPointer'unconstrained'anyKind 
+    | Type'anyPointer'unconstrained'struct 
+    | Type'anyPointer'unconstrained'list 
+    | Type'anyPointer'unconstrained'capability 
+    | Type'anyPointer'unconstrained'unknown' Std_.Word16
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed (GH.Which Type'anyPointer'unconstrained)))
+deriving instance (Std_.Eq (C.Parsed (GH.Which Type'anyPointer'unconstrained)))
+instance (C.Parse (GH.Which Type'anyPointer'unconstrained) (C.Parsed (GH.Which Type'anyPointer'unconstrained))) where
+    parse raw_ = (do
+        rawWhich_ <- (GH.unionWhich raw_)
+        case rawWhich_ of
+            (RW_Type'anyPointer'unconstrained'anyKind _) ->
+                (Std_.pure Type'anyPointer'unconstrained'anyKind)
+            (RW_Type'anyPointer'unconstrained'struct _) ->
+                (Std_.pure Type'anyPointer'unconstrained'struct)
+            (RW_Type'anyPointer'unconstrained'list _) ->
+                (Std_.pure Type'anyPointer'unconstrained'list)
+            (RW_Type'anyPointer'unconstrained'capability _) ->
+                (Std_.pure Type'anyPointer'unconstrained'capability)
+            (RW_Type'anyPointer'unconstrained'unknown' tag_) ->
+                (Std_.pure (Type'anyPointer'unconstrained'unknown' tag_))
+        )
+instance (C.Marshal (GH.Which Type'anyPointer'unconstrained) (C.Parsed (GH.Which Type'anyPointer'unconstrained))) where
+    marshalInto raw_ parsed_ = case parsed_ of
+        (Type'anyPointer'unconstrained'anyKind) ->
+            (GH.encodeVariant #anyKind () (GH.unionStruct raw_))
+        (Type'anyPointer'unconstrained'struct) ->
+            (GH.encodeVariant #struct () (GH.unionStruct raw_))
+        (Type'anyPointer'unconstrained'list) ->
+            (GH.encodeVariant #list () (GH.unionStruct raw_))
+        (Type'anyPointer'unconstrained'capability) ->
+            (GH.encodeVariant #capability () (GH.unionStruct raw_))
+        (Type'anyPointer'unconstrained'unknown' tag_) ->
+            (GH.encodeField GH.unionField tag_ (GH.unionStruct raw_))
+data Type'anyPointer'parameter 
+type instance (R.ReprFor Type'anyPointer'parameter) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Type'anyPointer'parameter) where
+    numStructWords  = 3
+    numStructPtrs  = 1
+instance (C.Allocate Type'anyPointer'parameter) where
+    type AllocHint Type'anyPointer'parameter = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Type'anyPointer'parameter (C.Parsed Type'anyPointer'parameter))
+instance (C.AllocateList Type'anyPointer'parameter) where
+    type ListAllocHint Type'anyPointer'parameter = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Type'anyPointer'parameter (C.Parsed Type'anyPointer'parameter))
+data instance C.Parsed Type'anyPointer'parameter
+    = Type'anyPointer'parameter' 
+        {scopeId :: (RP.Parsed Std_.Word64)
+        ,parameterIndex :: (RP.Parsed Std_.Word16)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Type'anyPointer'parameter))
+deriving instance (Std_.Eq (C.Parsed Type'anyPointer'parameter))
+instance (C.Parse Type'anyPointer'parameter (C.Parsed Type'anyPointer'parameter)) where
+    parse raw_ = (Type'anyPointer'parameter' <$> (GH.parseField #scopeId raw_)
+                                             <*> (GH.parseField #parameterIndex raw_))
+instance (C.Marshal Type'anyPointer'parameter (C.Parsed Type'anyPointer'parameter)) where
+    marshalInto raw_ Type'anyPointer'parameter'{..} = (do
+        (GH.encodeField #scopeId scopeId raw_)
+        (GH.encodeField #parameterIndex parameterIndex raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "scopeId" GH.Slot Type'anyPointer'parameter Std_.Word64) where
+    fieldByLabel  = (GH.dataField 0 2 64 0)
+instance (GH.HasField "parameterIndex" GH.Slot Type'anyPointer'parameter Std_.Word16) where
+    fieldByLabel  = (GH.dataField 16 1 16 0)
+data Type'anyPointer'implicitMethodParameter 
+type instance (R.ReprFor Type'anyPointer'implicitMethodParameter) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Type'anyPointer'implicitMethodParameter) where
+    numStructWords  = 3
+    numStructPtrs  = 1
+instance (C.Allocate Type'anyPointer'implicitMethodParameter) where
+    type AllocHint Type'anyPointer'implicitMethodParameter = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Type'anyPointer'implicitMethodParameter (C.Parsed Type'anyPointer'implicitMethodParameter))
+instance (C.AllocateList Type'anyPointer'implicitMethodParameter) where
+    type ListAllocHint Type'anyPointer'implicitMethodParameter = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Type'anyPointer'implicitMethodParameter (C.Parsed Type'anyPointer'implicitMethodParameter))
+data instance C.Parsed Type'anyPointer'implicitMethodParameter
+    = Type'anyPointer'implicitMethodParameter' 
+        {parameterIndex :: (RP.Parsed Std_.Word16)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Type'anyPointer'implicitMethodParameter))
+deriving instance (Std_.Eq (C.Parsed Type'anyPointer'implicitMethodParameter))
+instance (C.Parse Type'anyPointer'implicitMethodParameter (C.Parsed Type'anyPointer'implicitMethodParameter)) where
+    parse raw_ = (Type'anyPointer'implicitMethodParameter' <$> (GH.parseField #parameterIndex raw_))
+instance (C.Marshal Type'anyPointer'implicitMethodParameter (C.Parsed Type'anyPointer'implicitMethodParameter)) where
+    marshalInto raw_ Type'anyPointer'implicitMethodParameter'{..} = (do
+        (GH.encodeField #parameterIndex parameterIndex raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "parameterIndex" GH.Slot Type'anyPointer'implicitMethodParameter Std_.Word16) where
+    fieldByLabel  = (GH.dataField 16 1 16 0)
+data Brand 
+type instance (R.ReprFor Brand) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Brand) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance (C.Allocate Brand) where
+    type AllocHint Brand = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Brand (C.Parsed Brand))
+instance (C.AllocateList Brand) where
+    type ListAllocHint Brand = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Brand (C.Parsed Brand))
+data instance C.Parsed Brand
+    = Brand 
+        {scopes :: (RP.Parsed (R.List Brand'Scope))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Brand))
+deriving instance (Std_.Eq (C.Parsed Brand))
+instance (C.Parse Brand (C.Parsed Brand)) where
+    parse raw_ = (Brand <$> (GH.parseField #scopes raw_))
+instance (C.Marshal Brand (C.Parsed Brand)) where
+    marshalInto raw_ Brand{..} = (do
+        (GH.encodeField #scopes scopes raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "scopes" GH.Slot Brand (R.List Brand'Scope)) where
+    fieldByLabel  = (GH.ptrField 0)
+data Brand'Scope 
+type instance (R.ReprFor Brand'Scope) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Brand'Scope) where
+    numStructWords  = 2
+    numStructPtrs  = 1
+instance (C.Allocate Brand'Scope) where
+    type AllocHint Brand'Scope = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Brand'Scope (C.Parsed Brand'Scope))
+instance (C.AllocateList Brand'Scope) where
+    type ListAllocHint Brand'Scope = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Brand'Scope (C.Parsed Brand'Scope))
+data instance C.Parsed Brand'Scope
+    = Brand'Scope 
+        {scopeId :: (RP.Parsed Std_.Word64)
+        ,union' :: (C.Parsed (GH.Which Brand'Scope))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Brand'Scope))
+deriving instance (Std_.Eq (C.Parsed Brand'Scope))
+instance (C.Parse Brand'Scope (C.Parsed Brand'Scope)) where
+    parse raw_ = (Brand'Scope <$> (GH.parseField #scopeId raw_)
+                              <*> (C.parse (GH.structUnion raw_)))
+instance (C.Marshal Brand'Scope (C.Parsed Brand'Scope)) where
+    marshalInto raw_ Brand'Scope{..} = (do
+        (GH.encodeField #scopeId scopeId raw_)
+        (C.marshalInto (GH.structUnion raw_) union')
+        )
+instance (GH.HasUnion Brand'Scope) where
+    unionField  = (GH.dataField 0 1 16 0)
+    data RawWhich mut_ Brand'Scope
+        = RW_Brand'Scope'bind (R.Raw mut_ (R.List Brand'Binding))
+        | RW_Brand'Scope'inherit (R.Raw mut_ ())
+        | RW_Brand'Scope'unknown' Std_.Word16
+    internalWhich tag_ struct_ = case tag_ of
+        0 ->
+            (RW_Brand'Scope'bind <$> (GH.readVariant #bind struct_))
+        1 ->
+            (RW_Brand'Scope'inherit <$> (GH.readVariant #inherit struct_))
+        _ ->
+            (Std_.pure (RW_Brand'Scope'unknown' tag_))
+    data Which Brand'Scope
+instance (GH.HasVariant "bind" GH.Slot Brand'Scope (R.List Brand'Binding)) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 0)
+instance (GH.HasVariant "inherit" GH.Slot Brand'Scope ()) where
+    variantByLabel  = (GH.Variant GH.voidField 1)
+data instance C.Parsed (GH.Which Brand'Scope)
+    = Brand'Scope'bind (RP.Parsed (R.List Brand'Binding))
+    | Brand'Scope'inherit 
+    | Brand'Scope'unknown' Std_.Word16
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed (GH.Which Brand'Scope)))
+deriving instance (Std_.Eq (C.Parsed (GH.Which Brand'Scope)))
+instance (C.Parse (GH.Which Brand'Scope) (C.Parsed (GH.Which Brand'Scope))) where
+    parse raw_ = (do
+        rawWhich_ <- (GH.unionWhich raw_)
+        case rawWhich_ of
+            (RW_Brand'Scope'bind rawArg_) ->
+                (Brand'Scope'bind <$> (C.parse rawArg_))
+            (RW_Brand'Scope'inherit _) ->
+                (Std_.pure Brand'Scope'inherit)
+            (RW_Brand'Scope'unknown' tag_) ->
+                (Std_.pure (Brand'Scope'unknown' tag_))
+        )
+instance (C.Marshal (GH.Which Brand'Scope) (C.Parsed (GH.Which Brand'Scope))) where
+    marshalInto raw_ parsed_ = case parsed_ of
+        (Brand'Scope'bind arg_) ->
+            (GH.encodeVariant #bind arg_ (GH.unionStruct raw_))
+        (Brand'Scope'inherit) ->
+            (GH.encodeVariant #inherit () (GH.unionStruct raw_))
+        (Brand'Scope'unknown' tag_) ->
+            (GH.encodeField GH.unionField tag_ (GH.unionStruct raw_))
+instance (GH.HasField "scopeId" GH.Slot Brand'Scope Std_.Word64) where
+    fieldByLabel  = (GH.dataField 0 0 64 0)
+data Brand'Binding 
+type instance (R.ReprFor Brand'Binding) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Brand'Binding) where
+    numStructWords  = 1
+    numStructPtrs  = 1
+instance (C.Allocate Brand'Binding) where
+    type AllocHint Brand'Binding = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Brand'Binding (C.Parsed Brand'Binding))
+instance (C.AllocateList Brand'Binding) where
+    type ListAllocHint Brand'Binding = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Brand'Binding (C.Parsed Brand'Binding))
+data instance C.Parsed Brand'Binding
+    = Brand'Binding 
+        {union' :: (C.Parsed (GH.Which Brand'Binding))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Brand'Binding))
+deriving instance (Std_.Eq (C.Parsed Brand'Binding))
+instance (C.Parse Brand'Binding (C.Parsed Brand'Binding)) where
+    parse raw_ = (Brand'Binding <$> (C.parse (GH.structUnion raw_)))
+instance (C.Marshal Brand'Binding (C.Parsed Brand'Binding)) where
+    marshalInto raw_ Brand'Binding{..} = (do
+        (C.marshalInto (GH.structUnion raw_) union')
+        )
+instance (GH.HasUnion Brand'Binding) where
+    unionField  = (GH.dataField 0 0 16 0)
+    data RawWhich mut_ Brand'Binding
+        = RW_Brand'Binding'unbound (R.Raw mut_ ())
+        | RW_Brand'Binding'type_ (R.Raw mut_ Type)
+        | RW_Brand'Binding'unknown' Std_.Word16
+    internalWhich tag_ struct_ = case tag_ of
+        0 ->
+            (RW_Brand'Binding'unbound <$> (GH.readVariant #unbound struct_))
+        1 ->
+            (RW_Brand'Binding'type_ <$> (GH.readVariant #type_ struct_))
+        _ ->
+            (Std_.pure (RW_Brand'Binding'unknown' tag_))
+    data Which Brand'Binding
+instance (GH.HasVariant "unbound" GH.Slot Brand'Binding ()) where
+    variantByLabel  = (GH.Variant GH.voidField 0)
+instance (GH.HasVariant "type_" GH.Slot Brand'Binding Type) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 1)
+data instance C.Parsed (GH.Which Brand'Binding)
+    = Brand'Binding'unbound 
+    | Brand'Binding'type_ (RP.Parsed Type)
+    | Brand'Binding'unknown' Std_.Word16
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed (GH.Which Brand'Binding)))
+deriving instance (Std_.Eq (C.Parsed (GH.Which Brand'Binding)))
+instance (C.Parse (GH.Which Brand'Binding) (C.Parsed (GH.Which Brand'Binding))) where
+    parse raw_ = (do
+        rawWhich_ <- (GH.unionWhich raw_)
+        case rawWhich_ of
+            (RW_Brand'Binding'unbound _) ->
+                (Std_.pure Brand'Binding'unbound)
+            (RW_Brand'Binding'type_ rawArg_) ->
+                (Brand'Binding'type_ <$> (C.parse rawArg_))
+            (RW_Brand'Binding'unknown' tag_) ->
+                (Std_.pure (Brand'Binding'unknown' tag_))
+        )
+instance (C.Marshal (GH.Which Brand'Binding) (C.Parsed (GH.Which Brand'Binding))) where
+    marshalInto raw_ parsed_ = case parsed_ of
+        (Brand'Binding'unbound) ->
+            (GH.encodeVariant #unbound () (GH.unionStruct raw_))
+        (Brand'Binding'type_ arg_) ->
+            (GH.encodeVariant #type_ arg_ (GH.unionStruct raw_))
+        (Brand'Binding'unknown' tag_) ->
+            (GH.encodeField GH.unionField tag_ (GH.unionStruct raw_))
+data Value 
+type instance (R.ReprFor Value) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Value) where
+    numStructWords  = 2
+    numStructPtrs  = 1
+instance (C.Allocate Value) where
+    type AllocHint Value = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Value (C.Parsed Value))
+instance (C.AllocateList Value) where
+    type ListAllocHint Value = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Value (C.Parsed Value))
+data instance C.Parsed Value
+    = Value 
+        {union' :: (C.Parsed (GH.Which Value))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Value))
+deriving instance (Std_.Eq (C.Parsed Value))
+instance (C.Parse Value (C.Parsed Value)) where
+    parse raw_ = (Value <$> (C.parse (GH.structUnion raw_)))
+instance (C.Marshal Value (C.Parsed Value)) where
+    marshalInto raw_ Value{..} = (do
+        (C.marshalInto (GH.structUnion raw_) union')
+        )
+instance (GH.HasUnion Value) where
+    unionField  = (GH.dataField 0 0 16 0)
+    data RawWhich mut_ Value
+        = RW_Value'void (R.Raw mut_ ())
+        | RW_Value'bool (R.Raw mut_ Std_.Bool)
+        | RW_Value'int8 (R.Raw mut_ Std_.Int8)
+        | RW_Value'int16 (R.Raw mut_ Std_.Int16)
+        | RW_Value'int32 (R.Raw mut_ Std_.Int32)
+        | RW_Value'int64 (R.Raw mut_ Std_.Int64)
+        | RW_Value'uint8 (R.Raw mut_ Std_.Word8)
+        | RW_Value'uint16 (R.Raw mut_ Std_.Word16)
+        | RW_Value'uint32 (R.Raw mut_ Std_.Word32)
+        | RW_Value'uint64 (R.Raw mut_ Std_.Word64)
+        | RW_Value'float32 (R.Raw mut_ Std_.Float)
+        | RW_Value'float64 (R.Raw mut_ Std_.Double)
+        | RW_Value'text (R.Raw mut_ Basics.Text)
+        | RW_Value'data_ (R.Raw mut_ Basics.Data)
+        | RW_Value'list (R.Raw mut_ Basics.AnyPointer)
+        | RW_Value'enum (R.Raw mut_ Std_.Word16)
+        | RW_Value'struct (R.Raw mut_ Basics.AnyPointer)
+        | RW_Value'interface (R.Raw mut_ ())
+        | RW_Value'anyPointer (R.Raw mut_ Basics.AnyPointer)
+        | RW_Value'unknown' Std_.Word16
+    internalWhich tag_ struct_ = case tag_ of
+        0 ->
+            (RW_Value'void <$> (GH.readVariant #void struct_))
+        1 ->
+            (RW_Value'bool <$> (GH.readVariant #bool struct_))
+        2 ->
+            (RW_Value'int8 <$> (GH.readVariant #int8 struct_))
+        3 ->
+            (RW_Value'int16 <$> (GH.readVariant #int16 struct_))
+        4 ->
+            (RW_Value'int32 <$> (GH.readVariant #int32 struct_))
+        5 ->
+            (RW_Value'int64 <$> (GH.readVariant #int64 struct_))
+        6 ->
+            (RW_Value'uint8 <$> (GH.readVariant #uint8 struct_))
+        7 ->
+            (RW_Value'uint16 <$> (GH.readVariant #uint16 struct_))
+        8 ->
+            (RW_Value'uint32 <$> (GH.readVariant #uint32 struct_))
+        9 ->
+            (RW_Value'uint64 <$> (GH.readVariant #uint64 struct_))
+        10 ->
+            (RW_Value'float32 <$> (GH.readVariant #float32 struct_))
+        11 ->
+            (RW_Value'float64 <$> (GH.readVariant #float64 struct_))
+        12 ->
+            (RW_Value'text <$> (GH.readVariant #text struct_))
+        13 ->
+            (RW_Value'data_ <$> (GH.readVariant #data_ struct_))
+        14 ->
+            (RW_Value'list <$> (GH.readVariant #list struct_))
+        15 ->
+            (RW_Value'enum <$> (GH.readVariant #enum struct_))
+        16 ->
+            (RW_Value'struct <$> (GH.readVariant #struct struct_))
+        17 ->
+            (RW_Value'interface <$> (GH.readVariant #interface struct_))
+        18 ->
+            (RW_Value'anyPointer <$> (GH.readVariant #anyPointer struct_))
+        _ ->
+            (Std_.pure (RW_Value'unknown' tag_))
+    data Which Value
+instance (GH.HasVariant "void" GH.Slot Value ()) where
+    variantByLabel  = (GH.Variant GH.voidField 0)
+instance (GH.HasVariant "bool" GH.Slot Value Std_.Bool) where
+    variantByLabel  = (GH.Variant (GH.dataField 16 0 1 0) 1)
+instance (GH.HasVariant "int8" GH.Slot Value Std_.Int8) where
+    variantByLabel  = (GH.Variant (GH.dataField 16 0 8 0) 2)
+instance (GH.HasVariant "int16" GH.Slot Value Std_.Int16) where
+    variantByLabel  = (GH.Variant (GH.dataField 16 0 16 0) 3)
+instance (GH.HasVariant "int32" GH.Slot Value Std_.Int32) where
+    variantByLabel  = (GH.Variant (GH.dataField 32 0 32 0) 4)
+instance (GH.HasVariant "int64" GH.Slot Value Std_.Int64) where
+    variantByLabel  = (GH.Variant (GH.dataField 0 1 64 0) 5)
+instance (GH.HasVariant "uint8" GH.Slot Value Std_.Word8) where
+    variantByLabel  = (GH.Variant (GH.dataField 16 0 8 0) 6)
+instance (GH.HasVariant "uint16" GH.Slot Value Std_.Word16) where
+    variantByLabel  = (GH.Variant (GH.dataField 16 0 16 0) 7)
+instance (GH.HasVariant "uint32" GH.Slot Value Std_.Word32) where
+    variantByLabel  = (GH.Variant (GH.dataField 32 0 32 0) 8)
+instance (GH.HasVariant "uint64" GH.Slot Value Std_.Word64) where
+    variantByLabel  = (GH.Variant (GH.dataField 0 1 64 0) 9)
+instance (GH.HasVariant "float32" GH.Slot Value Std_.Float) where
+    variantByLabel  = (GH.Variant (GH.dataField 32 0 32 0) 10)
+instance (GH.HasVariant "float64" GH.Slot Value Std_.Double) where
+    variantByLabel  = (GH.Variant (GH.dataField 0 1 64 0) 11)
+instance (GH.HasVariant "text" GH.Slot Value Basics.Text) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 12)
+instance (GH.HasVariant "data_" GH.Slot Value Basics.Data) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 13)
+instance (GH.HasVariant "list" GH.Slot Value Basics.AnyPointer) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 14)
+instance (GH.HasVariant "enum" GH.Slot Value Std_.Word16) where
+    variantByLabel  = (GH.Variant (GH.dataField 16 0 16 0) 15)
+instance (GH.HasVariant "struct" GH.Slot Value Basics.AnyPointer) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 16)
+instance (GH.HasVariant "interface" GH.Slot Value ()) where
+    variantByLabel  = (GH.Variant GH.voidField 17)
+instance (GH.HasVariant "anyPointer" GH.Slot Value Basics.AnyPointer) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 18)
+data instance C.Parsed (GH.Which Value)
+    = Value'void 
+    | Value'bool (RP.Parsed Std_.Bool)
+    | Value'int8 (RP.Parsed Std_.Int8)
+    | Value'int16 (RP.Parsed Std_.Int16)
+    | Value'int32 (RP.Parsed Std_.Int32)
+    | Value'int64 (RP.Parsed Std_.Int64)
+    | Value'uint8 (RP.Parsed Std_.Word8)
+    | Value'uint16 (RP.Parsed Std_.Word16)
+    | Value'uint32 (RP.Parsed Std_.Word32)
+    | Value'uint64 (RP.Parsed Std_.Word64)
+    | Value'float32 (RP.Parsed Std_.Float)
+    | Value'float64 (RP.Parsed Std_.Double)
+    | Value'text (RP.Parsed Basics.Text)
+    | Value'data_ (RP.Parsed Basics.Data)
+    | Value'list (RP.Parsed Basics.AnyPointer)
+    | Value'enum (RP.Parsed Std_.Word16)
+    | Value'struct (RP.Parsed Basics.AnyPointer)
+    | Value'interface 
+    | Value'anyPointer (RP.Parsed Basics.AnyPointer)
+    | Value'unknown' Std_.Word16
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed (GH.Which Value)))
+deriving instance (Std_.Eq (C.Parsed (GH.Which Value)))
+instance (C.Parse (GH.Which Value) (C.Parsed (GH.Which Value))) where
+    parse raw_ = (do
+        rawWhich_ <- (GH.unionWhich raw_)
+        case rawWhich_ of
+            (RW_Value'void _) ->
+                (Std_.pure Value'void)
+            (RW_Value'bool rawArg_) ->
+                (Value'bool <$> (C.parse rawArg_))
+            (RW_Value'int8 rawArg_) ->
+                (Value'int8 <$> (C.parse rawArg_))
+            (RW_Value'int16 rawArg_) ->
+                (Value'int16 <$> (C.parse rawArg_))
+            (RW_Value'int32 rawArg_) ->
+                (Value'int32 <$> (C.parse rawArg_))
+            (RW_Value'int64 rawArg_) ->
+                (Value'int64 <$> (C.parse rawArg_))
+            (RW_Value'uint8 rawArg_) ->
+                (Value'uint8 <$> (C.parse rawArg_))
+            (RW_Value'uint16 rawArg_) ->
+                (Value'uint16 <$> (C.parse rawArg_))
+            (RW_Value'uint32 rawArg_) ->
+                (Value'uint32 <$> (C.parse rawArg_))
+            (RW_Value'uint64 rawArg_) ->
+                (Value'uint64 <$> (C.parse rawArg_))
+            (RW_Value'float32 rawArg_) ->
+                (Value'float32 <$> (C.parse rawArg_))
+            (RW_Value'float64 rawArg_) ->
+                (Value'float64 <$> (C.parse rawArg_))
+            (RW_Value'text rawArg_) ->
+                (Value'text <$> (C.parse rawArg_))
+            (RW_Value'data_ rawArg_) ->
+                (Value'data_ <$> (C.parse rawArg_))
+            (RW_Value'list rawArg_) ->
+                (Value'list <$> (C.parse rawArg_))
+            (RW_Value'enum rawArg_) ->
+                (Value'enum <$> (C.parse rawArg_))
+            (RW_Value'struct rawArg_) ->
+                (Value'struct <$> (C.parse rawArg_))
+            (RW_Value'interface _) ->
+                (Std_.pure Value'interface)
+            (RW_Value'anyPointer rawArg_) ->
+                (Value'anyPointer <$> (C.parse rawArg_))
+            (RW_Value'unknown' tag_) ->
+                (Std_.pure (Value'unknown' tag_))
+        )
+instance (C.Marshal (GH.Which Value) (C.Parsed (GH.Which Value))) where
+    marshalInto raw_ parsed_ = case parsed_ of
+        (Value'void) ->
+            (GH.encodeVariant #void () (GH.unionStruct raw_))
+        (Value'bool arg_) ->
+            (GH.encodeVariant #bool arg_ (GH.unionStruct raw_))
+        (Value'int8 arg_) ->
+            (GH.encodeVariant #int8 arg_ (GH.unionStruct raw_))
+        (Value'int16 arg_) ->
+            (GH.encodeVariant #int16 arg_ (GH.unionStruct raw_))
+        (Value'int32 arg_) ->
+            (GH.encodeVariant #int32 arg_ (GH.unionStruct raw_))
+        (Value'int64 arg_) ->
+            (GH.encodeVariant #int64 arg_ (GH.unionStruct raw_))
+        (Value'uint8 arg_) ->
+            (GH.encodeVariant #uint8 arg_ (GH.unionStruct raw_))
+        (Value'uint16 arg_) ->
+            (GH.encodeVariant #uint16 arg_ (GH.unionStruct raw_))
+        (Value'uint32 arg_) ->
+            (GH.encodeVariant #uint32 arg_ (GH.unionStruct raw_))
+        (Value'uint64 arg_) ->
+            (GH.encodeVariant #uint64 arg_ (GH.unionStruct raw_))
+        (Value'float32 arg_) ->
+            (GH.encodeVariant #float32 arg_ (GH.unionStruct raw_))
+        (Value'float64 arg_) ->
+            (GH.encodeVariant #float64 arg_ (GH.unionStruct raw_))
+        (Value'text arg_) ->
+            (GH.encodeVariant #text arg_ (GH.unionStruct raw_))
+        (Value'data_ arg_) ->
+            (GH.encodeVariant #data_ arg_ (GH.unionStruct raw_))
+        (Value'list arg_) ->
+            (GH.encodeVariant #list arg_ (GH.unionStruct raw_))
+        (Value'enum arg_) ->
+            (GH.encodeVariant #enum arg_ (GH.unionStruct raw_))
+        (Value'struct arg_) ->
+            (GH.encodeVariant #struct arg_ (GH.unionStruct raw_))
+        (Value'interface) ->
+            (GH.encodeVariant #interface () (GH.unionStruct raw_))
+        (Value'anyPointer arg_) ->
+            (GH.encodeVariant #anyPointer arg_ (GH.unionStruct raw_))
+        (Value'unknown' tag_) ->
+            (GH.encodeField GH.unionField tag_ (GH.unionStruct raw_))
+data Annotation 
+type instance (R.ReprFor Annotation) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Annotation) where
+    numStructWords  = 1
+    numStructPtrs  = 2
+instance (C.Allocate Annotation) where
+    type AllocHint Annotation = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Annotation (C.Parsed Annotation))
+instance (C.AllocateList Annotation) where
+    type ListAllocHint Annotation = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Annotation (C.Parsed Annotation))
+data instance C.Parsed Annotation
+    = Annotation 
+        {id :: (RP.Parsed Std_.Word64)
+        ,value :: (RP.Parsed Value)
+        ,brand :: (RP.Parsed Brand)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Annotation))
+deriving instance (Std_.Eq (C.Parsed Annotation))
+instance (C.Parse Annotation (C.Parsed Annotation)) where
+    parse raw_ = (Annotation <$> (GH.parseField #id raw_)
+                             <*> (GH.parseField #value raw_)
+                             <*> (GH.parseField #brand raw_))
+instance (C.Marshal Annotation (C.Parsed Annotation)) where
+    marshalInto raw_ Annotation{..} = (do
+        (GH.encodeField #id id raw_)
+        (GH.encodeField #value value raw_)
+        (GH.encodeField #brand brand raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "id" GH.Slot Annotation Std_.Word64) where
+    fieldByLabel  = (GH.dataField 0 0 64 0)
+instance (GH.HasField "value" GH.Slot Annotation Value) where
+    fieldByLabel  = (GH.ptrField 0)
+instance (GH.HasField "brand" GH.Slot Annotation Brand) where
+    fieldByLabel  = (GH.ptrField 1)
+data ElementSize 
+    = ElementSize'empty 
+    | ElementSize'bit 
+    | ElementSize'byte 
+    | ElementSize'twoBytes 
+    | ElementSize'fourBytes 
+    | ElementSize'eightBytes 
+    | ElementSize'pointer 
+    | ElementSize'inlineComposite 
+    | ElementSize'unknown' Std_.Word16
+    deriving(Std_.Eq,Std_.Show)
+type instance (R.ReprFor ElementSize) = (R.Data R.Sz16)
+instance (Std_.Enum ElementSize) where
+    toEnum n_ = case n_ of
+        0 ->
+            ElementSize'empty
+        1 ->
+            ElementSize'bit
+        2 ->
+            ElementSize'byte
+        3 ->
+            ElementSize'twoBytes
+        4 ->
+            ElementSize'fourBytes
+        5 ->
+            ElementSize'eightBytes
+        6 ->
+            ElementSize'pointer
+        7 ->
+            ElementSize'inlineComposite
+        tag_ ->
+            (ElementSize'unknown' (Std_.fromIntegral tag_))
+    fromEnum value_ = case value_ of
+        (ElementSize'empty) ->
+            0
+        (ElementSize'bit) ->
+            1
+        (ElementSize'byte) ->
+            2
+        (ElementSize'twoBytes) ->
+            3
+        (ElementSize'fourBytes) ->
+            4
+        (ElementSize'eightBytes) ->
+            5
+        (ElementSize'pointer) ->
+            6
+        (ElementSize'inlineComposite) ->
+            7
+        (ElementSize'unknown' tag_) ->
+            (Std_.fromIntegral tag_)
+instance (C.IsWord ElementSize) where
+    fromWord w_ = (Std_.toEnum (Std_.fromIntegral w_))
+    toWord v_ = (Std_.fromIntegral (Std_.fromEnum v_))
+instance (C.Parse ElementSize ElementSize) where
+    parse  = GH.parseEnum
+    encode  = GH.encodeEnum
+instance (C.AllocateList ElementSize) where
+    type ListAllocHint ElementSize = Std_.Int
+instance (C.EstimateListAlloc ElementSize ElementSize)
+data CapnpVersion 
+type instance (R.ReprFor CapnpVersion) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct CapnpVersion) where
+    numStructWords  = 1
+    numStructPtrs  = 0
+instance (C.Allocate CapnpVersion) where
+    type AllocHint CapnpVersion = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc CapnpVersion (C.Parsed CapnpVersion))
+instance (C.AllocateList CapnpVersion) where
+    type ListAllocHint CapnpVersion = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc CapnpVersion (C.Parsed CapnpVersion))
+data instance C.Parsed CapnpVersion
+    = CapnpVersion 
+        {major :: (RP.Parsed Std_.Word16)
+        ,minor :: (RP.Parsed Std_.Word8)
+        ,micro :: (RP.Parsed Std_.Word8)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed CapnpVersion))
+deriving instance (Std_.Eq (C.Parsed CapnpVersion))
+instance (C.Parse CapnpVersion (C.Parsed CapnpVersion)) where
+    parse raw_ = (CapnpVersion <$> (GH.parseField #major raw_)
+                               <*> (GH.parseField #minor raw_)
+                               <*> (GH.parseField #micro raw_))
+instance (C.Marshal CapnpVersion (C.Parsed CapnpVersion)) where
+    marshalInto raw_ CapnpVersion{..} = (do
+        (GH.encodeField #major major raw_)
+        (GH.encodeField #minor minor raw_)
+        (GH.encodeField #micro micro raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "major" GH.Slot CapnpVersion Std_.Word16) where
+    fieldByLabel  = (GH.dataField 0 0 16 0)
+instance (GH.HasField "minor" GH.Slot CapnpVersion Std_.Word8) where
+    fieldByLabel  = (GH.dataField 16 0 8 0)
+instance (GH.HasField "micro" GH.Slot CapnpVersion Std_.Word8) where
+    fieldByLabel  = (GH.dataField 24 0 8 0)
+data CodeGeneratorRequest 
+type instance (R.ReprFor CodeGeneratorRequest) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct CodeGeneratorRequest) where
+    numStructWords  = 0
+    numStructPtrs  = 4
+instance (C.Allocate CodeGeneratorRequest) where
+    type AllocHint CodeGeneratorRequest = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc CodeGeneratorRequest (C.Parsed CodeGeneratorRequest))
+instance (C.AllocateList CodeGeneratorRequest) where
+    type ListAllocHint CodeGeneratorRequest = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc CodeGeneratorRequest (C.Parsed CodeGeneratorRequest))
+data instance C.Parsed CodeGeneratorRequest
+    = CodeGeneratorRequest 
+        {nodes :: (RP.Parsed (R.List Node))
+        ,requestedFiles :: (RP.Parsed (R.List CodeGeneratorRequest'RequestedFile))
+        ,capnpVersion :: (RP.Parsed CapnpVersion)
+        ,sourceInfo :: (RP.Parsed (R.List Node'SourceInfo))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed CodeGeneratorRequest))
+deriving instance (Std_.Eq (C.Parsed CodeGeneratorRequest))
+instance (C.Parse CodeGeneratorRequest (C.Parsed CodeGeneratorRequest)) where
+    parse raw_ = (CodeGeneratorRequest <$> (GH.parseField #nodes raw_)
+                                       <*> (GH.parseField #requestedFiles raw_)
+                                       <*> (GH.parseField #capnpVersion raw_)
+                                       <*> (GH.parseField #sourceInfo raw_))
+instance (C.Marshal CodeGeneratorRequest (C.Parsed CodeGeneratorRequest)) where
+    marshalInto raw_ CodeGeneratorRequest{..} = (do
+        (GH.encodeField #nodes nodes raw_)
+        (GH.encodeField #requestedFiles requestedFiles raw_)
+        (GH.encodeField #capnpVersion capnpVersion raw_)
+        (GH.encodeField #sourceInfo sourceInfo raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "nodes" GH.Slot CodeGeneratorRequest (R.List Node)) where
+    fieldByLabel  = (GH.ptrField 0)
+instance (GH.HasField "requestedFiles" GH.Slot CodeGeneratorRequest (R.List CodeGeneratorRequest'RequestedFile)) where
+    fieldByLabel  = (GH.ptrField 1)
+instance (GH.HasField "capnpVersion" GH.Slot CodeGeneratorRequest CapnpVersion) where
+    fieldByLabel  = (GH.ptrField 2)
+instance (GH.HasField "sourceInfo" GH.Slot CodeGeneratorRequest (R.List Node'SourceInfo)) where
+    fieldByLabel  = (GH.ptrField 3)
+data CodeGeneratorRequest'RequestedFile 
+type instance (R.ReprFor CodeGeneratorRequest'RequestedFile) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct CodeGeneratorRequest'RequestedFile) where
+    numStructWords  = 1
+    numStructPtrs  = 2
+instance (C.Allocate CodeGeneratorRequest'RequestedFile) where
+    type AllocHint CodeGeneratorRequest'RequestedFile = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc CodeGeneratorRequest'RequestedFile (C.Parsed CodeGeneratorRequest'RequestedFile))
+instance (C.AllocateList CodeGeneratorRequest'RequestedFile) where
+    type ListAllocHint CodeGeneratorRequest'RequestedFile = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc CodeGeneratorRequest'RequestedFile (C.Parsed CodeGeneratorRequest'RequestedFile))
+data instance C.Parsed CodeGeneratorRequest'RequestedFile
+    = CodeGeneratorRequest'RequestedFile 
+        {id :: (RP.Parsed Std_.Word64)
+        ,filename :: (RP.Parsed Basics.Text)
+        ,imports :: (RP.Parsed (R.List CodeGeneratorRequest'RequestedFile'Import))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed CodeGeneratorRequest'RequestedFile))
+deriving instance (Std_.Eq (C.Parsed CodeGeneratorRequest'RequestedFile))
+instance (C.Parse CodeGeneratorRequest'RequestedFile (C.Parsed CodeGeneratorRequest'RequestedFile)) where
+    parse raw_ = (CodeGeneratorRequest'RequestedFile <$> (GH.parseField #id raw_)
+                                                     <*> (GH.parseField #filename raw_)
+                                                     <*> (GH.parseField #imports raw_))
+instance (C.Marshal CodeGeneratorRequest'RequestedFile (C.Parsed CodeGeneratorRequest'RequestedFile)) where
+    marshalInto raw_ CodeGeneratorRequest'RequestedFile{..} = (do
+        (GH.encodeField #id id raw_)
+        (GH.encodeField #filename filename raw_)
+        (GH.encodeField #imports imports raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "id" GH.Slot CodeGeneratorRequest'RequestedFile Std_.Word64) where
+    fieldByLabel  = (GH.dataField 0 0 64 0)
+instance (GH.HasField "filename" GH.Slot CodeGeneratorRequest'RequestedFile Basics.Text) where
+    fieldByLabel  = (GH.ptrField 0)
+instance (GH.HasField "imports" GH.Slot CodeGeneratorRequest'RequestedFile (R.List CodeGeneratorRequest'RequestedFile'Import)) where
+    fieldByLabel  = (GH.ptrField 1)
+data CodeGeneratorRequest'RequestedFile'Import 
+type instance (R.ReprFor CodeGeneratorRequest'RequestedFile'Import) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct CodeGeneratorRequest'RequestedFile'Import) where
+    numStructWords  = 1
+    numStructPtrs  = 1
+instance (C.Allocate CodeGeneratorRequest'RequestedFile'Import) where
+    type AllocHint CodeGeneratorRequest'RequestedFile'Import = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc CodeGeneratorRequest'RequestedFile'Import (C.Parsed CodeGeneratorRequest'RequestedFile'Import))
+instance (C.AllocateList CodeGeneratorRequest'RequestedFile'Import) where
+    type ListAllocHint CodeGeneratorRequest'RequestedFile'Import = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc CodeGeneratorRequest'RequestedFile'Import (C.Parsed CodeGeneratorRequest'RequestedFile'Import))
+data instance C.Parsed CodeGeneratorRequest'RequestedFile'Import
+    = CodeGeneratorRequest'RequestedFile'Import 
+        {id :: (RP.Parsed Std_.Word64)
+        ,name :: (RP.Parsed Basics.Text)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed CodeGeneratorRequest'RequestedFile'Import))
+deriving instance (Std_.Eq (C.Parsed CodeGeneratorRequest'RequestedFile'Import))
+instance (C.Parse CodeGeneratorRequest'RequestedFile'Import (C.Parsed CodeGeneratorRequest'RequestedFile'Import)) where
+    parse raw_ = (CodeGeneratorRequest'RequestedFile'Import <$> (GH.parseField #id raw_)
+                                                            <*> (GH.parseField #name raw_))
+instance (C.Marshal CodeGeneratorRequest'RequestedFile'Import (C.Parsed CodeGeneratorRequest'RequestedFile'Import)) where
+    marshalInto raw_ CodeGeneratorRequest'RequestedFile'Import{..} = (do
+        (GH.encodeField #id id raw_)
+        (GH.encodeField #name name raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "id" GH.Slot CodeGeneratorRequest'RequestedFile'Import Std_.Word64) where
+    fieldByLabel  = (GH.dataField 0 0 64 0)
+instance (GH.HasField "name" GH.Slot CodeGeneratorRequest'RequestedFile'Import Basics.Text) where
+    fieldByLabel  = (GH.ptrField 0)
diff --git a/gen/lib/Capnp/Gen/Capnp/Schema/Pure.hs b/gen/lib/Capnp/Gen/Capnp/Schema/Pure.hs
--- a/gen/lib/Capnp/Gen/Capnp/Schema/Pure.hs
+++ b/gen/lib/Capnp/Gen/Capnp/Schema/Pure.hs
@@ -13,6 +13,7 @@
 {-# OPTIONS_GHC -Wno-unused-matches #-}
 {-# OPTIONS_GHC -Wno-orphans #-}
 {-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
 module Capnp.Gen.Capnp.Schema.Pure(Capnp.Gen.ById.Xa93fc509624c72d9.ElementSize(..)
                                   ,Node(..)
                                   ,Node'(..)
@@ -84,12 +85,12 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Node)) where
+instance (Default.Default Node) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Node)) where
+instance (Classes.FromStruct Message.Const Node) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Node)) where
-    type Cerial msg (Node) = (Capnp.Gen.ById.Xa93fc509624c72d9.Node msg)
+instance (Classes.Decerialize Node) where
+    type Cerial msg Node = (Capnp.Gen.ById.Xa93fc509624c72d9.Node msg)
     decerialize raw = (Node <$> (Capnp.Gen.ById.Xa93fc509624c72d9.get_Node'id raw)
                             <*> ((Capnp.Gen.ById.Xa93fc509624c72d9.get_Node'displayName raw) >>= Classes.decerialize)
                             <*> (Capnp.Gen.ById.Xa93fc509624c72d9.get_Node'displayNamePrefixLength raw)
@@ -99,7 +100,7 @@
                             <*> ((Capnp.Gen.ById.Xa93fc509624c72d9.get_Node'parameters raw) >>= Classes.decerialize)
                             <*> (Capnp.Gen.ById.Xa93fc509624c72d9.get_Node'isGeneric raw)
                             <*> (Classes.decerialize raw))
-instance (Classes.Marshal s (Node)) where
+instance (Classes.Marshal s Node) where
     marshalInto raw_ value_ = case value_ of
         Node{..} ->
             (do
@@ -116,20 +117,20 @@
                     )
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (Node))
-instance (Classes.Cerialize s (V.Vector (Node))) where
+instance (Classes.Cerialize s Node)
+instance (Classes.Cerialize s (V.Vector Node)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Node)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Node))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Node))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Node)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Node)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Node))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Node))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Node)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Node)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Node))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Node))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Node)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data Node' 
     = Node'file 
@@ -142,12 +143,12 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Node')) where
+instance (Default.Default Node') where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Node')) where
+instance (Classes.FromStruct Message.Const Node') where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Node')) where
-    type Cerial msg (Node') = (Capnp.Gen.ById.Xa93fc509624c72d9.Node msg)
+instance (Classes.Decerialize Node') where
+    type Cerial msg Node' = (Capnp.Gen.ById.Xa93fc509624c72d9.Node msg)
     decerialize raw = (do
         raw <- (Capnp.Gen.ById.Xa93fc509624c72d9.get_Node' raw)
         case raw of
@@ -166,7 +167,7 @@
             (Capnp.Gen.ById.Xa93fc509624c72d9.Node'unknown' tag) ->
                 (Std_.pure (Node'unknown' tag))
         )
-instance (Classes.Marshal s (Node')) where
+instance (Classes.Marshal s Node') where
     marshalInto raw_ value_ = case value_ of
         (Node'file) ->
             (Capnp.Gen.ById.Xa93fc509624c72d9.set_Node'file raw_)
@@ -209,12 +210,12 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Node'struct)) where
+instance (Default.Default Node'struct) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Node'struct)) where
+instance (Classes.FromStruct Message.Const Node'struct) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Node'struct)) where
-    type Cerial msg (Node'struct) = (Capnp.Gen.ById.Xa93fc509624c72d9.Node'struct msg)
+instance (Classes.Decerialize Node'struct) where
+    type Cerial msg Node'struct = (Capnp.Gen.ById.Xa93fc509624c72d9.Node'struct msg)
     decerialize raw = (Node'struct' <$> (Capnp.Gen.ById.Xa93fc509624c72d9.get_Node'struct'dataWordCount raw)
                                     <*> (Capnp.Gen.ById.Xa93fc509624c72d9.get_Node'struct'pointerCount raw)
                                     <*> (Capnp.Gen.ById.Xa93fc509624c72d9.get_Node'struct'preferredListEncoding raw)
@@ -222,7 +223,7 @@
                                     <*> (Capnp.Gen.ById.Xa93fc509624c72d9.get_Node'struct'discriminantCount raw)
                                     <*> (Capnp.Gen.ById.Xa93fc509624c72d9.get_Node'struct'discriminantOffset raw)
                                     <*> ((Capnp.Gen.ById.Xa93fc509624c72d9.get_Node'struct'fields raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Node'struct)) where
+instance (Classes.Marshal s Node'struct) where
     marshalInto raw_ value_ = case value_ of
         Node'struct'{..} ->
             (do
@@ -241,14 +242,14 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Node'enum)) where
+instance (Default.Default Node'enum) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Node'enum)) where
+instance (Classes.FromStruct Message.Const Node'enum) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Node'enum)) where
-    type Cerial msg (Node'enum) = (Capnp.Gen.ById.Xa93fc509624c72d9.Node'enum msg)
+instance (Classes.Decerialize Node'enum) where
+    type Cerial msg Node'enum = (Capnp.Gen.ById.Xa93fc509624c72d9.Node'enum msg)
     decerialize raw = (Node'enum' <$> ((Capnp.Gen.ById.Xa93fc509624c72d9.get_Node'enum'enumerants raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Node'enum)) where
+instance (Classes.Marshal s Node'enum) where
     marshalInto raw_ value_ = case value_ of
         Node'enum'{..} ->
             (do
@@ -262,15 +263,15 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Node'interface)) where
+instance (Default.Default Node'interface) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Node'interface)) where
+instance (Classes.FromStruct Message.Const Node'interface) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Node'interface)) where
-    type Cerial msg (Node'interface) = (Capnp.Gen.ById.Xa93fc509624c72d9.Node'interface msg)
+instance (Classes.Decerialize Node'interface) where
+    type Cerial msg Node'interface = (Capnp.Gen.ById.Xa93fc509624c72d9.Node'interface msg)
     decerialize raw = (Node'interface' <$> ((Capnp.Gen.ById.Xa93fc509624c72d9.get_Node'interface'methods raw) >>= Classes.decerialize)
                                        <*> ((Capnp.Gen.ById.Xa93fc509624c72d9.get_Node'interface'superclasses raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Node'interface)) where
+instance (Classes.Marshal s Node'interface) where
     marshalInto raw_ value_ = case value_ of
         Node'interface'{..} ->
             (do
@@ -285,15 +286,15 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Node'const)) where
+instance (Default.Default Node'const) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Node'const)) where
+instance (Classes.FromStruct Message.Const Node'const) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Node'const)) where
-    type Cerial msg (Node'const) = (Capnp.Gen.ById.Xa93fc509624c72d9.Node'const msg)
+instance (Classes.Decerialize Node'const) where
+    type Cerial msg Node'const = (Capnp.Gen.ById.Xa93fc509624c72d9.Node'const msg)
     decerialize raw = (Node'const' <$> ((Capnp.Gen.ById.Xa93fc509624c72d9.get_Node'const'type_ raw) >>= Classes.decerialize)
                                    <*> ((Capnp.Gen.ById.Xa93fc509624c72d9.get_Node'const'value raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Node'const)) where
+instance (Classes.Marshal s Node'const) where
     marshalInto raw_ value_ = case value_ of
         Node'const'{..} ->
             (do
@@ -319,12 +320,12 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Node'annotation)) where
+instance (Default.Default Node'annotation) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Node'annotation)) where
+instance (Classes.FromStruct Message.Const Node'annotation) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Node'annotation)) where
-    type Cerial msg (Node'annotation) = (Capnp.Gen.ById.Xa93fc509624c72d9.Node'annotation msg)
+instance (Classes.Decerialize Node'annotation) where
+    type Cerial msg Node'annotation = (Capnp.Gen.ById.Xa93fc509624c72d9.Node'annotation msg)
     decerialize raw = (Node'annotation' <$> ((Capnp.Gen.ById.Xa93fc509624c72d9.get_Node'annotation'type_ raw) >>= Classes.decerialize)
                                         <*> (Capnp.Gen.ById.Xa93fc509624c72d9.get_Node'annotation'targetsFile raw)
                                         <*> (Capnp.Gen.ById.Xa93fc509624c72d9.get_Node'annotation'targetsConst raw)
@@ -338,7 +339,7 @@
                                         <*> (Capnp.Gen.ById.Xa93fc509624c72d9.get_Node'annotation'targetsMethod raw)
                                         <*> (Capnp.Gen.ById.Xa93fc509624c72d9.get_Node'annotation'targetsParam raw)
                                         <*> (Capnp.Gen.ById.Xa93fc509624c72d9.get_Node'annotation'targetsAnnotation raw))
-instance (Classes.Marshal s (Node'annotation)) where
+instance (Classes.Marshal s Node'annotation) where
     marshalInto raw_ value_ = case value_ of
         Node'annotation'{..} ->
             (do
@@ -363,34 +364,34 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Node'Parameter)) where
+instance (Default.Default Node'Parameter) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Node'Parameter)) where
+instance (Classes.FromStruct Message.Const Node'Parameter) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Node'Parameter)) where
-    type Cerial msg (Node'Parameter) = (Capnp.Gen.ById.Xa93fc509624c72d9.Node'Parameter msg)
+instance (Classes.Decerialize Node'Parameter) where
+    type Cerial msg Node'Parameter = (Capnp.Gen.ById.Xa93fc509624c72d9.Node'Parameter msg)
     decerialize raw = (Node'Parameter <$> ((Capnp.Gen.ById.Xa93fc509624c72d9.get_Node'Parameter'name raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Node'Parameter)) where
+instance (Classes.Marshal s Node'Parameter) where
     marshalInto raw_ value_ = case value_ of
         Node'Parameter{..} ->
             (do
                 ((Classes.cerialize (Untyped.message raw_) name) >>= (Capnp.Gen.ById.Xa93fc509624c72d9.set_Node'Parameter'name raw_))
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (Node'Parameter))
-instance (Classes.Cerialize s (V.Vector (Node'Parameter))) where
+instance (Classes.Cerialize s Node'Parameter)
+instance (Classes.Cerialize s (V.Vector Node'Parameter)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Node'Parameter)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Node'Parameter))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Node'Parameter))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Node'Parameter)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Node'Parameter)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Node'Parameter))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Node'Parameter))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Node'Parameter)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Node'Parameter)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Node'Parameter))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Node'Parameter))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Node'Parameter)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data Node'NestedNode 
     = Node'NestedNode 
@@ -399,15 +400,15 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Node'NestedNode)) where
+instance (Default.Default Node'NestedNode) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Node'NestedNode)) where
+instance (Classes.FromStruct Message.Const Node'NestedNode) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Node'NestedNode)) where
-    type Cerial msg (Node'NestedNode) = (Capnp.Gen.ById.Xa93fc509624c72d9.Node'NestedNode msg)
+instance (Classes.Decerialize Node'NestedNode) where
+    type Cerial msg Node'NestedNode = (Capnp.Gen.ById.Xa93fc509624c72d9.Node'NestedNode msg)
     decerialize raw = (Node'NestedNode <$> ((Capnp.Gen.ById.Xa93fc509624c72d9.get_Node'NestedNode'name raw) >>= Classes.decerialize)
                                        <*> (Capnp.Gen.ById.Xa93fc509624c72d9.get_Node'NestedNode'id raw))
-instance (Classes.Marshal s (Node'NestedNode)) where
+instance (Classes.Marshal s Node'NestedNode) where
     marshalInto raw_ value_ = case value_ of
         Node'NestedNode{..} ->
             (do
@@ -415,20 +416,20 @@
                 (Capnp.Gen.ById.Xa93fc509624c72d9.set_Node'NestedNode'id raw_ id)
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (Node'NestedNode))
-instance (Classes.Cerialize s (V.Vector (Node'NestedNode))) where
+instance (Classes.Cerialize s Node'NestedNode)
+instance (Classes.Cerialize s (V.Vector Node'NestedNode)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Node'NestedNode)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Node'NestedNode))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Node'NestedNode))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Node'NestedNode)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Node'NestedNode)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Node'NestedNode))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Node'NestedNode))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Node'NestedNode)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Node'NestedNode)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Node'NestedNode))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Node'NestedNode))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Node'NestedNode)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data Node'SourceInfo 
     = Node'SourceInfo 
@@ -438,16 +439,16 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Node'SourceInfo)) where
+instance (Default.Default Node'SourceInfo) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Node'SourceInfo)) where
+instance (Classes.FromStruct Message.Const Node'SourceInfo) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Node'SourceInfo)) where
-    type Cerial msg (Node'SourceInfo) = (Capnp.Gen.ById.Xa93fc509624c72d9.Node'SourceInfo msg)
+instance (Classes.Decerialize Node'SourceInfo) where
+    type Cerial msg Node'SourceInfo = (Capnp.Gen.ById.Xa93fc509624c72d9.Node'SourceInfo msg)
     decerialize raw = (Node'SourceInfo <$> (Capnp.Gen.ById.Xa93fc509624c72d9.get_Node'SourceInfo'id raw)
                                        <*> ((Capnp.Gen.ById.Xa93fc509624c72d9.get_Node'SourceInfo'docComment raw) >>= Classes.decerialize)
                                        <*> ((Capnp.Gen.ById.Xa93fc509624c72d9.get_Node'SourceInfo'members raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Node'SourceInfo)) where
+instance (Classes.Marshal s Node'SourceInfo) where
     marshalInto raw_ value_ = case value_ of
         Node'SourceInfo{..} ->
             (do
@@ -456,20 +457,20 @@
                 ((Classes.cerialize (Untyped.message raw_) members) >>= (Capnp.Gen.ById.Xa93fc509624c72d9.set_Node'SourceInfo'members raw_))
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (Node'SourceInfo))
-instance (Classes.Cerialize s (V.Vector (Node'SourceInfo))) where
+instance (Classes.Cerialize s Node'SourceInfo)
+instance (Classes.Cerialize s (V.Vector Node'SourceInfo)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Node'SourceInfo)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Node'SourceInfo))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Node'SourceInfo))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Node'SourceInfo)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Node'SourceInfo)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Node'SourceInfo))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Node'SourceInfo))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Node'SourceInfo)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Node'SourceInfo)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Node'SourceInfo))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Node'SourceInfo))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Node'SourceInfo)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data Node'SourceInfo'Member 
     = Node'SourceInfo'Member 
@@ -477,34 +478,34 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Node'SourceInfo'Member)) where
+instance (Default.Default Node'SourceInfo'Member) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Node'SourceInfo'Member)) where
+instance (Classes.FromStruct Message.Const Node'SourceInfo'Member) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Node'SourceInfo'Member)) where
-    type Cerial msg (Node'SourceInfo'Member) = (Capnp.Gen.ById.Xa93fc509624c72d9.Node'SourceInfo'Member msg)
+instance (Classes.Decerialize Node'SourceInfo'Member) where
+    type Cerial msg Node'SourceInfo'Member = (Capnp.Gen.ById.Xa93fc509624c72d9.Node'SourceInfo'Member msg)
     decerialize raw = (Node'SourceInfo'Member <$> ((Capnp.Gen.ById.Xa93fc509624c72d9.get_Node'SourceInfo'Member'docComment raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Node'SourceInfo'Member)) where
+instance (Classes.Marshal s Node'SourceInfo'Member) where
     marshalInto raw_ value_ = case value_ of
         Node'SourceInfo'Member{..} ->
             (do
                 ((Classes.cerialize (Untyped.message raw_) docComment) >>= (Capnp.Gen.ById.Xa93fc509624c72d9.set_Node'SourceInfo'Member'docComment raw_))
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (Node'SourceInfo'Member))
-instance (Classes.Cerialize s (V.Vector (Node'SourceInfo'Member))) where
+instance (Classes.Cerialize s Node'SourceInfo'Member)
+instance (Classes.Cerialize s (V.Vector Node'SourceInfo'Member)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Node'SourceInfo'Member)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Node'SourceInfo'Member))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Node'SourceInfo'Member))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Node'SourceInfo'Member)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Node'SourceInfo'Member)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Node'SourceInfo'Member))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Node'SourceInfo'Member))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Node'SourceInfo'Member)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Node'SourceInfo'Member)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Node'SourceInfo'Member))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Node'SourceInfo'Member))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Node'SourceInfo'Member)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data Field 
     = Field 
@@ -517,19 +518,19 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Field)) where
+instance (Default.Default Field) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Field)) where
+instance (Classes.FromStruct Message.Const Field) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Field)) where
-    type Cerial msg (Field) = (Capnp.Gen.ById.Xa93fc509624c72d9.Field msg)
+instance (Classes.Decerialize Field) where
+    type Cerial msg Field = (Capnp.Gen.ById.Xa93fc509624c72d9.Field msg)
     decerialize raw = (Field <$> ((Capnp.Gen.ById.Xa93fc509624c72d9.get_Field'name raw) >>= Classes.decerialize)
                              <*> (Capnp.Gen.ById.Xa93fc509624c72d9.get_Field'codeOrder raw)
                              <*> ((Capnp.Gen.ById.Xa93fc509624c72d9.get_Field'annotations raw) >>= Classes.decerialize)
                              <*> (Capnp.Gen.ById.Xa93fc509624c72d9.get_Field'discriminantValue raw)
                              <*> ((Capnp.Gen.ById.Xa93fc509624c72d9.get_Field'ordinal raw) >>= Classes.decerialize)
                              <*> (Classes.decerialize raw))
-instance (Classes.Marshal s (Field)) where
+instance (Classes.Marshal s Field) where
     marshalInto raw_ value_ = case value_ of
         Field{..} ->
             (do
@@ -546,20 +547,20 @@
                     )
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (Field))
-instance (Classes.Cerialize s (V.Vector (Field))) where
+instance (Classes.Cerialize s Field)
+instance (Classes.Cerialize s (V.Vector Field)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Field)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Field))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Field))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Field)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Field)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Field))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Field))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Field)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Field)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Field))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Field))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Field)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data Field' 
     = Field'slot Field'slot
@@ -568,12 +569,12 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Field')) where
+instance (Default.Default Field') where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Field')) where
+instance (Classes.FromStruct Message.Const Field') where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Field')) where
-    type Cerial msg (Field') = (Capnp.Gen.ById.Xa93fc509624c72d9.Field msg)
+instance (Classes.Decerialize Field') where
+    type Cerial msg Field' = (Capnp.Gen.ById.Xa93fc509624c72d9.Field msg)
     decerialize raw = (do
         raw <- (Capnp.Gen.ById.Xa93fc509624c72d9.get_Field' raw)
         case raw of
@@ -584,7 +585,7 @@
             (Capnp.Gen.ById.Xa93fc509624c72d9.Field'unknown' tag) ->
                 (Std_.pure (Field'unknown' tag))
         )
-instance (Classes.Marshal s (Field')) where
+instance (Classes.Marshal s Field') where
     marshalInto raw_ value_ = case value_ of
         (Field'slot arg_) ->
             (do
@@ -607,17 +608,17 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Field'slot)) where
+instance (Default.Default Field'slot) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Field'slot)) where
+instance (Classes.FromStruct Message.Const Field'slot) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Field'slot)) where
-    type Cerial msg (Field'slot) = (Capnp.Gen.ById.Xa93fc509624c72d9.Field'slot msg)
+instance (Classes.Decerialize Field'slot) where
+    type Cerial msg Field'slot = (Capnp.Gen.ById.Xa93fc509624c72d9.Field'slot msg)
     decerialize raw = (Field'slot' <$> (Capnp.Gen.ById.Xa93fc509624c72d9.get_Field'slot'offset raw)
                                    <*> ((Capnp.Gen.ById.Xa93fc509624c72d9.get_Field'slot'type_ raw) >>= Classes.decerialize)
                                    <*> ((Capnp.Gen.ById.Xa93fc509624c72d9.get_Field'slot'defaultValue raw) >>= Classes.decerialize)
                                    <*> (Capnp.Gen.ById.Xa93fc509624c72d9.get_Field'slot'hadExplicitDefault raw))
-instance (Classes.Marshal s (Field'slot)) where
+instance (Classes.Marshal s Field'slot) where
     marshalInto raw_ value_ = case value_ of
         Field'slot'{..} ->
             (do
@@ -633,14 +634,14 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Field'group)) where
+instance (Default.Default Field'group) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Field'group)) where
+instance (Classes.FromStruct Message.Const Field'group) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Field'group)) where
-    type Cerial msg (Field'group) = (Capnp.Gen.ById.Xa93fc509624c72d9.Field'group msg)
+instance (Classes.Decerialize Field'group) where
+    type Cerial msg Field'group = (Capnp.Gen.ById.Xa93fc509624c72d9.Field'group msg)
     decerialize raw = (Field'group' <$> (Capnp.Gen.ById.Xa93fc509624c72d9.get_Field'group'typeId raw))
-instance (Classes.Marshal s (Field'group)) where
+instance (Classes.Marshal s Field'group) where
     marshalInto raw_ value_ = case value_ of
         Field'group'{..} ->
             (do
@@ -654,12 +655,12 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Field'ordinal)) where
+instance (Default.Default Field'ordinal) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Field'ordinal)) where
+instance (Classes.FromStruct Message.Const Field'ordinal) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Field'ordinal)) where
-    type Cerial msg (Field'ordinal) = (Capnp.Gen.ById.Xa93fc509624c72d9.Field'ordinal msg)
+instance (Classes.Decerialize Field'ordinal) where
+    type Cerial msg Field'ordinal = (Capnp.Gen.ById.Xa93fc509624c72d9.Field'ordinal msg)
     decerialize raw = (do
         raw <- (Capnp.Gen.ById.Xa93fc509624c72d9.get_Field'ordinal' raw)
         case raw of
@@ -670,7 +671,7 @@
             (Capnp.Gen.ById.Xa93fc509624c72d9.Field'ordinal'unknown' tag) ->
                 (Std_.pure (Field'ordinal'unknown' tag))
         )
-instance (Classes.Marshal s (Field'ordinal)) where
+instance (Classes.Marshal s Field'ordinal) where
     marshalInto raw_ value_ = case value_ of
         (Field'ordinal'implicit) ->
             (Capnp.Gen.ById.Xa93fc509624c72d9.set_Field'ordinal'implicit raw_)
@@ -686,16 +687,16 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Enumerant)) where
+instance (Default.Default Enumerant) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Enumerant)) where
+instance (Classes.FromStruct Message.Const Enumerant) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Enumerant)) where
-    type Cerial msg (Enumerant) = (Capnp.Gen.ById.Xa93fc509624c72d9.Enumerant msg)
+instance (Classes.Decerialize Enumerant) where
+    type Cerial msg Enumerant = (Capnp.Gen.ById.Xa93fc509624c72d9.Enumerant msg)
     decerialize raw = (Enumerant <$> ((Capnp.Gen.ById.Xa93fc509624c72d9.get_Enumerant'name raw) >>= Classes.decerialize)
                                  <*> (Capnp.Gen.ById.Xa93fc509624c72d9.get_Enumerant'codeOrder raw)
                                  <*> ((Capnp.Gen.ById.Xa93fc509624c72d9.get_Enumerant'annotations raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Enumerant)) where
+instance (Classes.Marshal s Enumerant) where
     marshalInto raw_ value_ = case value_ of
         Enumerant{..} ->
             (do
@@ -704,20 +705,20 @@
                 ((Classes.cerialize (Untyped.message raw_) annotations) >>= (Capnp.Gen.ById.Xa93fc509624c72d9.set_Enumerant'annotations raw_))
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (Enumerant))
-instance (Classes.Cerialize s (V.Vector (Enumerant))) where
+instance (Classes.Cerialize s Enumerant)
+instance (Classes.Cerialize s (V.Vector Enumerant)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Enumerant)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Enumerant))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Enumerant))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Enumerant)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Enumerant)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Enumerant))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Enumerant))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Enumerant)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Enumerant)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Enumerant))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Enumerant))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Enumerant)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data Superclass 
     = Superclass 
@@ -726,15 +727,15 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Superclass)) where
+instance (Default.Default Superclass) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Superclass)) where
+instance (Classes.FromStruct Message.Const Superclass) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Superclass)) where
-    type Cerial msg (Superclass) = (Capnp.Gen.ById.Xa93fc509624c72d9.Superclass msg)
+instance (Classes.Decerialize Superclass) where
+    type Cerial msg Superclass = (Capnp.Gen.ById.Xa93fc509624c72d9.Superclass msg)
     decerialize raw = (Superclass <$> (Capnp.Gen.ById.Xa93fc509624c72d9.get_Superclass'id raw)
                                   <*> ((Capnp.Gen.ById.Xa93fc509624c72d9.get_Superclass'brand raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Superclass)) where
+instance (Classes.Marshal s Superclass) where
     marshalInto raw_ value_ = case value_ of
         Superclass{..} ->
             (do
@@ -742,20 +743,20 @@
                 ((Classes.cerialize (Untyped.message raw_) brand) >>= (Capnp.Gen.ById.Xa93fc509624c72d9.set_Superclass'brand raw_))
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (Superclass))
-instance (Classes.Cerialize s (V.Vector (Superclass))) where
+instance (Classes.Cerialize s Superclass)
+instance (Classes.Cerialize s (V.Vector Superclass)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Superclass)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Superclass))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Superclass))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Superclass)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Superclass)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Superclass))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Superclass))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Superclass)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Superclass)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Superclass))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Superclass))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Superclass)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data Method 
     = Method 
@@ -770,12 +771,12 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Method)) where
+instance (Default.Default Method) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Method)) where
+instance (Classes.FromStruct Message.Const Method) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Method)) where
-    type Cerial msg (Method) = (Capnp.Gen.ById.Xa93fc509624c72d9.Method msg)
+instance (Classes.Decerialize Method) where
+    type Cerial msg Method = (Capnp.Gen.ById.Xa93fc509624c72d9.Method msg)
     decerialize raw = (Method <$> ((Capnp.Gen.ById.Xa93fc509624c72d9.get_Method'name raw) >>= Classes.decerialize)
                               <*> (Capnp.Gen.ById.Xa93fc509624c72d9.get_Method'codeOrder raw)
                               <*> (Capnp.Gen.ById.Xa93fc509624c72d9.get_Method'paramStructType raw)
@@ -784,7 +785,7 @@
                               <*> ((Capnp.Gen.ById.Xa93fc509624c72d9.get_Method'paramBrand raw) >>= Classes.decerialize)
                               <*> ((Capnp.Gen.ById.Xa93fc509624c72d9.get_Method'resultBrand raw) >>= Classes.decerialize)
                               <*> ((Capnp.Gen.ById.Xa93fc509624c72d9.get_Method'implicitParameters raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Method)) where
+instance (Classes.Marshal s Method) where
     marshalInto raw_ value_ = case value_ of
         Method{..} ->
             (do
@@ -798,20 +799,20 @@
                 ((Classes.cerialize (Untyped.message raw_) implicitParameters) >>= (Capnp.Gen.ById.Xa93fc509624c72d9.set_Method'implicitParameters raw_))
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (Method))
-instance (Classes.Cerialize s (V.Vector (Method))) where
+instance (Classes.Cerialize s Method)
+instance (Classes.Cerialize s (V.Vector Method)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Method)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Method))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Method))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Method)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Method)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Method))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Method))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Method)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Method)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Method))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Method))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Method)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data Type 
     = Type'void 
@@ -837,12 +838,12 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Type)) where
+instance (Default.Default Type) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Type)) where
+instance (Classes.FromStruct Message.Const Type) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Type)) where
-    type Cerial msg (Type) = (Capnp.Gen.ById.Xa93fc509624c72d9.Type msg)
+instance (Classes.Decerialize Type) where
+    type Cerial msg Type = (Capnp.Gen.ById.Xa93fc509624c72d9.Type msg)
     decerialize raw = (do
         raw <- (Capnp.Gen.ById.Xa93fc509624c72d9.get_Type' raw)
         case raw of
@@ -887,7 +888,7 @@
             (Capnp.Gen.ById.Xa93fc509624c72d9.Type'unknown' tag) ->
                 (Std_.pure (Type'unknown' tag))
         )
-instance (Classes.Marshal s (Type)) where
+instance (Classes.Marshal s Type) where
     marshalInto raw_ value_ = case value_ of
         (Type'void) ->
             (Capnp.Gen.ById.Xa93fc509624c72d9.set_Type'void raw_)
@@ -944,20 +945,20 @@
                 )
         (Type'unknown' tag) ->
             (Capnp.Gen.ById.Xa93fc509624c72d9.set_Type'unknown' raw_ tag)
-instance (Classes.Cerialize s (Type))
-instance (Classes.Cerialize s (V.Vector (Type))) where
+instance (Classes.Cerialize s Type)
+instance (Classes.Cerialize s (V.Vector Type)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Type)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Type))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Type))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Type)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Type)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Type))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Type))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Type)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Type)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Type))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Type))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Type)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data Type'list 
     = Type'list' 
@@ -965,14 +966,14 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Type'list)) where
+instance (Default.Default Type'list) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Type'list)) where
+instance (Classes.FromStruct Message.Const Type'list) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Type'list)) where
-    type Cerial msg (Type'list) = (Capnp.Gen.ById.Xa93fc509624c72d9.Type'list msg)
+instance (Classes.Decerialize Type'list) where
+    type Cerial msg Type'list = (Capnp.Gen.ById.Xa93fc509624c72d9.Type'list msg)
     decerialize raw = (Type'list' <$> ((Capnp.Gen.ById.Xa93fc509624c72d9.get_Type'list'elementType raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Type'list)) where
+instance (Classes.Marshal s Type'list) where
     marshalInto raw_ value_ = case value_ of
         Type'list'{..} ->
             (do
@@ -986,15 +987,15 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Type'enum)) where
+instance (Default.Default Type'enum) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Type'enum)) where
+instance (Classes.FromStruct Message.Const Type'enum) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Type'enum)) where
-    type Cerial msg (Type'enum) = (Capnp.Gen.ById.Xa93fc509624c72d9.Type'enum msg)
+instance (Classes.Decerialize Type'enum) where
+    type Cerial msg Type'enum = (Capnp.Gen.ById.Xa93fc509624c72d9.Type'enum msg)
     decerialize raw = (Type'enum' <$> (Capnp.Gen.ById.Xa93fc509624c72d9.get_Type'enum'typeId raw)
                                   <*> ((Capnp.Gen.ById.Xa93fc509624c72d9.get_Type'enum'brand raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Type'enum)) where
+instance (Classes.Marshal s Type'enum) where
     marshalInto raw_ value_ = case value_ of
         Type'enum'{..} ->
             (do
@@ -1009,15 +1010,15 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Type'struct)) where
+instance (Default.Default Type'struct) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Type'struct)) where
+instance (Classes.FromStruct Message.Const Type'struct) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Type'struct)) where
-    type Cerial msg (Type'struct) = (Capnp.Gen.ById.Xa93fc509624c72d9.Type'struct msg)
+instance (Classes.Decerialize Type'struct) where
+    type Cerial msg Type'struct = (Capnp.Gen.ById.Xa93fc509624c72d9.Type'struct msg)
     decerialize raw = (Type'struct' <$> (Capnp.Gen.ById.Xa93fc509624c72d9.get_Type'struct'typeId raw)
                                     <*> ((Capnp.Gen.ById.Xa93fc509624c72d9.get_Type'struct'brand raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Type'struct)) where
+instance (Classes.Marshal s Type'struct) where
     marshalInto raw_ value_ = case value_ of
         Type'struct'{..} ->
             (do
@@ -1032,15 +1033,15 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Type'interface)) where
+instance (Default.Default Type'interface) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Type'interface)) where
+instance (Classes.FromStruct Message.Const Type'interface) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Type'interface)) where
-    type Cerial msg (Type'interface) = (Capnp.Gen.ById.Xa93fc509624c72d9.Type'interface msg)
+instance (Classes.Decerialize Type'interface) where
+    type Cerial msg Type'interface = (Capnp.Gen.ById.Xa93fc509624c72d9.Type'interface msg)
     decerialize raw = (Type'interface' <$> (Capnp.Gen.ById.Xa93fc509624c72d9.get_Type'interface'typeId raw)
                                        <*> ((Capnp.Gen.ById.Xa93fc509624c72d9.get_Type'interface'brand raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Type'interface)) where
+instance (Classes.Marshal s Type'interface) where
     marshalInto raw_ value_ = case value_ of
         Type'interface'{..} ->
             (do
@@ -1056,12 +1057,12 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Type'anyPointer)) where
+instance (Default.Default Type'anyPointer) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Type'anyPointer)) where
+instance (Classes.FromStruct Message.Const Type'anyPointer) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Type'anyPointer)) where
-    type Cerial msg (Type'anyPointer) = (Capnp.Gen.ById.Xa93fc509624c72d9.Type'anyPointer msg)
+instance (Classes.Decerialize Type'anyPointer) where
+    type Cerial msg Type'anyPointer = (Capnp.Gen.ById.Xa93fc509624c72d9.Type'anyPointer msg)
     decerialize raw = (do
         raw <- (Capnp.Gen.ById.Xa93fc509624c72d9.get_Type'anyPointer' raw)
         case raw of
@@ -1074,7 +1075,7 @@
             (Capnp.Gen.ById.Xa93fc509624c72d9.Type'anyPointer'unknown' tag) ->
                 (Std_.pure (Type'anyPointer'unknown' tag))
         )
-instance (Classes.Marshal s (Type'anyPointer)) where
+instance (Classes.Marshal s Type'anyPointer) where
     marshalInto raw_ value_ = case value_ of
         (Type'anyPointer'unconstrained arg_) ->
             (do
@@ -1102,12 +1103,12 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Type'anyPointer'unconstrained)) where
+instance (Default.Default Type'anyPointer'unconstrained) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Type'anyPointer'unconstrained)) where
+instance (Classes.FromStruct Message.Const Type'anyPointer'unconstrained) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Type'anyPointer'unconstrained)) where
-    type Cerial msg (Type'anyPointer'unconstrained) = (Capnp.Gen.ById.Xa93fc509624c72d9.Type'anyPointer'unconstrained msg)
+instance (Classes.Decerialize Type'anyPointer'unconstrained) where
+    type Cerial msg Type'anyPointer'unconstrained = (Capnp.Gen.ById.Xa93fc509624c72d9.Type'anyPointer'unconstrained msg)
     decerialize raw = (do
         raw <- (Capnp.Gen.ById.Xa93fc509624c72d9.get_Type'anyPointer'unconstrained' raw)
         case raw of
@@ -1122,7 +1123,7 @@
             (Capnp.Gen.ById.Xa93fc509624c72d9.Type'anyPointer'unconstrained'unknown' tag) ->
                 (Std_.pure (Type'anyPointer'unconstrained'unknown' tag))
         )
-instance (Classes.Marshal s (Type'anyPointer'unconstrained)) where
+instance (Classes.Marshal s Type'anyPointer'unconstrained) where
     marshalInto raw_ value_ = case value_ of
         (Type'anyPointer'unconstrained'anyKind) ->
             (Capnp.Gen.ById.Xa93fc509624c72d9.set_Type'anyPointer'unconstrained'anyKind raw_)
@@ -1141,15 +1142,15 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Type'anyPointer'parameter)) where
+instance (Default.Default Type'anyPointer'parameter) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Type'anyPointer'parameter)) where
+instance (Classes.FromStruct Message.Const Type'anyPointer'parameter) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Type'anyPointer'parameter)) where
-    type Cerial msg (Type'anyPointer'parameter) = (Capnp.Gen.ById.Xa93fc509624c72d9.Type'anyPointer'parameter msg)
+instance (Classes.Decerialize Type'anyPointer'parameter) where
+    type Cerial msg Type'anyPointer'parameter = (Capnp.Gen.ById.Xa93fc509624c72d9.Type'anyPointer'parameter msg)
     decerialize raw = (Type'anyPointer'parameter' <$> (Capnp.Gen.ById.Xa93fc509624c72d9.get_Type'anyPointer'parameter'scopeId raw)
                                                   <*> (Capnp.Gen.ById.Xa93fc509624c72d9.get_Type'anyPointer'parameter'parameterIndex raw))
-instance (Classes.Marshal s (Type'anyPointer'parameter)) where
+instance (Classes.Marshal s Type'anyPointer'parameter) where
     marshalInto raw_ value_ = case value_ of
         Type'anyPointer'parameter'{..} ->
             (do
@@ -1163,14 +1164,14 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Type'anyPointer'implicitMethodParameter)) where
+instance (Default.Default Type'anyPointer'implicitMethodParameter) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Type'anyPointer'implicitMethodParameter)) where
+instance (Classes.FromStruct Message.Const Type'anyPointer'implicitMethodParameter) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Type'anyPointer'implicitMethodParameter)) where
-    type Cerial msg (Type'anyPointer'implicitMethodParameter) = (Capnp.Gen.ById.Xa93fc509624c72d9.Type'anyPointer'implicitMethodParameter msg)
+instance (Classes.Decerialize Type'anyPointer'implicitMethodParameter) where
+    type Cerial msg Type'anyPointer'implicitMethodParameter = (Capnp.Gen.ById.Xa93fc509624c72d9.Type'anyPointer'implicitMethodParameter msg)
     decerialize raw = (Type'anyPointer'implicitMethodParameter' <$> (Capnp.Gen.ById.Xa93fc509624c72d9.get_Type'anyPointer'implicitMethodParameter'parameterIndex raw))
-instance (Classes.Marshal s (Type'anyPointer'implicitMethodParameter)) where
+instance (Classes.Marshal s Type'anyPointer'implicitMethodParameter) where
     marshalInto raw_ value_ = case value_ of
         Type'anyPointer'implicitMethodParameter'{..} ->
             (do
@@ -1183,34 +1184,34 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Brand)) where
+instance (Default.Default Brand) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Brand)) where
+instance (Classes.FromStruct Message.Const Brand) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Brand)) where
-    type Cerial msg (Brand) = (Capnp.Gen.ById.Xa93fc509624c72d9.Brand msg)
+instance (Classes.Decerialize Brand) where
+    type Cerial msg Brand = (Capnp.Gen.ById.Xa93fc509624c72d9.Brand msg)
     decerialize raw = (Brand <$> ((Capnp.Gen.ById.Xa93fc509624c72d9.get_Brand'scopes raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Brand)) where
+instance (Classes.Marshal s Brand) where
     marshalInto raw_ value_ = case value_ of
         Brand{..} ->
             (do
                 ((Classes.cerialize (Untyped.message raw_) scopes) >>= (Capnp.Gen.ById.Xa93fc509624c72d9.set_Brand'scopes raw_))
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (Brand))
-instance (Classes.Cerialize s (V.Vector (Brand))) where
+instance (Classes.Cerialize s Brand)
+instance (Classes.Cerialize s (V.Vector Brand)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Brand)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Brand))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Brand))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Brand)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Brand)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Brand))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Brand))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Brand)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Brand)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Brand))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Brand))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Brand)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data Brand'Scope 
     = Brand'Scope 
@@ -1219,15 +1220,15 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Brand'Scope)) where
+instance (Default.Default Brand'Scope) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Brand'Scope)) where
+instance (Classes.FromStruct Message.Const Brand'Scope) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Brand'Scope)) where
-    type Cerial msg (Brand'Scope) = (Capnp.Gen.ById.Xa93fc509624c72d9.Brand'Scope msg)
+instance (Classes.Decerialize Brand'Scope) where
+    type Cerial msg Brand'Scope = (Capnp.Gen.ById.Xa93fc509624c72d9.Brand'Scope msg)
     decerialize raw = (Brand'Scope <$> (Capnp.Gen.ById.Xa93fc509624c72d9.get_Brand'Scope'scopeId raw)
                                    <*> (Classes.decerialize raw))
-instance (Classes.Marshal s (Brand'Scope)) where
+instance (Classes.Marshal s Brand'Scope) where
     marshalInto raw_ value_ = case value_ of
         Brand'Scope{..} ->
             (do
@@ -1237,20 +1238,20 @@
                     )
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (Brand'Scope))
-instance (Classes.Cerialize s (V.Vector (Brand'Scope))) where
+instance (Classes.Cerialize s Brand'Scope)
+instance (Classes.Cerialize s (V.Vector Brand'Scope)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Brand'Scope)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Brand'Scope))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Brand'Scope))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Brand'Scope)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Brand'Scope)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Brand'Scope))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Brand'Scope))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Brand'Scope)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Brand'Scope)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Brand'Scope))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Brand'Scope))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Brand'Scope)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data Brand'Scope' 
     = Brand'Scope'bind (V.Vector Brand'Binding)
@@ -1259,12 +1260,12 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Brand'Scope')) where
+instance (Default.Default Brand'Scope') where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Brand'Scope')) where
+instance (Classes.FromStruct Message.Const Brand'Scope') where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Brand'Scope')) where
-    type Cerial msg (Brand'Scope') = (Capnp.Gen.ById.Xa93fc509624c72d9.Brand'Scope msg)
+instance (Classes.Decerialize Brand'Scope') where
+    type Cerial msg Brand'Scope' = (Capnp.Gen.ById.Xa93fc509624c72d9.Brand'Scope msg)
     decerialize raw = (do
         raw <- (Capnp.Gen.ById.Xa93fc509624c72d9.get_Brand'Scope' raw)
         case raw of
@@ -1275,7 +1276,7 @@
             (Capnp.Gen.ById.Xa93fc509624c72d9.Brand'Scope'unknown' tag) ->
                 (Std_.pure (Brand'Scope'unknown' tag))
         )
-instance (Classes.Marshal s (Brand'Scope')) where
+instance (Classes.Marshal s Brand'Scope') where
     marshalInto raw_ value_ = case value_ of
         (Brand'Scope'bind arg_) ->
             ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.Xa93fc509624c72d9.set_Brand'Scope'bind raw_))
@@ -1290,12 +1291,12 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Brand'Binding)) where
+instance (Default.Default Brand'Binding) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Brand'Binding)) where
+instance (Classes.FromStruct Message.Const Brand'Binding) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Brand'Binding)) where
-    type Cerial msg (Brand'Binding) = (Capnp.Gen.ById.Xa93fc509624c72d9.Brand'Binding msg)
+instance (Classes.Decerialize Brand'Binding) where
+    type Cerial msg Brand'Binding = (Capnp.Gen.ById.Xa93fc509624c72d9.Brand'Binding msg)
     decerialize raw = (do
         raw <- (Capnp.Gen.ById.Xa93fc509624c72d9.get_Brand'Binding' raw)
         case raw of
@@ -1306,7 +1307,7 @@
             (Capnp.Gen.ById.Xa93fc509624c72d9.Brand'Binding'unknown' tag) ->
                 (Std_.pure (Brand'Binding'unknown' tag))
         )
-instance (Classes.Marshal s (Brand'Binding)) where
+instance (Classes.Marshal s Brand'Binding) where
     marshalInto raw_ value_ = case value_ of
         (Brand'Binding'unbound) ->
             (Capnp.Gen.ById.Xa93fc509624c72d9.set_Brand'Binding'unbound raw_)
@@ -1314,20 +1315,20 @@
             ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.Xa93fc509624c72d9.set_Brand'Binding'type_ raw_))
         (Brand'Binding'unknown' tag) ->
             (Capnp.Gen.ById.Xa93fc509624c72d9.set_Brand'Binding'unknown' raw_ tag)
-instance (Classes.Cerialize s (Brand'Binding))
-instance (Classes.Cerialize s (V.Vector (Brand'Binding))) where
+instance (Classes.Cerialize s Brand'Binding)
+instance (Classes.Cerialize s (V.Vector Brand'Binding)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Brand'Binding)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Brand'Binding))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Brand'Binding))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Brand'Binding)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Brand'Binding)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Brand'Binding))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Brand'Binding))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Brand'Binding)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Brand'Binding)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Brand'Binding))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Brand'Binding))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Brand'Binding)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data Value 
     = Value'void 
@@ -1353,12 +1354,12 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Value)) where
+instance (Default.Default Value) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Value)) where
+instance (Classes.FromStruct Message.Const Value) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Value)) where
-    type Cerial msg (Value) = (Capnp.Gen.ById.Xa93fc509624c72d9.Value msg)
+instance (Classes.Decerialize Value) where
+    type Cerial msg Value = (Capnp.Gen.ById.Xa93fc509624c72d9.Value msg)
     decerialize raw = (do
         raw <- (Capnp.Gen.ById.Xa93fc509624c72d9.get_Value' raw)
         case raw of
@@ -1403,7 +1404,7 @@
             (Capnp.Gen.ById.Xa93fc509624c72d9.Value'unknown' tag) ->
                 (Std_.pure (Value'unknown' tag))
         )
-instance (Classes.Marshal s (Value)) where
+instance (Classes.Marshal s Value) where
     marshalInto raw_ value_ = case value_ of
         (Value'void) ->
             (Capnp.Gen.ById.Xa93fc509624c72d9.set_Value'void raw_)
@@ -1445,20 +1446,20 @@
             ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.Xa93fc509624c72d9.set_Value'anyPointer raw_))
         (Value'unknown' tag) ->
             (Capnp.Gen.ById.Xa93fc509624c72d9.set_Value'unknown' raw_ tag)
-instance (Classes.Cerialize s (Value))
-instance (Classes.Cerialize s (V.Vector (Value))) where
+instance (Classes.Cerialize s Value)
+instance (Classes.Cerialize s (V.Vector Value)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Value)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Value))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Value))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Value)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Value)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Value))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Value))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Value)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Value)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Value))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Value))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Value)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data Annotation 
     = Annotation 
@@ -1468,16 +1469,16 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Annotation)) where
+instance (Default.Default Annotation) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Annotation)) where
+instance (Classes.FromStruct Message.Const Annotation) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Annotation)) where
-    type Cerial msg (Annotation) = (Capnp.Gen.ById.Xa93fc509624c72d9.Annotation msg)
+instance (Classes.Decerialize Annotation) where
+    type Cerial msg Annotation = (Capnp.Gen.ById.Xa93fc509624c72d9.Annotation msg)
     decerialize raw = (Annotation <$> (Capnp.Gen.ById.Xa93fc509624c72d9.get_Annotation'id raw)
                                   <*> ((Capnp.Gen.ById.Xa93fc509624c72d9.get_Annotation'value raw) >>= Classes.decerialize)
                                   <*> ((Capnp.Gen.ById.Xa93fc509624c72d9.get_Annotation'brand raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Annotation)) where
+instance (Classes.Marshal s Annotation) where
     marshalInto raw_ value_ = case value_ of
         Annotation{..} ->
             (do
@@ -1486,20 +1487,20 @@
                 ((Classes.cerialize (Untyped.message raw_) brand) >>= (Capnp.Gen.ById.Xa93fc509624c72d9.set_Annotation'brand raw_))
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (Annotation))
-instance (Classes.Cerialize s (V.Vector (Annotation))) where
+instance (Classes.Cerialize s Annotation)
+instance (Classes.Cerialize s (V.Vector Annotation)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Annotation)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector Annotation))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Annotation))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Annotation)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Annotation)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Annotation))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Annotation))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Annotation)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Annotation)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Annotation))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Annotation))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Annotation)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data CapnpVersion 
     = CapnpVersion 
@@ -1509,16 +1510,16 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (CapnpVersion)) where
+instance (Default.Default CapnpVersion) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (CapnpVersion)) where
+instance (Classes.FromStruct Message.Const CapnpVersion) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (CapnpVersion)) where
-    type Cerial msg (CapnpVersion) = (Capnp.Gen.ById.Xa93fc509624c72d9.CapnpVersion msg)
+instance (Classes.Decerialize CapnpVersion) where
+    type Cerial msg CapnpVersion = (Capnp.Gen.ById.Xa93fc509624c72d9.CapnpVersion msg)
     decerialize raw = (CapnpVersion <$> (Capnp.Gen.ById.Xa93fc509624c72d9.get_CapnpVersion'major raw)
                                     <*> (Capnp.Gen.ById.Xa93fc509624c72d9.get_CapnpVersion'minor raw)
                                     <*> (Capnp.Gen.ById.Xa93fc509624c72d9.get_CapnpVersion'micro raw))
-instance (Classes.Marshal s (CapnpVersion)) where
+instance (Classes.Marshal s CapnpVersion) where
     marshalInto raw_ value_ = case value_ of
         CapnpVersion{..} ->
             (do
@@ -1527,20 +1528,20 @@
                 (Capnp.Gen.ById.Xa93fc509624c72d9.set_CapnpVersion'micro raw_ micro)
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (CapnpVersion))
-instance (Classes.Cerialize s (V.Vector (CapnpVersion))) where
+instance (Classes.Cerialize s CapnpVersion)
+instance (Classes.Cerialize s (V.Vector CapnpVersion)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (CapnpVersion)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector CapnpVersion))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (CapnpVersion))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector CapnpVersion)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (CapnpVersion)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector CapnpVersion))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (CapnpVersion))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector CapnpVersion)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (CapnpVersion)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector CapnpVersion))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (CapnpVersion))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector CapnpVersion)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data CodeGeneratorRequest 
     = CodeGeneratorRequest 
@@ -1551,17 +1552,17 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (CodeGeneratorRequest)) where
+instance (Default.Default CodeGeneratorRequest) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (CodeGeneratorRequest)) where
+instance (Classes.FromStruct Message.Const CodeGeneratorRequest) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (CodeGeneratorRequest)) where
-    type Cerial msg (CodeGeneratorRequest) = (Capnp.Gen.ById.Xa93fc509624c72d9.CodeGeneratorRequest msg)
+instance (Classes.Decerialize CodeGeneratorRequest) where
+    type Cerial msg CodeGeneratorRequest = (Capnp.Gen.ById.Xa93fc509624c72d9.CodeGeneratorRequest msg)
     decerialize raw = (CodeGeneratorRequest <$> ((Capnp.Gen.ById.Xa93fc509624c72d9.get_CodeGeneratorRequest'nodes raw) >>= Classes.decerialize)
                                             <*> ((Capnp.Gen.ById.Xa93fc509624c72d9.get_CodeGeneratorRequest'requestedFiles raw) >>= Classes.decerialize)
                                             <*> ((Capnp.Gen.ById.Xa93fc509624c72d9.get_CodeGeneratorRequest'capnpVersion raw) >>= Classes.decerialize)
                                             <*> ((Capnp.Gen.ById.Xa93fc509624c72d9.get_CodeGeneratorRequest'sourceInfo raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (CodeGeneratorRequest)) where
+instance (Classes.Marshal s CodeGeneratorRequest) where
     marshalInto raw_ value_ = case value_ of
         CodeGeneratorRequest{..} ->
             (do
@@ -1571,20 +1572,20 @@
                 ((Classes.cerialize (Untyped.message raw_) sourceInfo) >>= (Capnp.Gen.ById.Xa93fc509624c72d9.set_CodeGeneratorRequest'sourceInfo raw_))
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (CodeGeneratorRequest))
-instance (Classes.Cerialize s (V.Vector (CodeGeneratorRequest))) where
+instance (Classes.Cerialize s CodeGeneratorRequest)
+instance (Classes.Cerialize s (V.Vector CodeGeneratorRequest)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (CodeGeneratorRequest)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector CodeGeneratorRequest))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (CodeGeneratorRequest))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector CodeGeneratorRequest)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (CodeGeneratorRequest)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector CodeGeneratorRequest))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (CodeGeneratorRequest))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector CodeGeneratorRequest)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (CodeGeneratorRequest)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector CodeGeneratorRequest))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (CodeGeneratorRequest))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector CodeGeneratorRequest)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data CodeGeneratorRequest'RequestedFile 
     = CodeGeneratorRequest'RequestedFile 
@@ -1594,16 +1595,16 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (CodeGeneratorRequest'RequestedFile)) where
+instance (Default.Default CodeGeneratorRequest'RequestedFile) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (CodeGeneratorRequest'RequestedFile)) where
+instance (Classes.FromStruct Message.Const CodeGeneratorRequest'RequestedFile) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (CodeGeneratorRequest'RequestedFile)) where
-    type Cerial msg (CodeGeneratorRequest'RequestedFile) = (Capnp.Gen.ById.Xa93fc509624c72d9.CodeGeneratorRequest'RequestedFile msg)
+instance (Classes.Decerialize CodeGeneratorRequest'RequestedFile) where
+    type Cerial msg CodeGeneratorRequest'RequestedFile = (Capnp.Gen.ById.Xa93fc509624c72d9.CodeGeneratorRequest'RequestedFile msg)
     decerialize raw = (CodeGeneratorRequest'RequestedFile <$> (Capnp.Gen.ById.Xa93fc509624c72d9.get_CodeGeneratorRequest'RequestedFile'id raw)
                                                           <*> ((Capnp.Gen.ById.Xa93fc509624c72d9.get_CodeGeneratorRequest'RequestedFile'filename raw) >>= Classes.decerialize)
                                                           <*> ((Capnp.Gen.ById.Xa93fc509624c72d9.get_CodeGeneratorRequest'RequestedFile'imports raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (CodeGeneratorRequest'RequestedFile)) where
+instance (Classes.Marshal s CodeGeneratorRequest'RequestedFile) where
     marshalInto raw_ value_ = case value_ of
         CodeGeneratorRequest'RequestedFile{..} ->
             (do
@@ -1612,20 +1613,20 @@
                 ((Classes.cerialize (Untyped.message raw_) imports) >>= (Capnp.Gen.ById.Xa93fc509624c72d9.set_CodeGeneratorRequest'RequestedFile'imports raw_))
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (CodeGeneratorRequest'RequestedFile))
-instance (Classes.Cerialize s (V.Vector (CodeGeneratorRequest'RequestedFile))) where
+instance (Classes.Cerialize s CodeGeneratorRequest'RequestedFile)
+instance (Classes.Cerialize s (V.Vector CodeGeneratorRequest'RequestedFile)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (CodeGeneratorRequest'RequestedFile)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector CodeGeneratorRequest'RequestedFile))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (CodeGeneratorRequest'RequestedFile))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector CodeGeneratorRequest'RequestedFile)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (CodeGeneratorRequest'RequestedFile)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector CodeGeneratorRequest'RequestedFile))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (CodeGeneratorRequest'RequestedFile))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector CodeGeneratorRequest'RequestedFile)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (CodeGeneratorRequest'RequestedFile)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector CodeGeneratorRequest'RequestedFile))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (CodeGeneratorRequest'RequestedFile))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector CodeGeneratorRequest'RequestedFile)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 data CodeGeneratorRequest'RequestedFile'Import 
     = CodeGeneratorRequest'RequestedFile'Import 
@@ -1634,15 +1635,15 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (CodeGeneratorRequest'RequestedFile'Import)) where
+instance (Default.Default CodeGeneratorRequest'RequestedFile'Import) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (CodeGeneratorRequest'RequestedFile'Import)) where
+instance (Classes.FromStruct Message.Const CodeGeneratorRequest'RequestedFile'Import) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (CodeGeneratorRequest'RequestedFile'Import)) where
-    type Cerial msg (CodeGeneratorRequest'RequestedFile'Import) = (Capnp.Gen.ById.Xa93fc509624c72d9.CodeGeneratorRequest'RequestedFile'Import msg)
+instance (Classes.Decerialize CodeGeneratorRequest'RequestedFile'Import) where
+    type Cerial msg CodeGeneratorRequest'RequestedFile'Import = (Capnp.Gen.ById.Xa93fc509624c72d9.CodeGeneratorRequest'RequestedFile'Import msg)
     decerialize raw = (CodeGeneratorRequest'RequestedFile'Import <$> (Capnp.Gen.ById.Xa93fc509624c72d9.get_CodeGeneratorRequest'RequestedFile'Import'id raw)
                                                                  <*> ((Capnp.Gen.ById.Xa93fc509624c72d9.get_CodeGeneratorRequest'RequestedFile'Import'name raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (CodeGeneratorRequest'RequestedFile'Import)) where
+instance (Classes.Marshal s CodeGeneratorRequest'RequestedFile'Import) where
     marshalInto raw_ value_ = case value_ of
         CodeGeneratorRequest'RequestedFile'Import{..} ->
             (do
@@ -1650,20 +1651,20 @@
                 ((Classes.cerialize (Untyped.message raw_) name) >>= (Capnp.Gen.ById.Xa93fc509624c72d9.set_CodeGeneratorRequest'RequestedFile'Import'name raw_))
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (CodeGeneratorRequest'RequestedFile'Import))
-instance (Classes.Cerialize s (V.Vector (CodeGeneratorRequest'RequestedFile'Import))) where
+instance (Classes.Cerialize s CodeGeneratorRequest'RequestedFile'Import)
+instance (Classes.Cerialize s (V.Vector CodeGeneratorRequest'RequestedFile'Import)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (CodeGeneratorRequest'RequestedFile'Import)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector CodeGeneratorRequest'RequestedFile'Import))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (CodeGeneratorRequest'RequestedFile'Import))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector CodeGeneratorRequest'RequestedFile'Import)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (CodeGeneratorRequest'RequestedFile'Import)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector CodeGeneratorRequest'RequestedFile'Import))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (CodeGeneratorRequest'RequestedFile'Import))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector CodeGeneratorRequest'RequestedFile'Import)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (CodeGeneratorRequest'RequestedFile'Import)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector CodeGeneratorRequest'RequestedFile'Import))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (CodeGeneratorRequest'RequestedFile'Import))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector CodeGeneratorRequest'RequestedFile'Import)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 instance (Classes.Decerialize Capnp.Gen.ById.Xa93fc509624c72d9.ElementSize) where
     type Cerial msg Capnp.Gen.ById.Xa93fc509624c72d9.ElementSize = Capnp.Gen.ById.Xa93fc509624c72d9.ElementSize
diff --git a/gen/lib/Capnp/Gen/Capnp/Stream.hs b/gen/lib/Capnp/Gen/Capnp/Stream.hs
--- a/gen/lib/Capnp/Gen/Capnp/Stream.hs
+++ b/gen/lib/Capnp/Gen/Capnp/Stream.hs
@@ -10,6 +10,7 @@
 {-# OPTIONS_GHC -Wno-unused-matches #-}
 {-# OPTIONS_GHC -Wno-orphans #-}
 {-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
 module Capnp.Gen.Capnp.Stream where
 import qualified Capnp.Message as Message
 import qualified Capnp.Untyped as Untyped
diff --git a/gen/lib/Capnp/Gen/Capnp/Stream/New.hs b/gen/lib/Capnp/Gen/Capnp/Stream/New.hs
new file mode 100644
--- /dev/null
+++ b/gen/lib/Capnp/Gen/Capnp/Stream/New.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE EmptyDataDeriving #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE UndecidableInstances #-}
+{-# LANGUAGE OverloadedLabels #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE StandaloneDeriving #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# OPTIONS_GHC -Wno-unused-imports #-}
+{-# OPTIONS_GHC -Wno-dodgy-exports #-}
+{-# OPTIONS_GHC -Wno-unused-matches #-}
+{-# OPTIONS_GHC -Wno-orphans #-}
+{-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
+module Capnp.Gen.Capnp.Stream.New where
+import qualified Capnp.Repr as R
+import qualified Capnp.Repr.Parsed as RP
+import qualified Capnp.New.Basics as Basics
+import qualified GHC.OverloadedLabels as OL
+import qualified Capnp.GenHelpers.New as GH
+import qualified Capnp.New.Classes as C
+import qualified GHC.Generics as Generics
+import qualified Capnp.GenHelpers.ReExports.Data.ByteString as BS
+import qualified Prelude as Std_
+import qualified Data.Word as Std_
+import qualified Data.Int as Std_
+import Prelude ((<$>), (<*>), (>>=))
+data StreamResult 
+type instance (R.ReprFor StreamResult) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct StreamResult) where
+    numStructWords  = 0
+    numStructPtrs  = 0
+instance (C.Allocate StreamResult) where
+    type AllocHint StreamResult = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc StreamResult (C.Parsed StreamResult))
+instance (C.AllocateList StreamResult) where
+    type ListAllocHint StreamResult = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc StreamResult (C.Parsed StreamResult))
+data instance C.Parsed StreamResult
+    = StreamResult 
+        {}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed StreamResult))
+deriving instance (Std_.Eq (C.Parsed StreamResult))
+instance (C.Parse StreamResult (C.Parsed StreamResult)) where
+    parse raw_ = (Std_.pure StreamResult)
+instance (C.Marshal StreamResult (C.Parsed StreamResult)) where
+    marshalInto _raw (StreamResult) = (Std_.pure ())
diff --git a/gen/lib/Capnp/Gen/Capnp/Stream/Pure.hs b/gen/lib/Capnp/Gen/Capnp/Stream/Pure.hs
--- a/gen/lib/Capnp/Gen/Capnp/Stream/Pure.hs
+++ b/gen/lib/Capnp/Gen/Capnp/Stream/Pure.hs
@@ -13,6 +13,7 @@
 {-# OPTIONS_GHC -Wno-unused-matches #-}
 {-# OPTIONS_GHC -Wno-orphans #-}
 {-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
 module Capnp.Gen.Capnp.Stream.Pure(StreamResult(..)) where
 import qualified Capnp.GenHelpers.ReExports.Data.Vector as V
 import qualified Capnp.GenHelpers.ReExports.Data.Text as T
@@ -37,31 +38,31 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (StreamResult)) where
+instance (Default.Default StreamResult) where
     def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (StreamResult)) where
+instance (Classes.FromStruct Message.Const StreamResult) where
     fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (StreamResult)) where
-    type Cerial msg (StreamResult) = (Capnp.Gen.ById.X86c366a91393f3f8.StreamResult msg)
+instance (Classes.Decerialize StreamResult) where
+    type Cerial msg StreamResult = (Capnp.Gen.ById.X86c366a91393f3f8.StreamResult msg)
     decerialize raw = (Std_.pure StreamResult)
-instance (Classes.Marshal s (StreamResult)) where
+instance (Classes.Marshal s StreamResult) where
     marshalInto raw_ value_ = case value_ of
         (StreamResult) ->
             (do
                 (Std_.pure ())
                 )
-instance (Classes.Cerialize s (StreamResult))
-instance (Classes.Cerialize s (V.Vector (StreamResult))) where
+instance (Classes.Cerialize s StreamResult)
+instance (Classes.Cerialize s (V.Vector StreamResult)) where
     cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (StreamResult)))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector StreamResult))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (StreamResult))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector StreamResult)))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (StreamResult)))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector StreamResult))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (StreamResult))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector StreamResult)))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (StreamResult)))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector StreamResult))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (StreamResult))))))))) where
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector StreamResult)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
diff --git a/gen/tests/Capnp/Gen/Aircraft/New.hs b/gen/tests/Capnp/Gen/Aircraft/New.hs
new file mode 100644
--- /dev/null
+++ b/gen/tests/Capnp/Gen/Aircraft/New.hs
@@ -0,0 +1,2544 @@
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE EmptyDataDeriving #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE UndecidableInstances #-}
+{-# LANGUAGE OverloadedLabels #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE StandaloneDeriving #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# OPTIONS_GHC -Wno-unused-imports #-}
+{-# OPTIONS_GHC -Wno-dodgy-exports #-}
+{-# OPTIONS_GHC -Wno-unused-matches #-}
+{-# OPTIONS_GHC -Wno-orphans #-}
+{-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
+module Capnp.Gen.Aircraft.New where
+import qualified Capnp.Repr as R
+import qualified Capnp.Repr.Parsed as RP
+import qualified Capnp.New.Basics as Basics
+import qualified GHC.OverloadedLabels as OL
+import qualified Capnp.GenHelpers.New as GH
+import qualified Capnp.New.Classes as C
+import qualified GHC.Generics as Generics
+import qualified Capnp.GenHelpers.ReExports.Data.ByteString as BS
+import qualified Prelude as Std_
+import qualified Data.Word as Std_
+import qualified Data.Int as Std_
+import Prelude ((<$>), (<*>), (>>=))
+constDate :: (R.Raw GH.Const Zdate)
+constDate  = (GH.getPtrConst ("\NUL\NUL\NUL\NUL\ETX\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\SOH\NUL\NUL\NUL\NUL\NUL\SOH\NUL\NUL\NUL\223\a\b\ESC\NUL\NUL\NUL\NUL" :: BS.ByteString))
+constList :: (R.Raw GH.Const (R.List Zdate))
+constList  = (GH.getPtrConst ("\NUL\NUL\NUL\NUL\ENQ\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\SOH\NUL\SOH\NUL\NUL\NUL\ETB\NUL\NUL\NUL\b\NUL\NUL\NUL\SOH\NUL\NUL\NUL\223\a\b\ESC\NUL\NUL\NUL\NUL\223\a\b\FS\NUL\NUL\NUL\NUL" :: BS.ByteString))
+constEnum :: Airport
+constEnum  = (C.fromWord 1)
+data Zdate 
+type instance (R.ReprFor Zdate) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Zdate) where
+    numStructWords  = 1
+    numStructPtrs  = 0
+instance (C.Allocate Zdate) where
+    type AllocHint Zdate = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Zdate (C.Parsed Zdate))
+instance (C.AllocateList Zdate) where
+    type ListAllocHint Zdate = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Zdate (C.Parsed Zdate))
+data instance C.Parsed Zdate
+    = Zdate 
+        {year :: (RP.Parsed Std_.Int16)
+        ,month :: (RP.Parsed Std_.Word8)
+        ,day :: (RP.Parsed Std_.Word8)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Zdate))
+deriving instance (Std_.Eq (C.Parsed Zdate))
+instance (C.Parse Zdate (C.Parsed Zdate)) where
+    parse raw_ = (Zdate <$> (GH.parseField #year raw_)
+                        <*> (GH.parseField #month raw_)
+                        <*> (GH.parseField #day raw_))
+instance (C.Marshal Zdate (C.Parsed Zdate)) where
+    marshalInto raw_ Zdate{..} = (do
+        (GH.encodeField #year year raw_)
+        (GH.encodeField #month month raw_)
+        (GH.encodeField #day day raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "year" GH.Slot Zdate Std_.Int16) where
+    fieldByLabel  = (GH.dataField 0 0 16 0)
+instance (GH.HasField "month" GH.Slot Zdate Std_.Word8) where
+    fieldByLabel  = (GH.dataField 16 0 8 0)
+instance (GH.HasField "day" GH.Slot Zdate Std_.Word8) where
+    fieldByLabel  = (GH.dataField 24 0 8 0)
+data Zdata 
+type instance (R.ReprFor Zdata) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Zdata) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance (C.Allocate Zdata) where
+    type AllocHint Zdata = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Zdata (C.Parsed Zdata))
+instance (C.AllocateList Zdata) where
+    type ListAllocHint Zdata = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Zdata (C.Parsed Zdata))
+data instance C.Parsed Zdata
+    = Zdata 
+        {data_ :: (RP.Parsed Basics.Data)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Zdata))
+deriving instance (Std_.Eq (C.Parsed Zdata))
+instance (C.Parse Zdata (C.Parsed Zdata)) where
+    parse raw_ = (Zdata <$> (GH.parseField #data_ raw_))
+instance (C.Marshal Zdata (C.Parsed Zdata)) where
+    marshalInto raw_ Zdata{..} = (do
+        (GH.encodeField #data_ data_ raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "data_" GH.Slot Zdata Basics.Data) where
+    fieldByLabel  = (GH.ptrField 0)
+data Airport 
+    = Airport'none 
+    | Airport'jfk 
+    | Airport'lax 
+    | Airport'sfo 
+    | Airport'luv 
+    | Airport'dfw 
+    | Airport'test 
+    | Airport'unknown' Std_.Word16
+    deriving(Std_.Eq,Std_.Show)
+type instance (R.ReprFor Airport) = (R.Data R.Sz16)
+instance (Std_.Enum Airport) where
+    toEnum n_ = case n_ of
+        0 ->
+            Airport'none
+        1 ->
+            Airport'jfk
+        2 ->
+            Airport'lax
+        3 ->
+            Airport'sfo
+        4 ->
+            Airport'luv
+        5 ->
+            Airport'dfw
+        6 ->
+            Airport'test
+        tag_ ->
+            (Airport'unknown' (Std_.fromIntegral tag_))
+    fromEnum value_ = case value_ of
+        (Airport'none) ->
+            0
+        (Airport'jfk) ->
+            1
+        (Airport'lax) ->
+            2
+        (Airport'sfo) ->
+            3
+        (Airport'luv) ->
+            4
+        (Airport'dfw) ->
+            5
+        (Airport'test) ->
+            6
+        (Airport'unknown' tag_) ->
+            (Std_.fromIntegral tag_)
+instance (C.IsWord Airport) where
+    fromWord w_ = (Std_.toEnum (Std_.fromIntegral w_))
+    toWord v_ = (Std_.fromIntegral (Std_.fromEnum v_))
+instance (C.Parse Airport Airport) where
+    parse  = GH.parseEnum
+    encode  = GH.encodeEnum
+instance (C.AllocateList Airport) where
+    type ListAllocHint Airport = Std_.Int
+instance (C.EstimateListAlloc Airport Airport)
+data PlaneBase 
+type instance (R.ReprFor PlaneBase) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct PlaneBase) where
+    numStructWords  = 4
+    numStructPtrs  = 2
+instance (C.Allocate PlaneBase) where
+    type AllocHint PlaneBase = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc PlaneBase (C.Parsed PlaneBase))
+instance (C.AllocateList PlaneBase) where
+    type ListAllocHint PlaneBase = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc PlaneBase (C.Parsed PlaneBase))
+data instance C.Parsed PlaneBase
+    = PlaneBase 
+        {name :: (RP.Parsed Basics.Text)
+        ,homes :: (RP.Parsed (R.List Airport))
+        ,rating :: (RP.Parsed Std_.Int64)
+        ,canFly :: (RP.Parsed Std_.Bool)
+        ,capacity :: (RP.Parsed Std_.Int64)
+        ,maxSpeed :: (RP.Parsed Std_.Double)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed PlaneBase))
+deriving instance (Std_.Eq (C.Parsed PlaneBase))
+instance (C.Parse PlaneBase (C.Parsed PlaneBase)) where
+    parse raw_ = (PlaneBase <$> (GH.parseField #name raw_)
+                            <*> (GH.parseField #homes raw_)
+                            <*> (GH.parseField #rating raw_)
+                            <*> (GH.parseField #canFly raw_)
+                            <*> (GH.parseField #capacity raw_)
+                            <*> (GH.parseField #maxSpeed raw_))
+instance (C.Marshal PlaneBase (C.Parsed PlaneBase)) where
+    marshalInto raw_ PlaneBase{..} = (do
+        (GH.encodeField #name name raw_)
+        (GH.encodeField #homes homes raw_)
+        (GH.encodeField #rating rating raw_)
+        (GH.encodeField #canFly canFly raw_)
+        (GH.encodeField #capacity capacity raw_)
+        (GH.encodeField #maxSpeed maxSpeed raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "name" GH.Slot PlaneBase Basics.Text) where
+    fieldByLabel  = (GH.ptrField 0)
+instance (GH.HasField "homes" GH.Slot PlaneBase (R.List Airport)) where
+    fieldByLabel  = (GH.ptrField 1)
+instance (GH.HasField "rating" GH.Slot PlaneBase Std_.Int64) where
+    fieldByLabel  = (GH.dataField 0 0 64 0)
+instance (GH.HasField "canFly" GH.Slot PlaneBase Std_.Bool) where
+    fieldByLabel  = (GH.dataField 0 1 1 0)
+instance (GH.HasField "capacity" GH.Slot PlaneBase Std_.Int64) where
+    fieldByLabel  = (GH.dataField 0 2 64 0)
+instance (GH.HasField "maxSpeed" GH.Slot PlaneBase Std_.Double) where
+    fieldByLabel  = (GH.dataField 0 3 64 0)
+data B737 
+type instance (R.ReprFor B737) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct B737) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance (C.Allocate B737) where
+    type AllocHint B737 = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc B737 (C.Parsed B737))
+instance (C.AllocateList B737) where
+    type ListAllocHint B737 = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc B737 (C.Parsed B737))
+data instance C.Parsed B737
+    = B737 
+        {base :: (RP.Parsed PlaneBase)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed B737))
+deriving instance (Std_.Eq (C.Parsed B737))
+instance (C.Parse B737 (C.Parsed B737)) where
+    parse raw_ = (B737 <$> (GH.parseField #base raw_))
+instance (C.Marshal B737 (C.Parsed B737)) where
+    marshalInto raw_ B737{..} = (do
+        (GH.encodeField #base base raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "base" GH.Slot B737 PlaneBase) where
+    fieldByLabel  = (GH.ptrField 0)
+data A320 
+type instance (R.ReprFor A320) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct A320) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance (C.Allocate A320) where
+    type AllocHint A320 = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc A320 (C.Parsed A320))
+instance (C.AllocateList A320) where
+    type ListAllocHint A320 = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc A320 (C.Parsed A320))
+data instance C.Parsed A320
+    = A320 
+        {base :: (RP.Parsed PlaneBase)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed A320))
+deriving instance (Std_.Eq (C.Parsed A320))
+instance (C.Parse A320 (C.Parsed A320)) where
+    parse raw_ = (A320 <$> (GH.parseField #base raw_))
+instance (C.Marshal A320 (C.Parsed A320)) where
+    marshalInto raw_ A320{..} = (do
+        (GH.encodeField #base base raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "base" GH.Slot A320 PlaneBase) where
+    fieldByLabel  = (GH.ptrField 0)
+data F16 
+type instance (R.ReprFor F16) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct F16) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance (C.Allocate F16) where
+    type AllocHint F16 = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc F16 (C.Parsed F16))
+instance (C.AllocateList F16) where
+    type ListAllocHint F16 = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc F16 (C.Parsed F16))
+data instance C.Parsed F16
+    = F16 
+        {base :: (RP.Parsed PlaneBase)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed F16))
+deriving instance (Std_.Eq (C.Parsed F16))
+instance (C.Parse F16 (C.Parsed F16)) where
+    parse raw_ = (F16 <$> (GH.parseField #base raw_))
+instance (C.Marshal F16 (C.Parsed F16)) where
+    marshalInto raw_ F16{..} = (do
+        (GH.encodeField #base base raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "base" GH.Slot F16 PlaneBase) where
+    fieldByLabel  = (GH.ptrField 0)
+data Regression 
+type instance (R.ReprFor Regression) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Regression) where
+    numStructWords  = 3
+    numStructPtrs  = 3
+instance (C.Allocate Regression) where
+    type AllocHint Regression = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Regression (C.Parsed Regression))
+instance (C.AllocateList Regression) where
+    type ListAllocHint Regression = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Regression (C.Parsed Regression))
+data instance C.Parsed Regression
+    = Regression 
+        {base :: (RP.Parsed PlaneBase)
+        ,b0 :: (RP.Parsed Std_.Double)
+        ,beta :: (RP.Parsed (R.List Std_.Double))
+        ,planes :: (RP.Parsed (R.List Aircraft))
+        ,ymu :: (RP.Parsed Std_.Double)
+        ,ysd :: (RP.Parsed Std_.Double)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Regression))
+deriving instance (Std_.Eq (C.Parsed Regression))
+instance (C.Parse Regression (C.Parsed Regression)) where
+    parse raw_ = (Regression <$> (GH.parseField #base raw_)
+                             <*> (GH.parseField #b0 raw_)
+                             <*> (GH.parseField #beta raw_)
+                             <*> (GH.parseField #planes raw_)
+                             <*> (GH.parseField #ymu raw_)
+                             <*> (GH.parseField #ysd raw_))
+instance (C.Marshal Regression (C.Parsed Regression)) where
+    marshalInto raw_ Regression{..} = (do
+        (GH.encodeField #base base raw_)
+        (GH.encodeField #b0 b0 raw_)
+        (GH.encodeField #beta beta raw_)
+        (GH.encodeField #planes planes raw_)
+        (GH.encodeField #ymu ymu raw_)
+        (GH.encodeField #ysd ysd raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "base" GH.Slot Regression PlaneBase) where
+    fieldByLabel  = (GH.ptrField 0)
+instance (GH.HasField "b0" GH.Slot Regression Std_.Double) where
+    fieldByLabel  = (GH.dataField 0 0 64 0)
+instance (GH.HasField "beta" GH.Slot Regression (R.List Std_.Double)) where
+    fieldByLabel  = (GH.ptrField 1)
+instance (GH.HasField "planes" GH.Slot Regression (R.List Aircraft)) where
+    fieldByLabel  = (GH.ptrField 2)
+instance (GH.HasField "ymu" GH.Slot Regression Std_.Double) where
+    fieldByLabel  = (GH.dataField 0 1 64 0)
+instance (GH.HasField "ysd" GH.Slot Regression Std_.Double) where
+    fieldByLabel  = (GH.dataField 0 2 64 0)
+data Aircraft 
+type instance (R.ReprFor Aircraft) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Aircraft) where
+    numStructWords  = 1
+    numStructPtrs  = 1
+instance (C.Allocate Aircraft) where
+    type AllocHint Aircraft = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Aircraft (C.Parsed Aircraft))
+instance (C.AllocateList Aircraft) where
+    type ListAllocHint Aircraft = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Aircraft (C.Parsed Aircraft))
+data instance C.Parsed Aircraft
+    = Aircraft 
+        {union' :: (C.Parsed (GH.Which Aircraft))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Aircraft))
+deriving instance (Std_.Eq (C.Parsed Aircraft))
+instance (C.Parse Aircraft (C.Parsed Aircraft)) where
+    parse raw_ = (Aircraft <$> (C.parse (GH.structUnion raw_)))
+instance (C.Marshal Aircraft (C.Parsed Aircraft)) where
+    marshalInto raw_ Aircraft{..} = (do
+        (C.marshalInto (GH.structUnion raw_) union')
+        )
+instance (GH.HasUnion Aircraft) where
+    unionField  = (GH.dataField 0 0 16 0)
+    data RawWhich mut_ Aircraft
+        = RW_Aircraft'void (R.Raw mut_ ())
+        | RW_Aircraft'b737 (R.Raw mut_ B737)
+        | RW_Aircraft'a320 (R.Raw mut_ A320)
+        | RW_Aircraft'f16 (R.Raw mut_ F16)
+        | RW_Aircraft'unknown' Std_.Word16
+    internalWhich tag_ struct_ = case tag_ of
+        0 ->
+            (RW_Aircraft'void <$> (GH.readVariant #void struct_))
+        1 ->
+            (RW_Aircraft'b737 <$> (GH.readVariant #b737 struct_))
+        2 ->
+            (RW_Aircraft'a320 <$> (GH.readVariant #a320 struct_))
+        3 ->
+            (RW_Aircraft'f16 <$> (GH.readVariant #f16 struct_))
+        _ ->
+            (Std_.pure (RW_Aircraft'unknown' tag_))
+    data Which Aircraft
+instance (GH.HasVariant "void" GH.Slot Aircraft ()) where
+    variantByLabel  = (GH.Variant GH.voidField 0)
+instance (GH.HasVariant "b737" GH.Slot Aircraft B737) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 1)
+instance (GH.HasVariant "a320" GH.Slot Aircraft A320) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 2)
+instance (GH.HasVariant "f16" GH.Slot Aircraft F16) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 3)
+data instance C.Parsed (GH.Which Aircraft)
+    = Aircraft'void 
+    | Aircraft'b737 (RP.Parsed B737)
+    | Aircraft'a320 (RP.Parsed A320)
+    | Aircraft'f16 (RP.Parsed F16)
+    | Aircraft'unknown' Std_.Word16
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed (GH.Which Aircraft)))
+deriving instance (Std_.Eq (C.Parsed (GH.Which Aircraft)))
+instance (C.Parse (GH.Which Aircraft) (C.Parsed (GH.Which Aircraft))) where
+    parse raw_ = (do
+        rawWhich_ <- (GH.unionWhich raw_)
+        case rawWhich_ of
+            (RW_Aircraft'void _) ->
+                (Std_.pure Aircraft'void)
+            (RW_Aircraft'b737 rawArg_) ->
+                (Aircraft'b737 <$> (C.parse rawArg_))
+            (RW_Aircraft'a320 rawArg_) ->
+                (Aircraft'a320 <$> (C.parse rawArg_))
+            (RW_Aircraft'f16 rawArg_) ->
+                (Aircraft'f16 <$> (C.parse rawArg_))
+            (RW_Aircraft'unknown' tag_) ->
+                (Std_.pure (Aircraft'unknown' tag_))
+        )
+instance (C.Marshal (GH.Which Aircraft) (C.Parsed (GH.Which Aircraft))) where
+    marshalInto raw_ parsed_ = case parsed_ of
+        (Aircraft'void) ->
+            (GH.encodeVariant #void () (GH.unionStruct raw_))
+        (Aircraft'b737 arg_) ->
+            (GH.encodeVariant #b737 arg_ (GH.unionStruct raw_))
+        (Aircraft'a320 arg_) ->
+            (GH.encodeVariant #a320 arg_ (GH.unionStruct raw_))
+        (Aircraft'f16 arg_) ->
+            (GH.encodeVariant #f16 arg_ (GH.unionStruct raw_))
+        (Aircraft'unknown' tag_) ->
+            (GH.encodeField GH.unionField tag_ (GH.unionStruct raw_))
+data Z 
+type instance (R.ReprFor Z) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Z) where
+    numStructWords  = 3
+    numStructPtrs  = 1
+instance (C.Allocate Z) where
+    type AllocHint Z = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Z (C.Parsed Z))
+instance (C.AllocateList Z) where
+    type ListAllocHint Z = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Z (C.Parsed Z))
+data instance C.Parsed Z
+    = Z 
+        {union' :: (C.Parsed (GH.Which Z))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Z))
+deriving instance (Std_.Eq (C.Parsed Z))
+instance (C.Parse Z (C.Parsed Z)) where
+    parse raw_ = (Z <$> (C.parse (GH.structUnion raw_)))
+instance (C.Marshal Z (C.Parsed Z)) where
+    marshalInto raw_ Z{..} = (do
+        (C.marshalInto (GH.structUnion raw_) union')
+        )
+instance (GH.HasUnion Z) where
+    unionField  = (GH.dataField 0 0 16 0)
+    data RawWhich mut_ Z
+        = RW_Z'void (R.Raw mut_ ())
+        | RW_Z'zz (R.Raw mut_ Z)
+        | RW_Z'f64 (R.Raw mut_ Std_.Double)
+        | RW_Z'f32 (R.Raw mut_ Std_.Float)
+        | RW_Z'i64 (R.Raw mut_ Std_.Int64)
+        | RW_Z'i32 (R.Raw mut_ Std_.Int32)
+        | RW_Z'i16 (R.Raw mut_ Std_.Int16)
+        | RW_Z'i8 (R.Raw mut_ Std_.Int8)
+        | RW_Z'u64 (R.Raw mut_ Std_.Word64)
+        | RW_Z'u32 (R.Raw mut_ Std_.Word32)
+        | RW_Z'u16 (R.Raw mut_ Std_.Word16)
+        | RW_Z'u8 (R.Raw mut_ Std_.Word8)
+        | RW_Z'bool (R.Raw mut_ Std_.Bool)
+        | RW_Z'text (R.Raw mut_ Basics.Text)
+        | RW_Z'blob (R.Raw mut_ Basics.Data)
+        | RW_Z'f64vec (R.Raw mut_ (R.List Std_.Double))
+        | RW_Z'f32vec (R.Raw mut_ (R.List Std_.Float))
+        | RW_Z'i64vec (R.Raw mut_ (R.List Std_.Int64))
+        | RW_Z'i32vec (R.Raw mut_ (R.List Std_.Int32))
+        | RW_Z'i16vec (R.Raw mut_ (R.List Std_.Int16))
+        | RW_Z'i8vec (R.Raw mut_ (R.List Std_.Int8))
+        | RW_Z'u64vec (R.Raw mut_ (R.List Std_.Word64))
+        | RW_Z'u32vec (R.Raw mut_ (R.List Std_.Word32))
+        | RW_Z'u16vec (R.Raw mut_ (R.List Std_.Word16))
+        | RW_Z'u8vec (R.Raw mut_ (R.List Std_.Word8))
+        | RW_Z'zvec (R.Raw mut_ (R.List Z))
+        | RW_Z'zvecvec (R.Raw mut_ (R.List (R.List Z)))
+        | RW_Z'zdate (R.Raw mut_ Zdate)
+        | RW_Z'zdata (R.Raw mut_ Zdata)
+        | RW_Z'aircraftvec (R.Raw mut_ (R.List Aircraft))
+        | RW_Z'aircraft (R.Raw mut_ Aircraft)
+        | RW_Z'regression (R.Raw mut_ Regression)
+        | RW_Z'planebase (R.Raw mut_ PlaneBase)
+        | RW_Z'airport (R.Raw mut_ Airport)
+        | RW_Z'b737 (R.Raw mut_ B737)
+        | RW_Z'a320 (R.Raw mut_ A320)
+        | RW_Z'f16 (R.Raw mut_ F16)
+        | RW_Z'zdatevec (R.Raw mut_ (R.List Zdate))
+        | RW_Z'zdatavec (R.Raw mut_ (R.List Zdata))
+        | RW_Z'boolvec (R.Raw mut_ (R.List Std_.Bool))
+        | RW_Z'datavec (R.Raw mut_ (R.List Basics.Data))
+        | RW_Z'textvec (R.Raw mut_ (R.List Basics.Text))
+        | RW_Z'grp (R.Raw mut_ Z'grp)
+        | RW_Z'echo (R.Raw mut_ Echo)
+        | RW_Z'echoBases (R.Raw mut_ EchoBases)
+        | RW_Z'unknown' Std_.Word16
+    internalWhich tag_ struct_ = case tag_ of
+        0 ->
+            (RW_Z'void <$> (GH.readVariant #void struct_))
+        1 ->
+            (RW_Z'zz <$> (GH.readVariant #zz struct_))
+        2 ->
+            (RW_Z'f64 <$> (GH.readVariant #f64 struct_))
+        3 ->
+            (RW_Z'f32 <$> (GH.readVariant #f32 struct_))
+        4 ->
+            (RW_Z'i64 <$> (GH.readVariant #i64 struct_))
+        5 ->
+            (RW_Z'i32 <$> (GH.readVariant #i32 struct_))
+        6 ->
+            (RW_Z'i16 <$> (GH.readVariant #i16 struct_))
+        7 ->
+            (RW_Z'i8 <$> (GH.readVariant #i8 struct_))
+        8 ->
+            (RW_Z'u64 <$> (GH.readVariant #u64 struct_))
+        9 ->
+            (RW_Z'u32 <$> (GH.readVariant #u32 struct_))
+        10 ->
+            (RW_Z'u16 <$> (GH.readVariant #u16 struct_))
+        11 ->
+            (RW_Z'u8 <$> (GH.readVariant #u8 struct_))
+        12 ->
+            (RW_Z'bool <$> (GH.readVariant #bool struct_))
+        13 ->
+            (RW_Z'text <$> (GH.readVariant #text struct_))
+        14 ->
+            (RW_Z'blob <$> (GH.readVariant #blob struct_))
+        15 ->
+            (RW_Z'f64vec <$> (GH.readVariant #f64vec struct_))
+        16 ->
+            (RW_Z'f32vec <$> (GH.readVariant #f32vec struct_))
+        17 ->
+            (RW_Z'i64vec <$> (GH.readVariant #i64vec struct_))
+        18 ->
+            (RW_Z'i32vec <$> (GH.readVariant #i32vec struct_))
+        19 ->
+            (RW_Z'i16vec <$> (GH.readVariant #i16vec struct_))
+        20 ->
+            (RW_Z'i8vec <$> (GH.readVariant #i8vec struct_))
+        21 ->
+            (RW_Z'u64vec <$> (GH.readVariant #u64vec struct_))
+        22 ->
+            (RW_Z'u32vec <$> (GH.readVariant #u32vec struct_))
+        23 ->
+            (RW_Z'u16vec <$> (GH.readVariant #u16vec struct_))
+        24 ->
+            (RW_Z'u8vec <$> (GH.readVariant #u8vec struct_))
+        25 ->
+            (RW_Z'zvec <$> (GH.readVariant #zvec struct_))
+        26 ->
+            (RW_Z'zvecvec <$> (GH.readVariant #zvecvec struct_))
+        27 ->
+            (RW_Z'zdate <$> (GH.readVariant #zdate struct_))
+        28 ->
+            (RW_Z'zdata <$> (GH.readVariant #zdata struct_))
+        29 ->
+            (RW_Z'aircraftvec <$> (GH.readVariant #aircraftvec struct_))
+        30 ->
+            (RW_Z'aircraft <$> (GH.readVariant #aircraft struct_))
+        31 ->
+            (RW_Z'regression <$> (GH.readVariant #regression struct_))
+        32 ->
+            (RW_Z'planebase <$> (GH.readVariant #planebase struct_))
+        33 ->
+            (RW_Z'airport <$> (GH.readVariant #airport struct_))
+        34 ->
+            (RW_Z'b737 <$> (GH.readVariant #b737 struct_))
+        35 ->
+            (RW_Z'a320 <$> (GH.readVariant #a320 struct_))
+        36 ->
+            (RW_Z'f16 <$> (GH.readVariant #f16 struct_))
+        37 ->
+            (RW_Z'zdatevec <$> (GH.readVariant #zdatevec struct_))
+        38 ->
+            (RW_Z'zdatavec <$> (GH.readVariant #zdatavec struct_))
+        39 ->
+            (RW_Z'boolvec <$> (GH.readVariant #boolvec struct_))
+        40 ->
+            (RW_Z'datavec <$> (GH.readVariant #datavec struct_))
+        41 ->
+            (RW_Z'textvec <$> (GH.readVariant #textvec struct_))
+        42 ->
+            (RW_Z'grp <$> (GH.readVariant #grp struct_))
+        43 ->
+            (RW_Z'echo <$> (GH.readVariant #echo struct_))
+        44 ->
+            (RW_Z'echoBases <$> (GH.readVariant #echoBases struct_))
+        _ ->
+            (Std_.pure (RW_Z'unknown' tag_))
+    data Which Z
+instance (GH.HasVariant "void" GH.Slot Z ()) where
+    variantByLabel  = (GH.Variant GH.voidField 0)
+instance (GH.HasVariant "zz" GH.Slot Z Z) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 1)
+instance (GH.HasVariant "f64" GH.Slot Z Std_.Double) where
+    variantByLabel  = (GH.Variant (GH.dataField 0 1 64 0) 2)
+instance (GH.HasVariant "f32" GH.Slot Z Std_.Float) where
+    variantByLabel  = (GH.Variant (GH.dataField 0 1 32 0) 3)
+instance (GH.HasVariant "i64" GH.Slot Z Std_.Int64) where
+    variantByLabel  = (GH.Variant (GH.dataField 0 1 64 0) 4)
+instance (GH.HasVariant "i32" GH.Slot Z Std_.Int32) where
+    variantByLabel  = (GH.Variant (GH.dataField 0 1 32 0) 5)
+instance (GH.HasVariant "i16" GH.Slot Z Std_.Int16) where
+    variantByLabel  = (GH.Variant (GH.dataField 0 1 16 0) 6)
+instance (GH.HasVariant "i8" GH.Slot Z Std_.Int8) where
+    variantByLabel  = (GH.Variant (GH.dataField 0 1 8 0) 7)
+instance (GH.HasVariant "u64" GH.Slot Z Std_.Word64) where
+    variantByLabel  = (GH.Variant (GH.dataField 0 1 64 0) 8)
+instance (GH.HasVariant "u32" GH.Slot Z Std_.Word32) where
+    variantByLabel  = (GH.Variant (GH.dataField 0 1 32 0) 9)
+instance (GH.HasVariant "u16" GH.Slot Z Std_.Word16) where
+    variantByLabel  = (GH.Variant (GH.dataField 0 1 16 0) 10)
+instance (GH.HasVariant "u8" GH.Slot Z Std_.Word8) where
+    variantByLabel  = (GH.Variant (GH.dataField 0 1 8 0) 11)
+instance (GH.HasVariant "bool" GH.Slot Z Std_.Bool) where
+    variantByLabel  = (GH.Variant (GH.dataField 0 1 1 0) 12)
+instance (GH.HasVariant "text" GH.Slot Z Basics.Text) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 13)
+instance (GH.HasVariant "blob" GH.Slot Z Basics.Data) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 14)
+instance (GH.HasVariant "f64vec" GH.Slot Z (R.List Std_.Double)) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 15)
+instance (GH.HasVariant "f32vec" GH.Slot Z (R.List Std_.Float)) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 16)
+instance (GH.HasVariant "i64vec" GH.Slot Z (R.List Std_.Int64)) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 17)
+instance (GH.HasVariant "i32vec" GH.Slot Z (R.List Std_.Int32)) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 18)
+instance (GH.HasVariant "i16vec" GH.Slot Z (R.List Std_.Int16)) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 19)
+instance (GH.HasVariant "i8vec" GH.Slot Z (R.List Std_.Int8)) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 20)
+instance (GH.HasVariant "u64vec" GH.Slot Z (R.List Std_.Word64)) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 21)
+instance (GH.HasVariant "u32vec" GH.Slot Z (R.List Std_.Word32)) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 22)
+instance (GH.HasVariant "u16vec" GH.Slot Z (R.List Std_.Word16)) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 23)
+instance (GH.HasVariant "u8vec" GH.Slot Z (R.List Std_.Word8)) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 24)
+instance (GH.HasVariant "zvec" GH.Slot Z (R.List Z)) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 25)
+instance (GH.HasVariant "zvecvec" GH.Slot Z (R.List (R.List Z))) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 26)
+instance (GH.HasVariant "zdate" GH.Slot Z Zdate) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 27)
+instance (GH.HasVariant "zdata" GH.Slot Z Zdata) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 28)
+instance (GH.HasVariant "aircraftvec" GH.Slot Z (R.List Aircraft)) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 29)
+instance (GH.HasVariant "aircraft" GH.Slot Z Aircraft) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 30)
+instance (GH.HasVariant "regression" GH.Slot Z Regression) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 31)
+instance (GH.HasVariant "planebase" GH.Slot Z PlaneBase) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 32)
+instance (GH.HasVariant "airport" GH.Slot Z Airport) where
+    variantByLabel  = (GH.Variant (GH.dataField 0 1 16 0) 33)
+instance (GH.HasVariant "b737" GH.Slot Z B737) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 34)
+instance (GH.HasVariant "a320" GH.Slot Z A320) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 35)
+instance (GH.HasVariant "f16" GH.Slot Z F16) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 36)
+instance (GH.HasVariant "zdatevec" GH.Slot Z (R.List Zdate)) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 37)
+instance (GH.HasVariant "zdatavec" GH.Slot Z (R.List Zdata)) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 38)
+instance (GH.HasVariant "boolvec" GH.Slot Z (R.List Std_.Bool)) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 39)
+instance (GH.HasVariant "datavec" GH.Slot Z (R.List Basics.Data)) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 40)
+instance (GH.HasVariant "textvec" GH.Slot Z (R.List Basics.Text)) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 41)
+instance (GH.HasVariant "grp" GH.Group Z Z'grp) where
+    variantByLabel  = (GH.Variant GH.groupField 42)
+instance (GH.HasVariant "echo" GH.Slot Z Echo) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 43)
+instance (GH.HasVariant "echoBases" GH.Slot Z EchoBases) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 44)
+data instance C.Parsed (GH.Which Z)
+    = Z'void 
+    | Z'zz (RP.Parsed Z)
+    | Z'f64 (RP.Parsed Std_.Double)
+    | Z'f32 (RP.Parsed Std_.Float)
+    | Z'i64 (RP.Parsed Std_.Int64)
+    | Z'i32 (RP.Parsed Std_.Int32)
+    | Z'i16 (RP.Parsed Std_.Int16)
+    | Z'i8 (RP.Parsed Std_.Int8)
+    | Z'u64 (RP.Parsed Std_.Word64)
+    | Z'u32 (RP.Parsed Std_.Word32)
+    | Z'u16 (RP.Parsed Std_.Word16)
+    | Z'u8 (RP.Parsed Std_.Word8)
+    | Z'bool (RP.Parsed Std_.Bool)
+    | Z'text (RP.Parsed Basics.Text)
+    | Z'blob (RP.Parsed Basics.Data)
+    | Z'f64vec (RP.Parsed (R.List Std_.Double))
+    | Z'f32vec (RP.Parsed (R.List Std_.Float))
+    | Z'i64vec (RP.Parsed (R.List Std_.Int64))
+    | Z'i32vec (RP.Parsed (R.List Std_.Int32))
+    | Z'i16vec (RP.Parsed (R.List Std_.Int16))
+    | Z'i8vec (RP.Parsed (R.List Std_.Int8))
+    | Z'u64vec (RP.Parsed (R.List Std_.Word64))
+    | Z'u32vec (RP.Parsed (R.List Std_.Word32))
+    | Z'u16vec (RP.Parsed (R.List Std_.Word16))
+    | Z'u8vec (RP.Parsed (R.List Std_.Word8))
+    | Z'zvec (RP.Parsed (R.List Z))
+    | Z'zvecvec (RP.Parsed (R.List (R.List Z)))
+    | Z'zdate (RP.Parsed Zdate)
+    | Z'zdata (RP.Parsed Zdata)
+    | Z'aircraftvec (RP.Parsed (R.List Aircraft))
+    | Z'aircraft (RP.Parsed Aircraft)
+    | Z'regression (RP.Parsed Regression)
+    | Z'planebase (RP.Parsed PlaneBase)
+    | Z'airport (RP.Parsed Airport)
+    | Z'b737 (RP.Parsed B737)
+    | Z'a320 (RP.Parsed A320)
+    | Z'f16 (RP.Parsed F16)
+    | Z'zdatevec (RP.Parsed (R.List Zdate))
+    | Z'zdatavec (RP.Parsed (R.List Zdata))
+    | Z'boolvec (RP.Parsed (R.List Std_.Bool))
+    | Z'datavec (RP.Parsed (R.List Basics.Data))
+    | Z'textvec (RP.Parsed (R.List Basics.Text))
+    | Z'grp (RP.Parsed Z'grp)
+    | Z'echo (RP.Parsed Echo)
+    | Z'echoBases (RP.Parsed EchoBases)
+    | Z'unknown' Std_.Word16
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed (GH.Which Z)))
+deriving instance (Std_.Eq (C.Parsed (GH.Which Z)))
+instance (C.Parse (GH.Which Z) (C.Parsed (GH.Which Z))) where
+    parse raw_ = (do
+        rawWhich_ <- (GH.unionWhich raw_)
+        case rawWhich_ of
+            (RW_Z'void _) ->
+                (Std_.pure Z'void)
+            (RW_Z'zz rawArg_) ->
+                (Z'zz <$> (C.parse rawArg_))
+            (RW_Z'f64 rawArg_) ->
+                (Z'f64 <$> (C.parse rawArg_))
+            (RW_Z'f32 rawArg_) ->
+                (Z'f32 <$> (C.parse rawArg_))
+            (RW_Z'i64 rawArg_) ->
+                (Z'i64 <$> (C.parse rawArg_))
+            (RW_Z'i32 rawArg_) ->
+                (Z'i32 <$> (C.parse rawArg_))
+            (RW_Z'i16 rawArg_) ->
+                (Z'i16 <$> (C.parse rawArg_))
+            (RW_Z'i8 rawArg_) ->
+                (Z'i8 <$> (C.parse rawArg_))
+            (RW_Z'u64 rawArg_) ->
+                (Z'u64 <$> (C.parse rawArg_))
+            (RW_Z'u32 rawArg_) ->
+                (Z'u32 <$> (C.parse rawArg_))
+            (RW_Z'u16 rawArg_) ->
+                (Z'u16 <$> (C.parse rawArg_))
+            (RW_Z'u8 rawArg_) ->
+                (Z'u8 <$> (C.parse rawArg_))
+            (RW_Z'bool rawArg_) ->
+                (Z'bool <$> (C.parse rawArg_))
+            (RW_Z'text rawArg_) ->
+                (Z'text <$> (C.parse rawArg_))
+            (RW_Z'blob rawArg_) ->
+                (Z'blob <$> (C.parse rawArg_))
+            (RW_Z'f64vec rawArg_) ->
+                (Z'f64vec <$> (C.parse rawArg_))
+            (RW_Z'f32vec rawArg_) ->
+                (Z'f32vec <$> (C.parse rawArg_))
+            (RW_Z'i64vec rawArg_) ->
+                (Z'i64vec <$> (C.parse rawArg_))
+            (RW_Z'i32vec rawArg_) ->
+                (Z'i32vec <$> (C.parse rawArg_))
+            (RW_Z'i16vec rawArg_) ->
+                (Z'i16vec <$> (C.parse rawArg_))
+            (RW_Z'i8vec rawArg_) ->
+                (Z'i8vec <$> (C.parse rawArg_))
+            (RW_Z'u64vec rawArg_) ->
+                (Z'u64vec <$> (C.parse rawArg_))
+            (RW_Z'u32vec rawArg_) ->
+                (Z'u32vec <$> (C.parse rawArg_))
+            (RW_Z'u16vec rawArg_) ->
+                (Z'u16vec <$> (C.parse rawArg_))
+            (RW_Z'u8vec rawArg_) ->
+                (Z'u8vec <$> (C.parse rawArg_))
+            (RW_Z'zvec rawArg_) ->
+                (Z'zvec <$> (C.parse rawArg_))
+            (RW_Z'zvecvec rawArg_) ->
+                (Z'zvecvec <$> (C.parse rawArg_))
+            (RW_Z'zdate rawArg_) ->
+                (Z'zdate <$> (C.parse rawArg_))
+            (RW_Z'zdata rawArg_) ->
+                (Z'zdata <$> (C.parse rawArg_))
+            (RW_Z'aircraftvec rawArg_) ->
+                (Z'aircraftvec <$> (C.parse rawArg_))
+            (RW_Z'aircraft rawArg_) ->
+                (Z'aircraft <$> (C.parse rawArg_))
+            (RW_Z'regression rawArg_) ->
+                (Z'regression <$> (C.parse rawArg_))
+            (RW_Z'planebase rawArg_) ->
+                (Z'planebase <$> (C.parse rawArg_))
+            (RW_Z'airport rawArg_) ->
+                (Z'airport <$> (C.parse rawArg_))
+            (RW_Z'b737 rawArg_) ->
+                (Z'b737 <$> (C.parse rawArg_))
+            (RW_Z'a320 rawArg_) ->
+                (Z'a320 <$> (C.parse rawArg_))
+            (RW_Z'f16 rawArg_) ->
+                (Z'f16 <$> (C.parse rawArg_))
+            (RW_Z'zdatevec rawArg_) ->
+                (Z'zdatevec <$> (C.parse rawArg_))
+            (RW_Z'zdatavec rawArg_) ->
+                (Z'zdatavec <$> (C.parse rawArg_))
+            (RW_Z'boolvec rawArg_) ->
+                (Z'boolvec <$> (C.parse rawArg_))
+            (RW_Z'datavec rawArg_) ->
+                (Z'datavec <$> (C.parse rawArg_))
+            (RW_Z'textvec rawArg_) ->
+                (Z'textvec <$> (C.parse rawArg_))
+            (RW_Z'grp rawArg_) ->
+                (Z'grp <$> (C.parse rawArg_))
+            (RW_Z'echo rawArg_) ->
+                (Z'echo <$> (C.parse rawArg_))
+            (RW_Z'echoBases rawArg_) ->
+                (Z'echoBases <$> (C.parse rawArg_))
+            (RW_Z'unknown' tag_) ->
+                (Std_.pure (Z'unknown' tag_))
+        )
+instance (C.Marshal (GH.Which Z) (C.Parsed (GH.Which Z))) where
+    marshalInto raw_ parsed_ = case parsed_ of
+        (Z'void) ->
+            (GH.encodeVariant #void () (GH.unionStruct raw_))
+        (Z'zz arg_) ->
+            (GH.encodeVariant #zz arg_ (GH.unionStruct raw_))
+        (Z'f64 arg_) ->
+            (GH.encodeVariant #f64 arg_ (GH.unionStruct raw_))
+        (Z'f32 arg_) ->
+            (GH.encodeVariant #f32 arg_ (GH.unionStruct raw_))
+        (Z'i64 arg_) ->
+            (GH.encodeVariant #i64 arg_ (GH.unionStruct raw_))
+        (Z'i32 arg_) ->
+            (GH.encodeVariant #i32 arg_ (GH.unionStruct raw_))
+        (Z'i16 arg_) ->
+            (GH.encodeVariant #i16 arg_ (GH.unionStruct raw_))
+        (Z'i8 arg_) ->
+            (GH.encodeVariant #i8 arg_ (GH.unionStruct raw_))
+        (Z'u64 arg_) ->
+            (GH.encodeVariant #u64 arg_ (GH.unionStruct raw_))
+        (Z'u32 arg_) ->
+            (GH.encodeVariant #u32 arg_ (GH.unionStruct raw_))
+        (Z'u16 arg_) ->
+            (GH.encodeVariant #u16 arg_ (GH.unionStruct raw_))
+        (Z'u8 arg_) ->
+            (GH.encodeVariant #u8 arg_ (GH.unionStruct raw_))
+        (Z'bool arg_) ->
+            (GH.encodeVariant #bool arg_ (GH.unionStruct raw_))
+        (Z'text arg_) ->
+            (GH.encodeVariant #text arg_ (GH.unionStruct raw_))
+        (Z'blob arg_) ->
+            (GH.encodeVariant #blob arg_ (GH.unionStruct raw_))
+        (Z'f64vec arg_) ->
+            (GH.encodeVariant #f64vec arg_ (GH.unionStruct raw_))
+        (Z'f32vec arg_) ->
+            (GH.encodeVariant #f32vec arg_ (GH.unionStruct raw_))
+        (Z'i64vec arg_) ->
+            (GH.encodeVariant #i64vec arg_ (GH.unionStruct raw_))
+        (Z'i32vec arg_) ->
+            (GH.encodeVariant #i32vec arg_ (GH.unionStruct raw_))
+        (Z'i16vec arg_) ->
+            (GH.encodeVariant #i16vec arg_ (GH.unionStruct raw_))
+        (Z'i8vec arg_) ->
+            (GH.encodeVariant #i8vec arg_ (GH.unionStruct raw_))
+        (Z'u64vec arg_) ->
+            (GH.encodeVariant #u64vec arg_ (GH.unionStruct raw_))
+        (Z'u32vec arg_) ->
+            (GH.encodeVariant #u32vec arg_ (GH.unionStruct raw_))
+        (Z'u16vec arg_) ->
+            (GH.encodeVariant #u16vec arg_ (GH.unionStruct raw_))
+        (Z'u8vec arg_) ->
+            (GH.encodeVariant #u8vec arg_ (GH.unionStruct raw_))
+        (Z'zvec arg_) ->
+            (GH.encodeVariant #zvec arg_ (GH.unionStruct raw_))
+        (Z'zvecvec arg_) ->
+            (GH.encodeVariant #zvecvec arg_ (GH.unionStruct raw_))
+        (Z'zdate arg_) ->
+            (GH.encodeVariant #zdate arg_ (GH.unionStruct raw_))
+        (Z'zdata arg_) ->
+            (GH.encodeVariant #zdata arg_ (GH.unionStruct raw_))
+        (Z'aircraftvec arg_) ->
+            (GH.encodeVariant #aircraftvec arg_ (GH.unionStruct raw_))
+        (Z'aircraft arg_) ->
+            (GH.encodeVariant #aircraft arg_ (GH.unionStruct raw_))
+        (Z'regression arg_) ->
+            (GH.encodeVariant #regression arg_ (GH.unionStruct raw_))
+        (Z'planebase arg_) ->
+            (GH.encodeVariant #planebase arg_ (GH.unionStruct raw_))
+        (Z'airport arg_) ->
+            (GH.encodeVariant #airport arg_ (GH.unionStruct raw_))
+        (Z'b737 arg_) ->
+            (GH.encodeVariant #b737 arg_ (GH.unionStruct raw_))
+        (Z'a320 arg_) ->
+            (GH.encodeVariant #a320 arg_ (GH.unionStruct raw_))
+        (Z'f16 arg_) ->
+            (GH.encodeVariant #f16 arg_ (GH.unionStruct raw_))
+        (Z'zdatevec arg_) ->
+            (GH.encodeVariant #zdatevec arg_ (GH.unionStruct raw_))
+        (Z'zdatavec arg_) ->
+            (GH.encodeVariant #zdatavec arg_ (GH.unionStruct raw_))
+        (Z'boolvec arg_) ->
+            (GH.encodeVariant #boolvec arg_ (GH.unionStruct raw_))
+        (Z'datavec arg_) ->
+            (GH.encodeVariant #datavec arg_ (GH.unionStruct raw_))
+        (Z'textvec arg_) ->
+            (GH.encodeVariant #textvec arg_ (GH.unionStruct raw_))
+        (Z'grp arg_) ->
+            (do
+                rawGroup_ <- (GH.initVariant #grp (GH.unionStruct raw_))
+                (C.marshalInto rawGroup_ arg_)
+                )
+        (Z'echo arg_) ->
+            (GH.encodeVariant #echo arg_ (GH.unionStruct raw_))
+        (Z'echoBases arg_) ->
+            (GH.encodeVariant #echoBases arg_ (GH.unionStruct raw_))
+        (Z'unknown' tag_) ->
+            (GH.encodeField GH.unionField tag_ (GH.unionStruct raw_))
+data Z'grp 
+type instance (R.ReprFor Z'grp) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Z'grp) where
+    numStructWords  = 3
+    numStructPtrs  = 1
+instance (C.Allocate Z'grp) where
+    type AllocHint Z'grp = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Z'grp (C.Parsed Z'grp))
+instance (C.AllocateList Z'grp) where
+    type ListAllocHint Z'grp = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Z'grp (C.Parsed Z'grp))
+data instance C.Parsed Z'grp
+    = Z'grp' 
+        {first :: (RP.Parsed Std_.Word64)
+        ,second :: (RP.Parsed Std_.Word64)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Z'grp))
+deriving instance (Std_.Eq (C.Parsed Z'grp))
+instance (C.Parse Z'grp (C.Parsed Z'grp)) where
+    parse raw_ = (Z'grp' <$> (GH.parseField #first raw_)
+                         <*> (GH.parseField #second raw_))
+instance (C.Marshal Z'grp (C.Parsed Z'grp)) where
+    marshalInto raw_ Z'grp'{..} = (do
+        (GH.encodeField #first first raw_)
+        (GH.encodeField #second second raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "first" GH.Slot Z'grp Std_.Word64) where
+    fieldByLabel  = (GH.dataField 0 1 64 0)
+instance (GH.HasField "second" GH.Slot Z'grp Std_.Word64) where
+    fieldByLabel  = (GH.dataField 0 2 64 0)
+data Counter 
+type instance (R.ReprFor Counter) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Counter) where
+    numStructWords  = 1
+    numStructPtrs  = 2
+instance (C.Allocate Counter) where
+    type AllocHint Counter = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Counter (C.Parsed Counter))
+instance (C.AllocateList Counter) where
+    type ListAllocHint Counter = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Counter (C.Parsed Counter))
+data instance C.Parsed Counter
+    = Counter 
+        {size :: (RP.Parsed Std_.Int64)
+        ,words :: (RP.Parsed Basics.Text)
+        ,wordlist :: (RP.Parsed (R.List Basics.Text))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Counter))
+deriving instance (Std_.Eq (C.Parsed Counter))
+instance (C.Parse Counter (C.Parsed Counter)) where
+    parse raw_ = (Counter <$> (GH.parseField #size raw_)
+                          <*> (GH.parseField #words raw_)
+                          <*> (GH.parseField #wordlist raw_))
+instance (C.Marshal Counter (C.Parsed Counter)) where
+    marshalInto raw_ Counter{..} = (do
+        (GH.encodeField #size size raw_)
+        (GH.encodeField #words words raw_)
+        (GH.encodeField #wordlist wordlist raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "size" GH.Slot Counter Std_.Int64) where
+    fieldByLabel  = (GH.dataField 0 0 64 0)
+instance (GH.HasField "words" GH.Slot Counter Basics.Text) where
+    fieldByLabel  = (GH.ptrField 0)
+instance (GH.HasField "wordlist" GH.Slot Counter (R.List Basics.Text)) where
+    fieldByLabel  = (GH.ptrField 1)
+data Bag 
+type instance (R.ReprFor Bag) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Bag) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance (C.Allocate Bag) where
+    type AllocHint Bag = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Bag (C.Parsed Bag))
+instance (C.AllocateList Bag) where
+    type ListAllocHint Bag = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Bag (C.Parsed Bag))
+data instance C.Parsed Bag
+    = Bag 
+        {counter :: (RP.Parsed Counter)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Bag))
+deriving instance (Std_.Eq (C.Parsed Bag))
+instance (C.Parse Bag (C.Parsed Bag)) where
+    parse raw_ = (Bag <$> (GH.parseField #counter raw_))
+instance (C.Marshal Bag (C.Parsed Bag)) where
+    marshalInto raw_ Bag{..} = (do
+        (GH.encodeField #counter counter raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "counter" GH.Slot Bag Counter) where
+    fieldByLabel  = (GH.ptrField 0)
+data Zserver 
+type instance (R.ReprFor Zserver) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Zserver) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance (C.Allocate Zserver) where
+    type AllocHint Zserver = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Zserver (C.Parsed Zserver))
+instance (C.AllocateList Zserver) where
+    type ListAllocHint Zserver = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Zserver (C.Parsed Zserver))
+data instance C.Parsed Zserver
+    = Zserver 
+        {waitingjobs :: (RP.Parsed (R.List Zjob))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Zserver))
+deriving instance (Std_.Eq (C.Parsed Zserver))
+instance (C.Parse Zserver (C.Parsed Zserver)) where
+    parse raw_ = (Zserver <$> (GH.parseField #waitingjobs raw_))
+instance (C.Marshal Zserver (C.Parsed Zserver)) where
+    marshalInto raw_ Zserver{..} = (do
+        (GH.encodeField #waitingjobs waitingjobs raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "waitingjobs" GH.Slot Zserver (R.List Zjob)) where
+    fieldByLabel  = (GH.ptrField 0)
+data Zjob 
+type instance (R.ReprFor Zjob) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Zjob) where
+    numStructWords  = 0
+    numStructPtrs  = 2
+instance (C.Allocate Zjob) where
+    type AllocHint Zjob = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Zjob (C.Parsed Zjob))
+instance (C.AllocateList Zjob) where
+    type ListAllocHint Zjob = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Zjob (C.Parsed Zjob))
+data instance C.Parsed Zjob
+    = Zjob 
+        {cmd :: (RP.Parsed Basics.Text)
+        ,args :: (RP.Parsed (R.List Basics.Text))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Zjob))
+deriving instance (Std_.Eq (C.Parsed Zjob))
+instance (C.Parse Zjob (C.Parsed Zjob)) where
+    parse raw_ = (Zjob <$> (GH.parseField #cmd raw_)
+                       <*> (GH.parseField #args raw_))
+instance (C.Marshal Zjob (C.Parsed Zjob)) where
+    marshalInto raw_ Zjob{..} = (do
+        (GH.encodeField #cmd cmd raw_)
+        (GH.encodeField #args args raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "cmd" GH.Slot Zjob Basics.Text) where
+    fieldByLabel  = (GH.ptrField 0)
+instance (GH.HasField "args" GH.Slot Zjob (R.List Basics.Text)) where
+    fieldByLabel  = (GH.ptrField 1)
+data VerEmpty 
+type instance (R.ReprFor VerEmpty) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct VerEmpty) where
+    numStructWords  = 0
+    numStructPtrs  = 0
+instance (C.Allocate VerEmpty) where
+    type AllocHint VerEmpty = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc VerEmpty (C.Parsed VerEmpty))
+instance (C.AllocateList VerEmpty) where
+    type ListAllocHint VerEmpty = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc VerEmpty (C.Parsed VerEmpty))
+data instance C.Parsed VerEmpty
+    = VerEmpty 
+        {}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed VerEmpty))
+deriving instance (Std_.Eq (C.Parsed VerEmpty))
+instance (C.Parse VerEmpty (C.Parsed VerEmpty)) where
+    parse raw_ = (Std_.pure VerEmpty)
+instance (C.Marshal VerEmpty (C.Parsed VerEmpty)) where
+    marshalInto _raw (VerEmpty) = (Std_.pure ())
+data VerOneData 
+type instance (R.ReprFor VerOneData) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct VerOneData) where
+    numStructWords  = 1
+    numStructPtrs  = 0
+instance (C.Allocate VerOneData) where
+    type AllocHint VerOneData = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc VerOneData (C.Parsed VerOneData))
+instance (C.AllocateList VerOneData) where
+    type ListAllocHint VerOneData = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc VerOneData (C.Parsed VerOneData))
+data instance C.Parsed VerOneData
+    = VerOneData 
+        {val :: (RP.Parsed Std_.Int16)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed VerOneData))
+deriving instance (Std_.Eq (C.Parsed VerOneData))
+instance (C.Parse VerOneData (C.Parsed VerOneData)) where
+    parse raw_ = (VerOneData <$> (GH.parseField #val raw_))
+instance (C.Marshal VerOneData (C.Parsed VerOneData)) where
+    marshalInto raw_ VerOneData{..} = (do
+        (GH.encodeField #val val raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "val" GH.Slot VerOneData Std_.Int16) where
+    fieldByLabel  = (GH.dataField 0 0 16 0)
+data VerTwoData 
+type instance (R.ReprFor VerTwoData) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct VerTwoData) where
+    numStructWords  = 2
+    numStructPtrs  = 0
+instance (C.Allocate VerTwoData) where
+    type AllocHint VerTwoData = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc VerTwoData (C.Parsed VerTwoData))
+instance (C.AllocateList VerTwoData) where
+    type ListAllocHint VerTwoData = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc VerTwoData (C.Parsed VerTwoData))
+data instance C.Parsed VerTwoData
+    = VerTwoData 
+        {val :: (RP.Parsed Std_.Int16)
+        ,duo :: (RP.Parsed Std_.Int64)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed VerTwoData))
+deriving instance (Std_.Eq (C.Parsed VerTwoData))
+instance (C.Parse VerTwoData (C.Parsed VerTwoData)) where
+    parse raw_ = (VerTwoData <$> (GH.parseField #val raw_)
+                             <*> (GH.parseField #duo raw_))
+instance (C.Marshal VerTwoData (C.Parsed VerTwoData)) where
+    marshalInto raw_ VerTwoData{..} = (do
+        (GH.encodeField #val val raw_)
+        (GH.encodeField #duo duo raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "val" GH.Slot VerTwoData Std_.Int16) where
+    fieldByLabel  = (GH.dataField 0 0 16 0)
+instance (GH.HasField "duo" GH.Slot VerTwoData Std_.Int64) where
+    fieldByLabel  = (GH.dataField 0 1 64 0)
+data VerOnePtr 
+type instance (R.ReprFor VerOnePtr) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct VerOnePtr) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance (C.Allocate VerOnePtr) where
+    type AllocHint VerOnePtr = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc VerOnePtr (C.Parsed VerOnePtr))
+instance (C.AllocateList VerOnePtr) where
+    type ListAllocHint VerOnePtr = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc VerOnePtr (C.Parsed VerOnePtr))
+data instance C.Parsed VerOnePtr
+    = VerOnePtr 
+        {ptr :: (RP.Parsed VerOneData)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed VerOnePtr))
+deriving instance (Std_.Eq (C.Parsed VerOnePtr))
+instance (C.Parse VerOnePtr (C.Parsed VerOnePtr)) where
+    parse raw_ = (VerOnePtr <$> (GH.parseField #ptr raw_))
+instance (C.Marshal VerOnePtr (C.Parsed VerOnePtr)) where
+    marshalInto raw_ VerOnePtr{..} = (do
+        (GH.encodeField #ptr ptr raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "ptr" GH.Slot VerOnePtr VerOneData) where
+    fieldByLabel  = (GH.ptrField 0)
+data VerTwoPtr 
+type instance (R.ReprFor VerTwoPtr) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct VerTwoPtr) where
+    numStructWords  = 0
+    numStructPtrs  = 2
+instance (C.Allocate VerTwoPtr) where
+    type AllocHint VerTwoPtr = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc VerTwoPtr (C.Parsed VerTwoPtr))
+instance (C.AllocateList VerTwoPtr) where
+    type ListAllocHint VerTwoPtr = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc VerTwoPtr (C.Parsed VerTwoPtr))
+data instance C.Parsed VerTwoPtr
+    = VerTwoPtr 
+        {ptr1 :: (RP.Parsed VerOneData)
+        ,ptr2 :: (RP.Parsed VerOneData)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed VerTwoPtr))
+deriving instance (Std_.Eq (C.Parsed VerTwoPtr))
+instance (C.Parse VerTwoPtr (C.Parsed VerTwoPtr)) where
+    parse raw_ = (VerTwoPtr <$> (GH.parseField #ptr1 raw_)
+                            <*> (GH.parseField #ptr2 raw_))
+instance (C.Marshal VerTwoPtr (C.Parsed VerTwoPtr)) where
+    marshalInto raw_ VerTwoPtr{..} = (do
+        (GH.encodeField #ptr1 ptr1 raw_)
+        (GH.encodeField #ptr2 ptr2 raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "ptr1" GH.Slot VerTwoPtr VerOneData) where
+    fieldByLabel  = (GH.ptrField 0)
+instance (GH.HasField "ptr2" GH.Slot VerTwoPtr VerOneData) where
+    fieldByLabel  = (GH.ptrField 1)
+data VerTwoDataTwoPtr 
+type instance (R.ReprFor VerTwoDataTwoPtr) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct VerTwoDataTwoPtr) where
+    numStructWords  = 2
+    numStructPtrs  = 2
+instance (C.Allocate VerTwoDataTwoPtr) where
+    type AllocHint VerTwoDataTwoPtr = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc VerTwoDataTwoPtr (C.Parsed VerTwoDataTwoPtr))
+instance (C.AllocateList VerTwoDataTwoPtr) where
+    type ListAllocHint VerTwoDataTwoPtr = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc VerTwoDataTwoPtr (C.Parsed VerTwoDataTwoPtr))
+data instance C.Parsed VerTwoDataTwoPtr
+    = VerTwoDataTwoPtr 
+        {val :: (RP.Parsed Std_.Int16)
+        ,duo :: (RP.Parsed Std_.Int64)
+        ,ptr1 :: (RP.Parsed VerOneData)
+        ,ptr2 :: (RP.Parsed VerOneData)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed VerTwoDataTwoPtr))
+deriving instance (Std_.Eq (C.Parsed VerTwoDataTwoPtr))
+instance (C.Parse VerTwoDataTwoPtr (C.Parsed VerTwoDataTwoPtr)) where
+    parse raw_ = (VerTwoDataTwoPtr <$> (GH.parseField #val raw_)
+                                   <*> (GH.parseField #duo raw_)
+                                   <*> (GH.parseField #ptr1 raw_)
+                                   <*> (GH.parseField #ptr2 raw_))
+instance (C.Marshal VerTwoDataTwoPtr (C.Parsed VerTwoDataTwoPtr)) where
+    marshalInto raw_ VerTwoDataTwoPtr{..} = (do
+        (GH.encodeField #val val raw_)
+        (GH.encodeField #duo duo raw_)
+        (GH.encodeField #ptr1 ptr1 raw_)
+        (GH.encodeField #ptr2 ptr2 raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "val" GH.Slot VerTwoDataTwoPtr Std_.Int16) where
+    fieldByLabel  = (GH.dataField 0 0 16 0)
+instance (GH.HasField "duo" GH.Slot VerTwoDataTwoPtr Std_.Int64) where
+    fieldByLabel  = (GH.dataField 0 1 64 0)
+instance (GH.HasField "ptr1" GH.Slot VerTwoDataTwoPtr VerOneData) where
+    fieldByLabel  = (GH.ptrField 0)
+instance (GH.HasField "ptr2" GH.Slot VerTwoDataTwoPtr VerOneData) where
+    fieldByLabel  = (GH.ptrField 1)
+data HoldsVerEmptyList 
+type instance (R.ReprFor HoldsVerEmptyList) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct HoldsVerEmptyList) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance (C.Allocate HoldsVerEmptyList) where
+    type AllocHint HoldsVerEmptyList = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc HoldsVerEmptyList (C.Parsed HoldsVerEmptyList))
+instance (C.AllocateList HoldsVerEmptyList) where
+    type ListAllocHint HoldsVerEmptyList = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc HoldsVerEmptyList (C.Parsed HoldsVerEmptyList))
+data instance C.Parsed HoldsVerEmptyList
+    = HoldsVerEmptyList 
+        {mylist :: (RP.Parsed (R.List VerEmpty))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed HoldsVerEmptyList))
+deriving instance (Std_.Eq (C.Parsed HoldsVerEmptyList))
+instance (C.Parse HoldsVerEmptyList (C.Parsed HoldsVerEmptyList)) where
+    parse raw_ = (HoldsVerEmptyList <$> (GH.parseField #mylist raw_))
+instance (C.Marshal HoldsVerEmptyList (C.Parsed HoldsVerEmptyList)) where
+    marshalInto raw_ HoldsVerEmptyList{..} = (do
+        (GH.encodeField #mylist mylist raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "mylist" GH.Slot HoldsVerEmptyList (R.List VerEmpty)) where
+    fieldByLabel  = (GH.ptrField 0)
+data HoldsVerOneDataList 
+type instance (R.ReprFor HoldsVerOneDataList) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct HoldsVerOneDataList) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance (C.Allocate HoldsVerOneDataList) where
+    type AllocHint HoldsVerOneDataList = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc HoldsVerOneDataList (C.Parsed HoldsVerOneDataList))
+instance (C.AllocateList HoldsVerOneDataList) where
+    type ListAllocHint HoldsVerOneDataList = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc HoldsVerOneDataList (C.Parsed HoldsVerOneDataList))
+data instance C.Parsed HoldsVerOneDataList
+    = HoldsVerOneDataList 
+        {mylist :: (RP.Parsed (R.List VerOneData))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed HoldsVerOneDataList))
+deriving instance (Std_.Eq (C.Parsed HoldsVerOneDataList))
+instance (C.Parse HoldsVerOneDataList (C.Parsed HoldsVerOneDataList)) where
+    parse raw_ = (HoldsVerOneDataList <$> (GH.parseField #mylist raw_))
+instance (C.Marshal HoldsVerOneDataList (C.Parsed HoldsVerOneDataList)) where
+    marshalInto raw_ HoldsVerOneDataList{..} = (do
+        (GH.encodeField #mylist mylist raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "mylist" GH.Slot HoldsVerOneDataList (R.List VerOneData)) where
+    fieldByLabel  = (GH.ptrField 0)
+data HoldsVerTwoDataList 
+type instance (R.ReprFor HoldsVerTwoDataList) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct HoldsVerTwoDataList) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance (C.Allocate HoldsVerTwoDataList) where
+    type AllocHint HoldsVerTwoDataList = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc HoldsVerTwoDataList (C.Parsed HoldsVerTwoDataList))
+instance (C.AllocateList HoldsVerTwoDataList) where
+    type ListAllocHint HoldsVerTwoDataList = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc HoldsVerTwoDataList (C.Parsed HoldsVerTwoDataList))
+data instance C.Parsed HoldsVerTwoDataList
+    = HoldsVerTwoDataList 
+        {mylist :: (RP.Parsed (R.List VerTwoData))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed HoldsVerTwoDataList))
+deriving instance (Std_.Eq (C.Parsed HoldsVerTwoDataList))
+instance (C.Parse HoldsVerTwoDataList (C.Parsed HoldsVerTwoDataList)) where
+    parse raw_ = (HoldsVerTwoDataList <$> (GH.parseField #mylist raw_))
+instance (C.Marshal HoldsVerTwoDataList (C.Parsed HoldsVerTwoDataList)) where
+    marshalInto raw_ HoldsVerTwoDataList{..} = (do
+        (GH.encodeField #mylist mylist raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "mylist" GH.Slot HoldsVerTwoDataList (R.List VerTwoData)) where
+    fieldByLabel  = (GH.ptrField 0)
+data HoldsVerOnePtrList 
+type instance (R.ReprFor HoldsVerOnePtrList) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct HoldsVerOnePtrList) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance (C.Allocate HoldsVerOnePtrList) where
+    type AllocHint HoldsVerOnePtrList = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc HoldsVerOnePtrList (C.Parsed HoldsVerOnePtrList))
+instance (C.AllocateList HoldsVerOnePtrList) where
+    type ListAllocHint HoldsVerOnePtrList = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc HoldsVerOnePtrList (C.Parsed HoldsVerOnePtrList))
+data instance C.Parsed HoldsVerOnePtrList
+    = HoldsVerOnePtrList 
+        {mylist :: (RP.Parsed (R.List VerOnePtr))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed HoldsVerOnePtrList))
+deriving instance (Std_.Eq (C.Parsed HoldsVerOnePtrList))
+instance (C.Parse HoldsVerOnePtrList (C.Parsed HoldsVerOnePtrList)) where
+    parse raw_ = (HoldsVerOnePtrList <$> (GH.parseField #mylist raw_))
+instance (C.Marshal HoldsVerOnePtrList (C.Parsed HoldsVerOnePtrList)) where
+    marshalInto raw_ HoldsVerOnePtrList{..} = (do
+        (GH.encodeField #mylist mylist raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "mylist" GH.Slot HoldsVerOnePtrList (R.List VerOnePtr)) where
+    fieldByLabel  = (GH.ptrField 0)
+data HoldsVerTwoPtrList 
+type instance (R.ReprFor HoldsVerTwoPtrList) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct HoldsVerTwoPtrList) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance (C.Allocate HoldsVerTwoPtrList) where
+    type AllocHint HoldsVerTwoPtrList = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc HoldsVerTwoPtrList (C.Parsed HoldsVerTwoPtrList))
+instance (C.AllocateList HoldsVerTwoPtrList) where
+    type ListAllocHint HoldsVerTwoPtrList = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc HoldsVerTwoPtrList (C.Parsed HoldsVerTwoPtrList))
+data instance C.Parsed HoldsVerTwoPtrList
+    = HoldsVerTwoPtrList 
+        {mylist :: (RP.Parsed (R.List VerTwoPtr))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed HoldsVerTwoPtrList))
+deriving instance (Std_.Eq (C.Parsed HoldsVerTwoPtrList))
+instance (C.Parse HoldsVerTwoPtrList (C.Parsed HoldsVerTwoPtrList)) where
+    parse raw_ = (HoldsVerTwoPtrList <$> (GH.parseField #mylist raw_))
+instance (C.Marshal HoldsVerTwoPtrList (C.Parsed HoldsVerTwoPtrList)) where
+    marshalInto raw_ HoldsVerTwoPtrList{..} = (do
+        (GH.encodeField #mylist mylist raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "mylist" GH.Slot HoldsVerTwoPtrList (R.List VerTwoPtr)) where
+    fieldByLabel  = (GH.ptrField 0)
+data HoldsVerTwoTwoList 
+type instance (R.ReprFor HoldsVerTwoTwoList) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct HoldsVerTwoTwoList) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance (C.Allocate HoldsVerTwoTwoList) where
+    type AllocHint HoldsVerTwoTwoList = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc HoldsVerTwoTwoList (C.Parsed HoldsVerTwoTwoList))
+instance (C.AllocateList HoldsVerTwoTwoList) where
+    type ListAllocHint HoldsVerTwoTwoList = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc HoldsVerTwoTwoList (C.Parsed HoldsVerTwoTwoList))
+data instance C.Parsed HoldsVerTwoTwoList
+    = HoldsVerTwoTwoList 
+        {mylist :: (RP.Parsed (R.List VerTwoDataTwoPtr))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed HoldsVerTwoTwoList))
+deriving instance (Std_.Eq (C.Parsed HoldsVerTwoTwoList))
+instance (C.Parse HoldsVerTwoTwoList (C.Parsed HoldsVerTwoTwoList)) where
+    parse raw_ = (HoldsVerTwoTwoList <$> (GH.parseField #mylist raw_))
+instance (C.Marshal HoldsVerTwoTwoList (C.Parsed HoldsVerTwoTwoList)) where
+    marshalInto raw_ HoldsVerTwoTwoList{..} = (do
+        (GH.encodeField #mylist mylist raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "mylist" GH.Slot HoldsVerTwoTwoList (R.List VerTwoDataTwoPtr)) where
+    fieldByLabel  = (GH.ptrField 0)
+data HoldsVerTwoTwoPlus 
+type instance (R.ReprFor HoldsVerTwoTwoPlus) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct HoldsVerTwoTwoPlus) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance (C.Allocate HoldsVerTwoTwoPlus) where
+    type AllocHint HoldsVerTwoTwoPlus = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc HoldsVerTwoTwoPlus (C.Parsed HoldsVerTwoTwoPlus))
+instance (C.AllocateList HoldsVerTwoTwoPlus) where
+    type ListAllocHint HoldsVerTwoTwoPlus = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc HoldsVerTwoTwoPlus (C.Parsed HoldsVerTwoTwoPlus))
+data instance C.Parsed HoldsVerTwoTwoPlus
+    = HoldsVerTwoTwoPlus 
+        {mylist :: (RP.Parsed (R.List VerTwoTwoPlus))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed HoldsVerTwoTwoPlus))
+deriving instance (Std_.Eq (C.Parsed HoldsVerTwoTwoPlus))
+instance (C.Parse HoldsVerTwoTwoPlus (C.Parsed HoldsVerTwoTwoPlus)) where
+    parse raw_ = (HoldsVerTwoTwoPlus <$> (GH.parseField #mylist raw_))
+instance (C.Marshal HoldsVerTwoTwoPlus (C.Parsed HoldsVerTwoTwoPlus)) where
+    marshalInto raw_ HoldsVerTwoTwoPlus{..} = (do
+        (GH.encodeField #mylist mylist raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "mylist" GH.Slot HoldsVerTwoTwoPlus (R.List VerTwoTwoPlus)) where
+    fieldByLabel  = (GH.ptrField 0)
+data VerTwoTwoPlus 
+type instance (R.ReprFor VerTwoTwoPlus) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct VerTwoTwoPlus) where
+    numStructWords  = 3
+    numStructPtrs  = 3
+instance (C.Allocate VerTwoTwoPlus) where
+    type AllocHint VerTwoTwoPlus = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc VerTwoTwoPlus (C.Parsed VerTwoTwoPlus))
+instance (C.AllocateList VerTwoTwoPlus) where
+    type ListAllocHint VerTwoTwoPlus = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc VerTwoTwoPlus (C.Parsed VerTwoTwoPlus))
+data instance C.Parsed VerTwoTwoPlus
+    = VerTwoTwoPlus 
+        {val :: (RP.Parsed Std_.Int16)
+        ,duo :: (RP.Parsed Std_.Int64)
+        ,ptr1 :: (RP.Parsed VerTwoDataTwoPtr)
+        ,ptr2 :: (RP.Parsed VerTwoDataTwoPtr)
+        ,tre :: (RP.Parsed Std_.Int64)
+        ,lst3 :: (RP.Parsed (R.List Std_.Int64))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed VerTwoTwoPlus))
+deriving instance (Std_.Eq (C.Parsed VerTwoTwoPlus))
+instance (C.Parse VerTwoTwoPlus (C.Parsed VerTwoTwoPlus)) where
+    parse raw_ = (VerTwoTwoPlus <$> (GH.parseField #val raw_)
+                                <*> (GH.parseField #duo raw_)
+                                <*> (GH.parseField #ptr1 raw_)
+                                <*> (GH.parseField #ptr2 raw_)
+                                <*> (GH.parseField #tre raw_)
+                                <*> (GH.parseField #lst3 raw_))
+instance (C.Marshal VerTwoTwoPlus (C.Parsed VerTwoTwoPlus)) where
+    marshalInto raw_ VerTwoTwoPlus{..} = (do
+        (GH.encodeField #val val raw_)
+        (GH.encodeField #duo duo raw_)
+        (GH.encodeField #ptr1 ptr1 raw_)
+        (GH.encodeField #ptr2 ptr2 raw_)
+        (GH.encodeField #tre tre raw_)
+        (GH.encodeField #lst3 lst3 raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "val" GH.Slot VerTwoTwoPlus Std_.Int16) where
+    fieldByLabel  = (GH.dataField 0 0 16 0)
+instance (GH.HasField "duo" GH.Slot VerTwoTwoPlus Std_.Int64) where
+    fieldByLabel  = (GH.dataField 0 1 64 0)
+instance (GH.HasField "ptr1" GH.Slot VerTwoTwoPlus VerTwoDataTwoPtr) where
+    fieldByLabel  = (GH.ptrField 0)
+instance (GH.HasField "ptr2" GH.Slot VerTwoTwoPlus VerTwoDataTwoPtr) where
+    fieldByLabel  = (GH.ptrField 1)
+instance (GH.HasField "tre" GH.Slot VerTwoTwoPlus Std_.Int64) where
+    fieldByLabel  = (GH.dataField 0 2 64 0)
+instance (GH.HasField "lst3" GH.Slot VerTwoTwoPlus (R.List Std_.Int64)) where
+    fieldByLabel  = (GH.ptrField 2)
+data HoldsText 
+type instance (R.ReprFor HoldsText) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct HoldsText) where
+    numStructWords  = 0
+    numStructPtrs  = 3
+instance (C.Allocate HoldsText) where
+    type AllocHint HoldsText = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc HoldsText (C.Parsed HoldsText))
+instance (C.AllocateList HoldsText) where
+    type ListAllocHint HoldsText = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc HoldsText (C.Parsed HoldsText))
+data instance C.Parsed HoldsText
+    = HoldsText 
+        {txt :: (RP.Parsed Basics.Text)
+        ,lst :: (RP.Parsed (R.List Basics.Text))
+        ,lstlst :: (RP.Parsed (R.List (R.List Basics.Text)))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed HoldsText))
+deriving instance (Std_.Eq (C.Parsed HoldsText))
+instance (C.Parse HoldsText (C.Parsed HoldsText)) where
+    parse raw_ = (HoldsText <$> (GH.parseField #txt raw_)
+                            <*> (GH.parseField #lst raw_)
+                            <*> (GH.parseField #lstlst raw_))
+instance (C.Marshal HoldsText (C.Parsed HoldsText)) where
+    marshalInto raw_ HoldsText{..} = (do
+        (GH.encodeField #txt txt raw_)
+        (GH.encodeField #lst lst raw_)
+        (GH.encodeField #lstlst lstlst raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "txt" GH.Slot HoldsText Basics.Text) where
+    fieldByLabel  = (GH.ptrField 0)
+instance (GH.HasField "lst" GH.Slot HoldsText (R.List Basics.Text)) where
+    fieldByLabel  = (GH.ptrField 1)
+instance (GH.HasField "lstlst" GH.Slot HoldsText (R.List (R.List Basics.Text))) where
+    fieldByLabel  = (GH.ptrField 2)
+data WrapEmpty 
+type instance (R.ReprFor WrapEmpty) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct WrapEmpty) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance (C.Allocate WrapEmpty) where
+    type AllocHint WrapEmpty = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc WrapEmpty (C.Parsed WrapEmpty))
+instance (C.AllocateList WrapEmpty) where
+    type ListAllocHint WrapEmpty = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc WrapEmpty (C.Parsed WrapEmpty))
+data instance C.Parsed WrapEmpty
+    = WrapEmpty 
+        {mightNotBeReallyEmpty :: (RP.Parsed VerEmpty)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed WrapEmpty))
+deriving instance (Std_.Eq (C.Parsed WrapEmpty))
+instance (C.Parse WrapEmpty (C.Parsed WrapEmpty)) where
+    parse raw_ = (WrapEmpty <$> (GH.parseField #mightNotBeReallyEmpty raw_))
+instance (C.Marshal WrapEmpty (C.Parsed WrapEmpty)) where
+    marshalInto raw_ WrapEmpty{..} = (do
+        (GH.encodeField #mightNotBeReallyEmpty mightNotBeReallyEmpty raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "mightNotBeReallyEmpty" GH.Slot WrapEmpty VerEmpty) where
+    fieldByLabel  = (GH.ptrField 0)
+data Wrap2x2 
+type instance (R.ReprFor Wrap2x2) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Wrap2x2) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance (C.Allocate Wrap2x2) where
+    type AllocHint Wrap2x2 = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Wrap2x2 (C.Parsed Wrap2x2))
+instance (C.AllocateList Wrap2x2) where
+    type ListAllocHint Wrap2x2 = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Wrap2x2 (C.Parsed Wrap2x2))
+data instance C.Parsed Wrap2x2
+    = Wrap2x2 
+        {mightNotBeReallyEmpty :: (RP.Parsed VerTwoDataTwoPtr)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Wrap2x2))
+deriving instance (Std_.Eq (C.Parsed Wrap2x2))
+instance (C.Parse Wrap2x2 (C.Parsed Wrap2x2)) where
+    parse raw_ = (Wrap2x2 <$> (GH.parseField #mightNotBeReallyEmpty raw_))
+instance (C.Marshal Wrap2x2 (C.Parsed Wrap2x2)) where
+    marshalInto raw_ Wrap2x2{..} = (do
+        (GH.encodeField #mightNotBeReallyEmpty mightNotBeReallyEmpty raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "mightNotBeReallyEmpty" GH.Slot Wrap2x2 VerTwoDataTwoPtr) where
+    fieldByLabel  = (GH.ptrField 0)
+data Wrap2x2plus 
+type instance (R.ReprFor Wrap2x2plus) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Wrap2x2plus) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance (C.Allocate Wrap2x2plus) where
+    type AllocHint Wrap2x2plus = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Wrap2x2plus (C.Parsed Wrap2x2plus))
+instance (C.AllocateList Wrap2x2plus) where
+    type ListAllocHint Wrap2x2plus = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Wrap2x2plus (C.Parsed Wrap2x2plus))
+data instance C.Parsed Wrap2x2plus
+    = Wrap2x2plus 
+        {mightNotBeReallyEmpty :: (RP.Parsed VerTwoTwoPlus)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Wrap2x2plus))
+deriving instance (Std_.Eq (C.Parsed Wrap2x2plus))
+instance (C.Parse Wrap2x2plus (C.Parsed Wrap2x2plus)) where
+    parse raw_ = (Wrap2x2plus <$> (GH.parseField #mightNotBeReallyEmpty raw_))
+instance (C.Marshal Wrap2x2plus (C.Parsed Wrap2x2plus)) where
+    marshalInto raw_ Wrap2x2plus{..} = (do
+        (GH.encodeField #mightNotBeReallyEmpty mightNotBeReallyEmpty raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "mightNotBeReallyEmpty" GH.Slot Wrap2x2plus VerTwoTwoPlus) where
+    fieldByLabel  = (GH.ptrField 0)
+data VoidUnion 
+type instance (R.ReprFor VoidUnion) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct VoidUnion) where
+    numStructWords  = 1
+    numStructPtrs  = 0
+instance (C.Allocate VoidUnion) where
+    type AllocHint VoidUnion = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc VoidUnion (C.Parsed VoidUnion))
+instance (C.AllocateList VoidUnion) where
+    type ListAllocHint VoidUnion = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc VoidUnion (C.Parsed VoidUnion))
+data instance C.Parsed VoidUnion
+    = VoidUnion 
+        {union' :: (C.Parsed (GH.Which VoidUnion))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed VoidUnion))
+deriving instance (Std_.Eq (C.Parsed VoidUnion))
+instance (C.Parse VoidUnion (C.Parsed VoidUnion)) where
+    parse raw_ = (VoidUnion <$> (C.parse (GH.structUnion raw_)))
+instance (C.Marshal VoidUnion (C.Parsed VoidUnion)) where
+    marshalInto raw_ VoidUnion{..} = (do
+        (C.marshalInto (GH.structUnion raw_) union')
+        )
+instance (GH.HasUnion VoidUnion) where
+    unionField  = (GH.dataField 0 0 16 0)
+    data RawWhich mut_ VoidUnion
+        = RW_VoidUnion'a (R.Raw mut_ ())
+        | RW_VoidUnion'b (R.Raw mut_ ())
+        | RW_VoidUnion'unknown' Std_.Word16
+    internalWhich tag_ struct_ = case tag_ of
+        0 ->
+            (RW_VoidUnion'a <$> (GH.readVariant #a struct_))
+        1 ->
+            (RW_VoidUnion'b <$> (GH.readVariant #b struct_))
+        _ ->
+            (Std_.pure (RW_VoidUnion'unknown' tag_))
+    data Which VoidUnion
+instance (GH.HasVariant "a" GH.Slot VoidUnion ()) where
+    variantByLabel  = (GH.Variant GH.voidField 0)
+instance (GH.HasVariant "b" GH.Slot VoidUnion ()) where
+    variantByLabel  = (GH.Variant GH.voidField 1)
+data instance C.Parsed (GH.Which VoidUnion)
+    = VoidUnion'a 
+    | VoidUnion'b 
+    | VoidUnion'unknown' Std_.Word16
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed (GH.Which VoidUnion)))
+deriving instance (Std_.Eq (C.Parsed (GH.Which VoidUnion)))
+instance (C.Parse (GH.Which VoidUnion) (C.Parsed (GH.Which VoidUnion))) where
+    parse raw_ = (do
+        rawWhich_ <- (GH.unionWhich raw_)
+        case rawWhich_ of
+            (RW_VoidUnion'a _) ->
+                (Std_.pure VoidUnion'a)
+            (RW_VoidUnion'b _) ->
+                (Std_.pure VoidUnion'b)
+            (RW_VoidUnion'unknown' tag_) ->
+                (Std_.pure (VoidUnion'unknown' tag_))
+        )
+instance (C.Marshal (GH.Which VoidUnion) (C.Parsed (GH.Which VoidUnion))) where
+    marshalInto raw_ parsed_ = case parsed_ of
+        (VoidUnion'a) ->
+            (GH.encodeVariant #a () (GH.unionStruct raw_))
+        (VoidUnion'b) ->
+            (GH.encodeVariant #b () (GH.unionStruct raw_))
+        (VoidUnion'unknown' tag_) ->
+            (GH.encodeField GH.unionField tag_ (GH.unionStruct raw_))
+data Nester1Capn 
+type instance (R.ReprFor Nester1Capn) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Nester1Capn) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance (C.Allocate Nester1Capn) where
+    type AllocHint Nester1Capn = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Nester1Capn (C.Parsed Nester1Capn))
+instance (C.AllocateList Nester1Capn) where
+    type ListAllocHint Nester1Capn = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Nester1Capn (C.Parsed Nester1Capn))
+data instance C.Parsed Nester1Capn
+    = Nester1Capn 
+        {strs :: (RP.Parsed (R.List Basics.Text))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Nester1Capn))
+deriving instance (Std_.Eq (C.Parsed Nester1Capn))
+instance (C.Parse Nester1Capn (C.Parsed Nester1Capn)) where
+    parse raw_ = (Nester1Capn <$> (GH.parseField #strs raw_))
+instance (C.Marshal Nester1Capn (C.Parsed Nester1Capn)) where
+    marshalInto raw_ Nester1Capn{..} = (do
+        (GH.encodeField #strs strs raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "strs" GH.Slot Nester1Capn (R.List Basics.Text)) where
+    fieldByLabel  = (GH.ptrField 0)
+data RWTestCapn 
+type instance (R.ReprFor RWTestCapn) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct RWTestCapn) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance (C.Allocate RWTestCapn) where
+    type AllocHint RWTestCapn = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc RWTestCapn (C.Parsed RWTestCapn))
+instance (C.AllocateList RWTestCapn) where
+    type ListAllocHint RWTestCapn = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc RWTestCapn (C.Parsed RWTestCapn))
+data instance C.Parsed RWTestCapn
+    = RWTestCapn 
+        {nestMatrix :: (RP.Parsed (R.List (R.List Nester1Capn)))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed RWTestCapn))
+deriving instance (Std_.Eq (C.Parsed RWTestCapn))
+instance (C.Parse RWTestCapn (C.Parsed RWTestCapn)) where
+    parse raw_ = (RWTestCapn <$> (GH.parseField #nestMatrix raw_))
+instance (C.Marshal RWTestCapn (C.Parsed RWTestCapn)) where
+    marshalInto raw_ RWTestCapn{..} = (do
+        (GH.encodeField #nestMatrix nestMatrix raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "nestMatrix" GH.Slot RWTestCapn (R.List (R.List Nester1Capn))) where
+    fieldByLabel  = (GH.ptrField 0)
+data ListStructCapn 
+type instance (R.ReprFor ListStructCapn) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct ListStructCapn) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance (C.Allocate ListStructCapn) where
+    type AllocHint ListStructCapn = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc ListStructCapn (C.Parsed ListStructCapn))
+instance (C.AllocateList ListStructCapn) where
+    type ListAllocHint ListStructCapn = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc ListStructCapn (C.Parsed ListStructCapn))
+data instance C.Parsed ListStructCapn
+    = ListStructCapn 
+        {vec :: (RP.Parsed (R.List Nester1Capn))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed ListStructCapn))
+deriving instance (Std_.Eq (C.Parsed ListStructCapn))
+instance (C.Parse ListStructCapn (C.Parsed ListStructCapn)) where
+    parse raw_ = (ListStructCapn <$> (GH.parseField #vec raw_))
+instance (C.Marshal ListStructCapn (C.Parsed ListStructCapn)) where
+    marshalInto raw_ ListStructCapn{..} = (do
+        (GH.encodeField #vec vec raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "vec" GH.Slot ListStructCapn (R.List Nester1Capn)) where
+    fieldByLabel  = (GH.ptrField 0)
+data Echo 
+type instance (R.ReprFor Echo) = (R.Ptr (Std_.Just R.Cap))
+instance (C.Parse Echo (GH.Client Echo)) where
+    parse  = GH.parseCap
+    encode  = GH.encodeCap
+instance (GH.HasMethod "echo" Echo Echo'echo'params Echo'echo'results) where
+    methodByLabel  = (GH.Method 10255578992688506164 0)
+data Echo'echo'params 
+type instance (R.ReprFor Echo'echo'params) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Echo'echo'params) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance (C.Allocate Echo'echo'params) where
+    type AllocHint Echo'echo'params = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Echo'echo'params (C.Parsed Echo'echo'params))
+instance (C.AllocateList Echo'echo'params) where
+    type ListAllocHint Echo'echo'params = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Echo'echo'params (C.Parsed Echo'echo'params))
+data instance C.Parsed Echo'echo'params
+    = Echo'echo'params 
+        {in_ :: (RP.Parsed Basics.Text)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Echo'echo'params))
+deriving instance (Std_.Eq (C.Parsed Echo'echo'params))
+instance (C.Parse Echo'echo'params (C.Parsed Echo'echo'params)) where
+    parse raw_ = (Echo'echo'params <$> (GH.parseField #in_ raw_))
+instance (C.Marshal Echo'echo'params (C.Parsed Echo'echo'params)) where
+    marshalInto raw_ Echo'echo'params{..} = (do
+        (GH.encodeField #in_ in_ raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "in_" GH.Slot Echo'echo'params Basics.Text) where
+    fieldByLabel  = (GH.ptrField 0)
+data Echo'echo'results 
+type instance (R.ReprFor Echo'echo'results) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Echo'echo'results) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance (C.Allocate Echo'echo'results) where
+    type AllocHint Echo'echo'results = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Echo'echo'results (C.Parsed Echo'echo'results))
+instance (C.AllocateList Echo'echo'results) where
+    type ListAllocHint Echo'echo'results = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Echo'echo'results (C.Parsed Echo'echo'results))
+data instance C.Parsed Echo'echo'results
+    = Echo'echo'results 
+        {out :: (RP.Parsed Basics.Text)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Echo'echo'results))
+deriving instance (Std_.Eq (C.Parsed Echo'echo'results))
+instance (C.Parse Echo'echo'results (C.Parsed Echo'echo'results)) where
+    parse raw_ = (Echo'echo'results <$> (GH.parseField #out raw_))
+instance (C.Marshal Echo'echo'results (C.Parsed Echo'echo'results)) where
+    marshalInto raw_ Echo'echo'results{..} = (do
+        (GH.encodeField #out out raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "out" GH.Slot Echo'echo'results Basics.Text) where
+    fieldByLabel  = (GH.ptrField 0)
+data Hoth 
+type instance (R.ReprFor Hoth) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Hoth) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance (C.Allocate Hoth) where
+    type AllocHint Hoth = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Hoth (C.Parsed Hoth))
+instance (C.AllocateList Hoth) where
+    type ListAllocHint Hoth = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Hoth (C.Parsed Hoth))
+data instance C.Parsed Hoth
+    = Hoth 
+        {base :: (RP.Parsed EchoBase)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Hoth))
+deriving instance (Std_.Eq (C.Parsed Hoth))
+instance (C.Parse Hoth (C.Parsed Hoth)) where
+    parse raw_ = (Hoth <$> (GH.parseField #base raw_))
+instance (C.Marshal Hoth (C.Parsed Hoth)) where
+    marshalInto raw_ Hoth{..} = (do
+        (GH.encodeField #base base raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "base" GH.Slot Hoth EchoBase) where
+    fieldByLabel  = (GH.ptrField 0)
+data EchoBase 
+type instance (R.ReprFor EchoBase) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct EchoBase) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance (C.Allocate EchoBase) where
+    type AllocHint EchoBase = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc EchoBase (C.Parsed EchoBase))
+instance (C.AllocateList EchoBase) where
+    type ListAllocHint EchoBase = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc EchoBase (C.Parsed EchoBase))
+data instance C.Parsed EchoBase
+    = EchoBase 
+        {echo :: (RP.Parsed Echo)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed EchoBase))
+deriving instance (Std_.Eq (C.Parsed EchoBase))
+instance (C.Parse EchoBase (C.Parsed EchoBase)) where
+    parse raw_ = (EchoBase <$> (GH.parseField #echo raw_))
+instance (C.Marshal EchoBase (C.Parsed EchoBase)) where
+    marshalInto raw_ EchoBase{..} = (do
+        (GH.encodeField #echo echo raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "echo" GH.Slot EchoBase Echo) where
+    fieldByLabel  = (GH.ptrField 0)
+data EchoBases 
+type instance (R.ReprFor EchoBases) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct EchoBases) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance (C.Allocate EchoBases) where
+    type AllocHint EchoBases = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc EchoBases (C.Parsed EchoBases))
+instance (C.AllocateList EchoBases) where
+    type ListAllocHint EchoBases = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc EchoBases (C.Parsed EchoBases))
+data instance C.Parsed EchoBases
+    = EchoBases 
+        {bases :: (RP.Parsed (R.List EchoBase))}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed EchoBases))
+deriving instance (Std_.Eq (C.Parsed EchoBases))
+instance (C.Parse EchoBases (C.Parsed EchoBases)) where
+    parse raw_ = (EchoBases <$> (GH.parseField #bases raw_))
+instance (C.Marshal EchoBases (C.Parsed EchoBases)) where
+    marshalInto raw_ EchoBases{..} = (do
+        (GH.encodeField #bases bases raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "bases" GH.Slot EchoBases (R.List EchoBase)) where
+    fieldByLabel  = (GH.ptrField 0)
+data StackingRoot 
+type instance (R.ReprFor StackingRoot) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct StackingRoot) where
+    numStructWords  = 0
+    numStructPtrs  = 2
+instance (C.Allocate StackingRoot) where
+    type AllocHint StackingRoot = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc StackingRoot (C.Parsed StackingRoot))
+instance (C.AllocateList StackingRoot) where
+    type ListAllocHint StackingRoot = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc StackingRoot (C.Parsed StackingRoot))
+data instance C.Parsed StackingRoot
+    = StackingRoot 
+        {aWithDefault :: (RP.Parsed StackingA)
+        ,a :: (RP.Parsed StackingA)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed StackingRoot))
+deriving instance (Std_.Eq (C.Parsed StackingRoot))
+instance (C.Parse StackingRoot (C.Parsed StackingRoot)) where
+    parse raw_ = (StackingRoot <$> (GH.parseField #aWithDefault raw_)
+                               <*> (GH.parseField #a raw_))
+instance (C.Marshal StackingRoot (C.Parsed StackingRoot)) where
+    marshalInto raw_ StackingRoot{..} = (do
+        (GH.encodeField #aWithDefault aWithDefault raw_)
+        (GH.encodeField #a a raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "aWithDefault" GH.Slot StackingRoot StackingA) where
+    fieldByLabel  = (GH.ptrField 0)
+instance (GH.HasField "a" GH.Slot StackingRoot StackingA) where
+    fieldByLabel  = (GH.ptrField 1)
+data StackingA 
+type instance (R.ReprFor StackingA) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct StackingA) where
+    numStructWords  = 1
+    numStructPtrs  = 1
+instance (C.Allocate StackingA) where
+    type AllocHint StackingA = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc StackingA (C.Parsed StackingA))
+instance (C.AllocateList StackingA) where
+    type ListAllocHint StackingA = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc StackingA (C.Parsed StackingA))
+data instance C.Parsed StackingA
+    = StackingA 
+        {num :: (RP.Parsed Std_.Int32)
+        ,b :: (RP.Parsed StackingB)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed StackingA))
+deriving instance (Std_.Eq (C.Parsed StackingA))
+instance (C.Parse StackingA (C.Parsed StackingA)) where
+    parse raw_ = (StackingA <$> (GH.parseField #num raw_)
+                            <*> (GH.parseField #b raw_))
+instance (C.Marshal StackingA (C.Parsed StackingA)) where
+    marshalInto raw_ StackingA{..} = (do
+        (GH.encodeField #num num raw_)
+        (GH.encodeField #b b raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "num" GH.Slot StackingA Std_.Int32) where
+    fieldByLabel  = (GH.dataField 0 0 32 0)
+instance (GH.HasField "b" GH.Slot StackingA StackingB) where
+    fieldByLabel  = (GH.ptrField 0)
+data StackingB 
+type instance (R.ReprFor StackingB) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct StackingB) where
+    numStructWords  = 1
+    numStructPtrs  = 0
+instance (C.Allocate StackingB) where
+    type AllocHint StackingB = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc StackingB (C.Parsed StackingB))
+instance (C.AllocateList StackingB) where
+    type ListAllocHint StackingB = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc StackingB (C.Parsed StackingB))
+data instance C.Parsed StackingB
+    = StackingB 
+        {num :: (RP.Parsed Std_.Int32)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed StackingB))
+deriving instance (Std_.Eq (C.Parsed StackingB))
+instance (C.Parse StackingB (C.Parsed StackingB)) where
+    parse raw_ = (StackingB <$> (GH.parseField #num raw_))
+instance (C.Marshal StackingB (C.Parsed StackingB)) where
+    marshalInto raw_ StackingB{..} = (do
+        (GH.encodeField #num num raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "num" GH.Slot StackingB Std_.Int32) where
+    fieldByLabel  = (GH.dataField 0 0 32 0)
+data CallSequence 
+type instance (R.ReprFor CallSequence) = (R.Ptr (Std_.Just R.Cap))
+instance (C.Parse CallSequence (GH.Client CallSequence)) where
+    parse  = GH.parseCap
+    encode  = GH.encodeCap
+instance (GH.HasMethod "getNumber" CallSequence CallSequence'getNumber'params CallSequence'getNumber'results) where
+    methodByLabel  = (GH.Method 12371070827563042848 0)
+data CallSequence'getNumber'params 
+type instance (R.ReprFor CallSequence'getNumber'params) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct CallSequence'getNumber'params) where
+    numStructWords  = 0
+    numStructPtrs  = 0
+instance (C.Allocate CallSequence'getNumber'params) where
+    type AllocHint CallSequence'getNumber'params = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc CallSequence'getNumber'params (C.Parsed CallSequence'getNumber'params))
+instance (C.AllocateList CallSequence'getNumber'params) where
+    type ListAllocHint CallSequence'getNumber'params = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc CallSequence'getNumber'params (C.Parsed CallSequence'getNumber'params))
+data instance C.Parsed CallSequence'getNumber'params
+    = CallSequence'getNumber'params 
+        {}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed CallSequence'getNumber'params))
+deriving instance (Std_.Eq (C.Parsed CallSequence'getNumber'params))
+instance (C.Parse CallSequence'getNumber'params (C.Parsed CallSequence'getNumber'params)) where
+    parse raw_ = (Std_.pure CallSequence'getNumber'params)
+instance (C.Marshal CallSequence'getNumber'params (C.Parsed CallSequence'getNumber'params)) where
+    marshalInto _raw (CallSequence'getNumber'params) = (Std_.pure ())
+data CallSequence'getNumber'results 
+type instance (R.ReprFor CallSequence'getNumber'results) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct CallSequence'getNumber'results) where
+    numStructWords  = 1
+    numStructPtrs  = 0
+instance (C.Allocate CallSequence'getNumber'results) where
+    type AllocHint CallSequence'getNumber'results = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc CallSequence'getNumber'results (C.Parsed CallSequence'getNumber'results))
+instance (C.AllocateList CallSequence'getNumber'results) where
+    type ListAllocHint CallSequence'getNumber'results = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc CallSequence'getNumber'results (C.Parsed CallSequence'getNumber'results))
+data instance C.Parsed CallSequence'getNumber'results
+    = CallSequence'getNumber'results 
+        {n :: (RP.Parsed Std_.Word32)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed CallSequence'getNumber'results))
+deriving instance (Std_.Eq (C.Parsed CallSequence'getNumber'results))
+instance (C.Parse CallSequence'getNumber'results (C.Parsed CallSequence'getNumber'results)) where
+    parse raw_ = (CallSequence'getNumber'results <$> (GH.parseField #n raw_))
+instance (C.Marshal CallSequence'getNumber'results (C.Parsed CallSequence'getNumber'results)) where
+    marshalInto raw_ CallSequence'getNumber'results{..} = (do
+        (GH.encodeField #n n raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "n" GH.Slot CallSequence'getNumber'results Std_.Word32) where
+    fieldByLabel  = (GH.dataField 0 0 32 0)
+data CounterFactory 
+type instance (R.ReprFor CounterFactory) = (R.Ptr (Std_.Just R.Cap))
+instance (C.Parse CounterFactory (GH.Client CounterFactory)) where
+    parse  = GH.parseCap
+    encode  = GH.encodeCap
+instance (GH.HasMethod "newCounter" CounterFactory CounterFactory'newCounter'params CounterFactory'newCounter'results) where
+    methodByLabel  = (GH.Method 15610220054254702620 0)
+data CounterFactory'newCounter'params 
+type instance (R.ReprFor CounterFactory'newCounter'params) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct CounterFactory'newCounter'params) where
+    numStructWords  = 1
+    numStructPtrs  = 0
+instance (C.Allocate CounterFactory'newCounter'params) where
+    type AllocHint CounterFactory'newCounter'params = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc CounterFactory'newCounter'params (C.Parsed CounterFactory'newCounter'params))
+instance (C.AllocateList CounterFactory'newCounter'params) where
+    type ListAllocHint CounterFactory'newCounter'params = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc CounterFactory'newCounter'params (C.Parsed CounterFactory'newCounter'params))
+data instance C.Parsed CounterFactory'newCounter'params
+    = CounterFactory'newCounter'params 
+        {start :: (RP.Parsed Std_.Word32)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed CounterFactory'newCounter'params))
+deriving instance (Std_.Eq (C.Parsed CounterFactory'newCounter'params))
+instance (C.Parse CounterFactory'newCounter'params (C.Parsed CounterFactory'newCounter'params)) where
+    parse raw_ = (CounterFactory'newCounter'params <$> (GH.parseField #start raw_))
+instance (C.Marshal CounterFactory'newCounter'params (C.Parsed CounterFactory'newCounter'params)) where
+    marshalInto raw_ CounterFactory'newCounter'params{..} = (do
+        (GH.encodeField #start start raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "start" GH.Slot CounterFactory'newCounter'params Std_.Word32) where
+    fieldByLabel  = (GH.dataField 0 0 32 0)
+data CounterFactory'newCounter'results 
+type instance (R.ReprFor CounterFactory'newCounter'results) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct CounterFactory'newCounter'results) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance (C.Allocate CounterFactory'newCounter'results) where
+    type AllocHint CounterFactory'newCounter'results = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc CounterFactory'newCounter'results (C.Parsed CounterFactory'newCounter'results))
+instance (C.AllocateList CounterFactory'newCounter'results) where
+    type ListAllocHint CounterFactory'newCounter'results = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc CounterFactory'newCounter'results (C.Parsed CounterFactory'newCounter'results))
+data instance C.Parsed CounterFactory'newCounter'results
+    = CounterFactory'newCounter'results 
+        {counter :: (RP.Parsed CallSequence)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed CounterFactory'newCounter'results))
+deriving instance (Std_.Eq (C.Parsed CounterFactory'newCounter'results))
+instance (C.Parse CounterFactory'newCounter'results (C.Parsed CounterFactory'newCounter'results)) where
+    parse raw_ = (CounterFactory'newCounter'results <$> (GH.parseField #counter raw_))
+instance (C.Marshal CounterFactory'newCounter'results (C.Parsed CounterFactory'newCounter'results)) where
+    marshalInto raw_ CounterFactory'newCounter'results{..} = (do
+        (GH.encodeField #counter counter raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "counter" GH.Slot CounterFactory'newCounter'results CallSequence) where
+    fieldByLabel  = (GH.ptrField 0)
+data CounterAcceptor 
+type instance (R.ReprFor CounterAcceptor) = (R.Ptr (Std_.Just R.Cap))
+instance (C.Parse CounterAcceptor (GH.Client CounterAcceptor)) where
+    parse  = GH.parseCap
+    encode  = GH.encodeCap
+instance (GH.HasMethod "accept" CounterAcceptor CounterAcceptor'accept'params CounterAcceptor'accept'results) where
+    methodByLabel  = (GH.Method 14317498215560924065 0)
+data CounterAcceptor'accept'params 
+type instance (R.ReprFor CounterAcceptor'accept'params) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct CounterAcceptor'accept'params) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance (C.Allocate CounterAcceptor'accept'params) where
+    type AllocHint CounterAcceptor'accept'params = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc CounterAcceptor'accept'params (C.Parsed CounterAcceptor'accept'params))
+instance (C.AllocateList CounterAcceptor'accept'params) where
+    type ListAllocHint CounterAcceptor'accept'params = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc CounterAcceptor'accept'params (C.Parsed CounterAcceptor'accept'params))
+data instance C.Parsed CounterAcceptor'accept'params
+    = CounterAcceptor'accept'params 
+        {counter :: (RP.Parsed CallSequence)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed CounterAcceptor'accept'params))
+deriving instance (Std_.Eq (C.Parsed CounterAcceptor'accept'params))
+instance (C.Parse CounterAcceptor'accept'params (C.Parsed CounterAcceptor'accept'params)) where
+    parse raw_ = (CounterAcceptor'accept'params <$> (GH.parseField #counter raw_))
+instance (C.Marshal CounterAcceptor'accept'params (C.Parsed CounterAcceptor'accept'params)) where
+    marshalInto raw_ CounterAcceptor'accept'params{..} = (do
+        (GH.encodeField #counter counter raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "counter" GH.Slot CounterAcceptor'accept'params CallSequence) where
+    fieldByLabel  = (GH.ptrField 0)
+data CounterAcceptor'accept'results 
+type instance (R.ReprFor CounterAcceptor'accept'results) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct CounterAcceptor'accept'results) where
+    numStructWords  = 0
+    numStructPtrs  = 0
+instance (C.Allocate CounterAcceptor'accept'results) where
+    type AllocHint CounterAcceptor'accept'results = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc CounterAcceptor'accept'results (C.Parsed CounterAcceptor'accept'results))
+instance (C.AllocateList CounterAcceptor'accept'results) where
+    type ListAllocHint CounterAcceptor'accept'results = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc CounterAcceptor'accept'results (C.Parsed CounterAcceptor'accept'results))
+data instance C.Parsed CounterAcceptor'accept'results
+    = CounterAcceptor'accept'results 
+        {}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed CounterAcceptor'accept'results))
+deriving instance (Std_.Eq (C.Parsed CounterAcceptor'accept'results))
+instance (C.Parse CounterAcceptor'accept'results (C.Parsed CounterAcceptor'accept'results)) where
+    parse raw_ = (Std_.pure CounterAcceptor'accept'results)
+instance (C.Marshal CounterAcceptor'accept'results (C.Parsed CounterAcceptor'accept'results)) where
+    marshalInto _raw (CounterAcceptor'accept'results) = (Std_.pure ())
+data Top 
+type instance (R.ReprFor Top) = (R.Ptr (Std_.Just R.Cap))
+instance (C.Parse Top (GH.Client Top)) where
+    parse  = GH.parseCap
+    encode  = GH.encodeCap
+instance (GH.HasMethod "top" Top Top'top'params Top'top'results) where
+    methodByLabel  = (GH.Method 17861645508359101525 0)
+data Top'top'params 
+type instance (R.ReprFor Top'top'params) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Top'top'params) where
+    numStructWords  = 0
+    numStructPtrs  = 0
+instance (C.Allocate Top'top'params) where
+    type AllocHint Top'top'params = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Top'top'params (C.Parsed Top'top'params))
+instance (C.AllocateList Top'top'params) where
+    type ListAllocHint Top'top'params = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Top'top'params (C.Parsed Top'top'params))
+data instance C.Parsed Top'top'params
+    = Top'top'params 
+        {}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Top'top'params))
+deriving instance (Std_.Eq (C.Parsed Top'top'params))
+instance (C.Parse Top'top'params (C.Parsed Top'top'params)) where
+    parse raw_ = (Std_.pure Top'top'params)
+instance (C.Marshal Top'top'params (C.Parsed Top'top'params)) where
+    marshalInto _raw (Top'top'params) = (Std_.pure ())
+data Top'top'results 
+type instance (R.ReprFor Top'top'results) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Top'top'results) where
+    numStructWords  = 0
+    numStructPtrs  = 0
+instance (C.Allocate Top'top'results) where
+    type AllocHint Top'top'results = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Top'top'results (C.Parsed Top'top'results))
+instance (C.AllocateList Top'top'results) where
+    type ListAllocHint Top'top'results = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Top'top'results (C.Parsed Top'top'results))
+data instance C.Parsed Top'top'results
+    = Top'top'results 
+        {}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Top'top'results))
+deriving instance (Std_.Eq (C.Parsed Top'top'results))
+instance (C.Parse Top'top'results (C.Parsed Top'top'results)) where
+    parse raw_ = (Std_.pure Top'top'results)
+instance (C.Marshal Top'top'results (C.Parsed Top'top'results)) where
+    marshalInto _raw (Top'top'results) = (Std_.pure ())
+data Left 
+type instance (R.ReprFor Left) = (R.Ptr (Std_.Just R.Cap))
+instance (C.Parse Left (GH.Client Left)) where
+    parse  = GH.parseCap
+    encode  = GH.encodeCap
+instance (GH.HasMethod "left" Left Left'left'params Left'left'results) where
+    methodByLabel  = (GH.Method 17679152961798450446 0)
+data Left'left'params 
+type instance (R.ReprFor Left'left'params) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Left'left'params) where
+    numStructWords  = 0
+    numStructPtrs  = 0
+instance (C.Allocate Left'left'params) where
+    type AllocHint Left'left'params = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Left'left'params (C.Parsed Left'left'params))
+instance (C.AllocateList Left'left'params) where
+    type ListAllocHint Left'left'params = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Left'left'params (C.Parsed Left'left'params))
+data instance C.Parsed Left'left'params
+    = Left'left'params 
+        {}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Left'left'params))
+deriving instance (Std_.Eq (C.Parsed Left'left'params))
+instance (C.Parse Left'left'params (C.Parsed Left'left'params)) where
+    parse raw_ = (Std_.pure Left'left'params)
+instance (C.Marshal Left'left'params (C.Parsed Left'left'params)) where
+    marshalInto _raw (Left'left'params) = (Std_.pure ())
+data Left'left'results 
+type instance (R.ReprFor Left'left'results) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Left'left'results) where
+    numStructWords  = 0
+    numStructPtrs  = 0
+instance (C.Allocate Left'left'results) where
+    type AllocHint Left'left'results = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Left'left'results (C.Parsed Left'left'results))
+instance (C.AllocateList Left'left'results) where
+    type ListAllocHint Left'left'results = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Left'left'results (C.Parsed Left'left'results))
+data instance C.Parsed Left'left'results
+    = Left'left'results 
+        {}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Left'left'results))
+deriving instance (Std_.Eq (C.Parsed Left'left'results))
+instance (C.Parse Left'left'results (C.Parsed Left'left'results)) where
+    parse raw_ = (Std_.pure Left'left'results)
+instance (C.Marshal Left'left'results (C.Parsed Left'left'results)) where
+    marshalInto _raw (Left'left'results) = (Std_.pure ())
+data Right 
+type instance (R.ReprFor Right) = (R.Ptr (Std_.Just R.Cap))
+instance (C.Parse Right (GH.Client Right)) where
+    parse  = GH.parseCap
+    encode  = GH.encodeCap
+instance (GH.HasMethod "right" Right Right'right'params Right'right'results) where
+    methodByLabel  = (GH.Method 14712639595305348988 0)
+data Right'right'params 
+type instance (R.ReprFor Right'right'params) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Right'right'params) where
+    numStructWords  = 0
+    numStructPtrs  = 0
+instance (C.Allocate Right'right'params) where
+    type AllocHint Right'right'params = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Right'right'params (C.Parsed Right'right'params))
+instance (C.AllocateList Right'right'params) where
+    type ListAllocHint Right'right'params = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Right'right'params (C.Parsed Right'right'params))
+data instance C.Parsed Right'right'params
+    = Right'right'params 
+        {}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Right'right'params))
+deriving instance (Std_.Eq (C.Parsed Right'right'params))
+instance (C.Parse Right'right'params (C.Parsed Right'right'params)) where
+    parse raw_ = (Std_.pure Right'right'params)
+instance (C.Marshal Right'right'params (C.Parsed Right'right'params)) where
+    marshalInto _raw (Right'right'params) = (Std_.pure ())
+data Right'right'results 
+type instance (R.ReprFor Right'right'results) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Right'right'results) where
+    numStructWords  = 0
+    numStructPtrs  = 0
+instance (C.Allocate Right'right'results) where
+    type AllocHint Right'right'results = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Right'right'results (C.Parsed Right'right'results))
+instance (C.AllocateList Right'right'results) where
+    type ListAllocHint Right'right'results = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Right'right'results (C.Parsed Right'right'results))
+data instance C.Parsed Right'right'results
+    = Right'right'results 
+        {}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Right'right'results))
+deriving instance (Std_.Eq (C.Parsed Right'right'results))
+instance (C.Parse Right'right'results (C.Parsed Right'right'results)) where
+    parse raw_ = (Std_.pure Right'right'results)
+instance (C.Marshal Right'right'results (C.Parsed Right'right'results)) where
+    marshalInto _raw (Right'right'results) = (Std_.pure ())
+data Bottom 
+type instance (R.ReprFor Bottom) = (R.Ptr (Std_.Just R.Cap))
+instance (C.Parse Bottom (GH.Client Bottom)) where
+    parse  = GH.parseCap
+    encode  = GH.encodeCap
+instance (GH.HasMethod "bottom" Bottom Bottom'bottom'params Bottom'bottom'results) where
+    methodByLabel  = (GH.Method 18402872613340521775 0)
+data Bottom'bottom'params 
+type instance (R.ReprFor Bottom'bottom'params) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Bottom'bottom'params) where
+    numStructWords  = 0
+    numStructPtrs  = 0
+instance (C.Allocate Bottom'bottom'params) where
+    type AllocHint Bottom'bottom'params = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Bottom'bottom'params (C.Parsed Bottom'bottom'params))
+instance (C.AllocateList Bottom'bottom'params) where
+    type ListAllocHint Bottom'bottom'params = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Bottom'bottom'params (C.Parsed Bottom'bottom'params))
+data instance C.Parsed Bottom'bottom'params
+    = Bottom'bottom'params 
+        {}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Bottom'bottom'params))
+deriving instance (Std_.Eq (C.Parsed Bottom'bottom'params))
+instance (C.Parse Bottom'bottom'params (C.Parsed Bottom'bottom'params)) where
+    parse raw_ = (Std_.pure Bottom'bottom'params)
+instance (C.Marshal Bottom'bottom'params (C.Parsed Bottom'bottom'params)) where
+    marshalInto _raw (Bottom'bottom'params) = (Std_.pure ())
+data Bottom'bottom'results 
+type instance (R.ReprFor Bottom'bottom'results) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Bottom'bottom'results) where
+    numStructWords  = 0
+    numStructPtrs  = 0
+instance (C.Allocate Bottom'bottom'results) where
+    type AllocHint Bottom'bottom'results = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Bottom'bottom'results (C.Parsed Bottom'bottom'results))
+instance (C.AllocateList Bottom'bottom'results) where
+    type ListAllocHint Bottom'bottom'results = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Bottom'bottom'results (C.Parsed Bottom'bottom'results))
+data instance C.Parsed Bottom'bottom'results
+    = Bottom'bottom'results 
+        {}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Bottom'bottom'results))
+deriving instance (Std_.Eq (C.Parsed Bottom'bottom'results))
+instance (C.Parse Bottom'bottom'results (C.Parsed Bottom'bottom'results)) where
+    parse raw_ = (Std_.pure Bottom'bottom'results)
+instance (C.Marshal Bottom'bottom'results (C.Parsed Bottom'bottom'results)) where
+    marshalInto _raw (Bottom'bottom'results) = (Std_.pure ())
+data Defaults 
+type instance (R.ReprFor Defaults) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct Defaults) where
+    numStructWords  = 2
+    numStructPtrs  = 2
+instance (C.Allocate Defaults) where
+    type AllocHint Defaults = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc Defaults (C.Parsed Defaults))
+instance (C.AllocateList Defaults) where
+    type ListAllocHint Defaults = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc Defaults (C.Parsed Defaults))
+data instance C.Parsed Defaults
+    = Defaults 
+        {text :: (RP.Parsed Basics.Text)
+        ,data_ :: (RP.Parsed Basics.Data)
+        ,float :: (RP.Parsed Std_.Float)
+        ,int :: (RP.Parsed Std_.Int32)
+        ,uint :: (RP.Parsed Std_.Word32)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed Defaults))
+deriving instance (Std_.Eq (C.Parsed Defaults))
+instance (C.Parse Defaults (C.Parsed Defaults)) where
+    parse raw_ = (Defaults <$> (GH.parseField #text raw_)
+                           <*> (GH.parseField #data_ raw_)
+                           <*> (GH.parseField #float raw_)
+                           <*> (GH.parseField #int raw_)
+                           <*> (GH.parseField #uint raw_))
+instance (C.Marshal Defaults (C.Parsed Defaults)) where
+    marshalInto raw_ Defaults{..} = (do
+        (GH.encodeField #text text raw_)
+        (GH.encodeField #data_ data_ raw_)
+        (GH.encodeField #float float raw_)
+        (GH.encodeField #int int raw_)
+        (GH.encodeField #uint uint raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "text" GH.Slot Defaults Basics.Text) where
+    fieldByLabel  = (GH.ptrField 0)
+instance (GH.HasField "data_" GH.Slot Defaults Basics.Data) where
+    fieldByLabel  = (GH.ptrField 1)
+instance (GH.HasField "float" GH.Slot Defaults Std_.Float) where
+    fieldByLabel  = (GH.dataField 0 0 32 1078523331)
+instance (GH.HasField "int" GH.Slot Defaults Std_.Int32) where
+    fieldByLabel  = (GH.dataField 32 0 32 18446744073709551493)
+instance (GH.HasField "uint" GH.Slot Defaults Std_.Word32) where
+    fieldByLabel  = (GH.dataField 0 1 32 42)
+data BenchmarkA 
+type instance (R.ReprFor BenchmarkA) = (R.Ptr (Std_.Just R.Struct))
+instance (C.TypedStruct BenchmarkA) where
+    numStructWords  = 3
+    numStructPtrs  = 2
+instance (C.Allocate BenchmarkA) where
+    type AllocHint BenchmarkA = ()
+    new _ = C.newTypedStruct
+instance (C.EstimateAlloc BenchmarkA (C.Parsed BenchmarkA))
+instance (C.AllocateList BenchmarkA) where
+    type ListAllocHint BenchmarkA = Std_.Int
+    newList  = C.newTypedStructList
+instance (C.EstimateListAlloc BenchmarkA (C.Parsed BenchmarkA))
+data instance C.Parsed BenchmarkA
+    = BenchmarkA 
+        {name :: (RP.Parsed Basics.Text)
+        ,birthDay :: (RP.Parsed Std_.Int64)
+        ,phone :: (RP.Parsed Basics.Text)
+        ,siblings :: (RP.Parsed Std_.Int32)
+        ,spouse :: (RP.Parsed Std_.Bool)
+        ,money :: (RP.Parsed Std_.Double)}
+    deriving(Generics.Generic)
+deriving instance (Std_.Show (C.Parsed BenchmarkA))
+deriving instance (Std_.Eq (C.Parsed BenchmarkA))
+instance (C.Parse BenchmarkA (C.Parsed BenchmarkA)) where
+    parse raw_ = (BenchmarkA <$> (GH.parseField #name raw_)
+                             <*> (GH.parseField #birthDay raw_)
+                             <*> (GH.parseField #phone raw_)
+                             <*> (GH.parseField #siblings raw_)
+                             <*> (GH.parseField #spouse raw_)
+                             <*> (GH.parseField #money raw_))
+instance (C.Marshal BenchmarkA (C.Parsed BenchmarkA)) where
+    marshalInto raw_ BenchmarkA{..} = (do
+        (GH.encodeField #name name raw_)
+        (GH.encodeField #birthDay birthDay raw_)
+        (GH.encodeField #phone phone raw_)
+        (GH.encodeField #siblings siblings raw_)
+        (GH.encodeField #spouse spouse raw_)
+        (GH.encodeField #money money raw_)
+        (Std_.pure ())
+        )
+instance (GH.HasField "name" GH.Slot BenchmarkA Basics.Text) where
+    fieldByLabel  = (GH.ptrField 0)
+instance (GH.HasField "birthDay" GH.Slot BenchmarkA Std_.Int64) where
+    fieldByLabel  = (GH.dataField 0 0 64 0)
+instance (GH.HasField "phone" GH.Slot BenchmarkA Basics.Text) where
+    fieldByLabel  = (GH.ptrField 1)
+instance (GH.HasField "siblings" GH.Slot BenchmarkA Std_.Int32) where
+    fieldByLabel  = (GH.dataField 0 1 32 0)
+instance (GH.HasField "spouse" GH.Slot BenchmarkA Std_.Bool) where
+    fieldByLabel  = (GH.dataField 32 1 1 0)
+instance (GH.HasField "money" GH.Slot BenchmarkA Std_.Double) where
+    fieldByLabel  = (GH.dataField 0 2 64 0)
diff --git a/gen/tests/Capnp/Gen/Aircraft/Pure.hs b/gen/tests/Capnp/Gen/Aircraft/Pure.hs
--- a/gen/tests/Capnp/Gen/Aircraft/Pure.hs
+++ b/gen/tests/Capnp/Gen/Aircraft/Pure.hs
@@ -137,2826 +137,2826 @@
     deriving(Std_.Show
             ,Std_.Eq
             ,Generics.Generic)
-instance (Default.Default (Zdate)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Zdate)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Zdate)) where
-    type Cerial msg (Zdate) = (Capnp.Gen.ById.X832bcc6686a26d56.Zdate msg)
-    decerialize raw = (Zdate <$> (Capnp.Gen.ById.X832bcc6686a26d56.get_Zdate'year raw)
-                             <*> (Capnp.Gen.ById.X832bcc6686a26d56.get_Zdate'month raw)
-                             <*> (Capnp.Gen.ById.X832bcc6686a26d56.get_Zdate'day raw))
-instance (Classes.Marshal s (Zdate)) where
-    marshalInto raw_ value_ = case value_ of
-        Zdate{..} ->
-            (do
-                (Capnp.Gen.ById.X832bcc6686a26d56.set_Zdate'year raw_ year)
-                (Capnp.Gen.ById.X832bcc6686a26d56.set_Zdate'month raw_ month)
-                (Capnp.Gen.ById.X832bcc6686a26d56.set_Zdate'day raw_ day)
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (Zdate))
-instance (Classes.Cerialize s (V.Vector (Zdate))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Zdate)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Zdate))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Zdate)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Zdate))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Zdate)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Zdate))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data Zdata 
-    = Zdata 
-        {data_ :: BS.ByteString}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (Zdata)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Zdata)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Zdata)) where
-    type Cerial msg (Zdata) = (Capnp.Gen.ById.X832bcc6686a26d56.Zdata msg)
-    decerialize raw = (Zdata <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_Zdata'data_ raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Zdata)) where
-    marshalInto raw_ value_ = case value_ of
-        Zdata{..} ->
-            (do
-                ((Classes.cerialize (Untyped.message raw_) data_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Zdata'data_ raw_))
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (Zdata))
-instance (Classes.Cerialize s (V.Vector (Zdata))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Zdata)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Zdata))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Zdata)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Zdata))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Zdata)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Zdata))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data PlaneBase 
-    = PlaneBase 
-        {name :: T.Text
-        ,homes :: (V.Vector Capnp.Gen.ById.X832bcc6686a26d56.Airport)
-        ,rating :: Std_.Int64
-        ,canFly :: Std_.Bool
-        ,capacity :: Std_.Int64
-        ,maxSpeed :: Std_.Double}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (PlaneBase)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (PlaneBase)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (PlaneBase)) where
-    type Cerial msg (PlaneBase) = (Capnp.Gen.ById.X832bcc6686a26d56.PlaneBase msg)
-    decerialize raw = (PlaneBase <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_PlaneBase'name raw) >>= Classes.decerialize)
-                                 <*> ((Capnp.Gen.ById.X832bcc6686a26d56.get_PlaneBase'homes raw) >>= Classes.decerialize)
-                                 <*> (Capnp.Gen.ById.X832bcc6686a26d56.get_PlaneBase'rating raw)
-                                 <*> (Capnp.Gen.ById.X832bcc6686a26d56.get_PlaneBase'canFly raw)
-                                 <*> (Capnp.Gen.ById.X832bcc6686a26d56.get_PlaneBase'capacity raw)
-                                 <*> (Capnp.Gen.ById.X832bcc6686a26d56.get_PlaneBase'maxSpeed raw))
-instance (Classes.Marshal s (PlaneBase)) where
-    marshalInto raw_ value_ = case value_ of
-        PlaneBase{..} ->
-            (do
-                ((Classes.cerialize (Untyped.message raw_) name) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_PlaneBase'name raw_))
-                ((Classes.cerialize (Untyped.message raw_) homes) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_PlaneBase'homes raw_))
-                (Capnp.Gen.ById.X832bcc6686a26d56.set_PlaneBase'rating raw_ rating)
-                (Capnp.Gen.ById.X832bcc6686a26d56.set_PlaneBase'canFly raw_ canFly)
-                (Capnp.Gen.ById.X832bcc6686a26d56.set_PlaneBase'capacity raw_ capacity)
-                (Capnp.Gen.ById.X832bcc6686a26d56.set_PlaneBase'maxSpeed raw_ maxSpeed)
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (PlaneBase))
-instance (Classes.Cerialize s (V.Vector (PlaneBase))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (PlaneBase)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (PlaneBase))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (PlaneBase)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (PlaneBase))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (PlaneBase)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (PlaneBase))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data B737 
-    = B737 
-        {base :: PlaneBase}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (B737)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (B737)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (B737)) where
-    type Cerial msg (B737) = (Capnp.Gen.ById.X832bcc6686a26d56.B737 msg)
-    decerialize raw = (B737 <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_B737'base raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (B737)) where
-    marshalInto raw_ value_ = case value_ of
-        B737{..} ->
-            (do
-                ((Classes.cerialize (Untyped.message raw_) base) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_B737'base raw_))
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (B737))
-instance (Classes.Cerialize s (V.Vector (B737))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (B737)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (B737))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (B737)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (B737))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (B737)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (B737))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data A320 
-    = A320 
-        {base :: PlaneBase}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (A320)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (A320)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (A320)) where
-    type Cerial msg (A320) = (Capnp.Gen.ById.X832bcc6686a26d56.A320 msg)
-    decerialize raw = (A320 <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_A320'base raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (A320)) where
-    marshalInto raw_ value_ = case value_ of
-        A320{..} ->
-            (do
-                ((Classes.cerialize (Untyped.message raw_) base) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_A320'base raw_))
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (A320))
-instance (Classes.Cerialize s (V.Vector (A320))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (A320)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (A320))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (A320)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (A320))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (A320)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (A320))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data F16 
-    = F16 
-        {base :: PlaneBase}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (F16)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (F16)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (F16)) where
-    type Cerial msg (F16) = (Capnp.Gen.ById.X832bcc6686a26d56.F16 msg)
-    decerialize raw = (F16 <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_F16'base raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (F16)) where
-    marshalInto raw_ value_ = case value_ of
-        F16{..} ->
-            (do
-                ((Classes.cerialize (Untyped.message raw_) base) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_F16'base raw_))
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (F16))
-instance (Classes.Cerialize s (V.Vector (F16))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (F16)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (F16))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (F16)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (F16))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (F16)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (F16))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data Regression 
-    = Regression 
-        {base :: PlaneBase
-        ,b0 :: Std_.Double
-        ,beta :: (V.Vector Std_.Double)
-        ,planes :: (V.Vector Aircraft)
-        ,ymu :: Std_.Double
-        ,ysd :: Std_.Double}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (Regression)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Regression)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Regression)) where
-    type Cerial msg (Regression) = (Capnp.Gen.ById.X832bcc6686a26d56.Regression msg)
-    decerialize raw = (Regression <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_Regression'base raw) >>= Classes.decerialize)
-                                  <*> (Capnp.Gen.ById.X832bcc6686a26d56.get_Regression'b0 raw)
-                                  <*> ((Capnp.Gen.ById.X832bcc6686a26d56.get_Regression'beta raw) >>= Classes.decerialize)
-                                  <*> ((Capnp.Gen.ById.X832bcc6686a26d56.get_Regression'planes raw) >>= Classes.decerialize)
-                                  <*> (Capnp.Gen.ById.X832bcc6686a26d56.get_Regression'ymu raw)
-                                  <*> (Capnp.Gen.ById.X832bcc6686a26d56.get_Regression'ysd raw))
-instance (Classes.Marshal s (Regression)) where
-    marshalInto raw_ value_ = case value_ of
-        Regression{..} ->
-            (do
-                ((Classes.cerialize (Untyped.message raw_) base) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Regression'base raw_))
-                (Capnp.Gen.ById.X832bcc6686a26d56.set_Regression'b0 raw_ b0)
-                ((Classes.cerialize (Untyped.message raw_) beta) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Regression'beta raw_))
-                ((Classes.cerialize (Untyped.message raw_) planes) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Regression'planes raw_))
-                (Capnp.Gen.ById.X832bcc6686a26d56.set_Regression'ymu raw_ ymu)
-                (Capnp.Gen.ById.X832bcc6686a26d56.set_Regression'ysd raw_ ysd)
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (Regression))
-instance (Classes.Cerialize s (V.Vector (Regression))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Regression)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Regression))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Regression)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Regression))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Regression)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Regression))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data Aircraft 
-    = Aircraft'void 
-    | Aircraft'b737 B737
-    | Aircraft'a320 A320
-    | Aircraft'f16 F16
-    | Aircraft'unknown' Std_.Word16
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (Aircraft)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Aircraft)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Aircraft)) where
-    type Cerial msg (Aircraft) = (Capnp.Gen.ById.X832bcc6686a26d56.Aircraft msg)
-    decerialize raw = (do
-        raw <- (Capnp.Gen.ById.X832bcc6686a26d56.get_Aircraft' raw)
-        case raw of
-            (Capnp.Gen.ById.X832bcc6686a26d56.Aircraft'void) ->
-                (Std_.pure Aircraft'void)
-            (Capnp.Gen.ById.X832bcc6686a26d56.Aircraft'b737 raw) ->
-                (Aircraft'b737 <$> (Classes.decerialize raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Aircraft'a320 raw) ->
-                (Aircraft'a320 <$> (Classes.decerialize raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Aircraft'f16 raw) ->
-                (Aircraft'f16 <$> (Classes.decerialize raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Aircraft'unknown' tag) ->
-                (Std_.pure (Aircraft'unknown' tag))
-        )
-instance (Classes.Marshal s (Aircraft)) where
-    marshalInto raw_ value_ = case value_ of
-        (Aircraft'void) ->
-            (Capnp.Gen.ById.X832bcc6686a26d56.set_Aircraft'void raw_)
-        (Aircraft'b737 arg_) ->
-            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Aircraft'b737 raw_))
-        (Aircraft'a320 arg_) ->
-            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Aircraft'a320 raw_))
-        (Aircraft'f16 arg_) ->
-            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Aircraft'f16 raw_))
-        (Aircraft'unknown' tag) ->
-            (Capnp.Gen.ById.X832bcc6686a26d56.set_Aircraft'unknown' raw_ tag)
-instance (Classes.Cerialize s (Aircraft))
-instance (Classes.Cerialize s (V.Vector (Aircraft))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Aircraft)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Aircraft))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Aircraft)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Aircraft))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Aircraft)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Aircraft))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data Z 
-    = Z'void 
-    | Z'zz Z
-    | Z'f64 Std_.Double
-    | Z'f32 Std_.Float
-    | Z'i64 Std_.Int64
-    | Z'i32 Std_.Int32
-    | Z'i16 Std_.Int16
-    | Z'i8 Std_.Int8
-    | Z'u64 Std_.Word64
-    | Z'u32 Std_.Word32
-    | Z'u16 Std_.Word16
-    | Z'u8 Std_.Word8
-    | Z'bool Std_.Bool
-    | Z'text T.Text
-    | Z'blob BS.ByteString
-    | Z'f64vec (V.Vector Std_.Double)
-    | Z'f32vec (V.Vector Std_.Float)
-    | Z'i64vec (V.Vector Std_.Int64)
-    | Z'i32vec (V.Vector Std_.Int32)
-    | Z'i16vec (V.Vector Std_.Int16)
-    | Z'i8vec (V.Vector Std_.Int8)
-    | Z'u64vec (V.Vector Std_.Word64)
-    | Z'u32vec (V.Vector Std_.Word32)
-    | Z'u16vec (V.Vector Std_.Word16)
-    | Z'u8vec (V.Vector Std_.Word8)
-    | Z'zvec (V.Vector Z)
-    | Z'zvecvec (V.Vector (V.Vector Z))
-    | Z'zdate Zdate
-    | Z'zdata Zdata
-    | Z'aircraftvec (V.Vector Aircraft)
-    | Z'aircraft Aircraft
-    | Z'regression Regression
-    | Z'planebase PlaneBase
-    | Z'airport Capnp.Gen.ById.X832bcc6686a26d56.Airport
-    | Z'b737 B737
-    | Z'a320 A320
-    | Z'f16 F16
-    | Z'zdatevec (V.Vector Zdate)
-    | Z'zdatavec (V.Vector Zdata)
-    | Z'boolvec (V.Vector Std_.Bool)
-    | Z'datavec (V.Vector BS.ByteString)
-    | Z'textvec (V.Vector T.Text)
-    | Z'grp Z'grp
-    | Z'echo Echo
-    | Z'echoBases EchoBases
-    | Z'unknown' Std_.Word16
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (Z)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Z)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Z)) where
-    type Cerial msg (Z) = (Capnp.Gen.ById.X832bcc6686a26d56.Z msg)
-    decerialize raw = (do
-        raw <- (Capnp.Gen.ById.X832bcc6686a26d56.get_Z' raw)
-        case raw of
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'void) ->
-                (Std_.pure Z'void)
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'zz raw) ->
-                (Z'zz <$> (Classes.decerialize raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'f64 raw) ->
-                (Std_.pure (Z'f64 raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'f32 raw) ->
-                (Std_.pure (Z'f32 raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'i64 raw) ->
-                (Std_.pure (Z'i64 raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'i32 raw) ->
-                (Std_.pure (Z'i32 raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'i16 raw) ->
-                (Std_.pure (Z'i16 raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'i8 raw) ->
-                (Std_.pure (Z'i8 raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'u64 raw) ->
-                (Std_.pure (Z'u64 raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'u32 raw) ->
-                (Std_.pure (Z'u32 raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'u16 raw) ->
-                (Std_.pure (Z'u16 raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'u8 raw) ->
-                (Std_.pure (Z'u8 raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'bool raw) ->
-                (Std_.pure (Z'bool raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'text raw) ->
-                (Z'text <$> (Classes.decerialize raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'blob raw) ->
-                (Z'blob <$> (Classes.decerialize raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'f64vec raw) ->
-                (Z'f64vec <$> (Classes.decerialize raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'f32vec raw) ->
-                (Z'f32vec <$> (Classes.decerialize raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'i64vec raw) ->
-                (Z'i64vec <$> (Classes.decerialize raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'i32vec raw) ->
-                (Z'i32vec <$> (Classes.decerialize raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'i16vec raw) ->
-                (Z'i16vec <$> (Classes.decerialize raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'i8vec raw) ->
-                (Z'i8vec <$> (Classes.decerialize raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'u64vec raw) ->
-                (Z'u64vec <$> (Classes.decerialize raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'u32vec raw) ->
-                (Z'u32vec <$> (Classes.decerialize raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'u16vec raw) ->
-                (Z'u16vec <$> (Classes.decerialize raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'u8vec raw) ->
-                (Z'u8vec <$> (Classes.decerialize raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'zvec raw) ->
-                (Z'zvec <$> (Classes.decerialize raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'zvecvec raw) ->
-                (Z'zvecvec <$> (Classes.decerialize raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'zdate raw) ->
-                (Z'zdate <$> (Classes.decerialize raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'zdata raw) ->
-                (Z'zdata <$> (Classes.decerialize raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'aircraftvec raw) ->
-                (Z'aircraftvec <$> (Classes.decerialize raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'aircraft raw) ->
-                (Z'aircraft <$> (Classes.decerialize raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'regression raw) ->
-                (Z'regression <$> (Classes.decerialize raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'planebase raw) ->
-                (Z'planebase <$> (Classes.decerialize raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'airport raw) ->
-                (Std_.pure (Z'airport raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'b737 raw) ->
-                (Z'b737 <$> (Classes.decerialize raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'a320 raw) ->
-                (Z'a320 <$> (Classes.decerialize raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'f16 raw) ->
-                (Z'f16 <$> (Classes.decerialize raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'zdatevec raw) ->
-                (Z'zdatevec <$> (Classes.decerialize raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'zdatavec raw) ->
-                (Z'zdatavec <$> (Classes.decerialize raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'boolvec raw) ->
-                (Z'boolvec <$> (Classes.decerialize raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'datavec raw) ->
-                (Z'datavec <$> (Classes.decerialize raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'textvec raw) ->
-                (Z'textvec <$> (Classes.decerialize raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'grp raw) ->
-                (Z'grp <$> (Classes.decerialize raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'echo raw) ->
-                (Z'echo <$> (Classes.decerialize raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'echoBases raw) ->
-                (Z'echoBases <$> (Classes.decerialize raw))
-            (Capnp.Gen.ById.X832bcc6686a26d56.Z'unknown' tag) ->
-                (Std_.pure (Z'unknown' tag))
-        )
-instance (Classes.Marshal s (Z)) where
-    marshalInto raw_ value_ = case value_ of
-        (Z'void) ->
-            (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'void raw_)
-        (Z'zz arg_) ->
-            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'zz raw_))
-        (Z'f64 arg_) ->
-            (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'f64 raw_ arg_)
-        (Z'f32 arg_) ->
-            (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'f32 raw_ arg_)
-        (Z'i64 arg_) ->
-            (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'i64 raw_ arg_)
-        (Z'i32 arg_) ->
-            (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'i32 raw_ arg_)
-        (Z'i16 arg_) ->
-            (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'i16 raw_ arg_)
-        (Z'i8 arg_) ->
-            (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'i8 raw_ arg_)
-        (Z'u64 arg_) ->
-            (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'u64 raw_ arg_)
-        (Z'u32 arg_) ->
-            (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'u32 raw_ arg_)
-        (Z'u16 arg_) ->
-            (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'u16 raw_ arg_)
-        (Z'u8 arg_) ->
-            (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'u8 raw_ arg_)
-        (Z'bool arg_) ->
-            (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'bool raw_ arg_)
-        (Z'text arg_) ->
-            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'text raw_))
-        (Z'blob arg_) ->
-            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'blob raw_))
-        (Z'f64vec arg_) ->
-            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'f64vec raw_))
-        (Z'f32vec arg_) ->
-            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'f32vec raw_))
-        (Z'i64vec arg_) ->
-            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'i64vec raw_))
-        (Z'i32vec arg_) ->
-            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'i32vec raw_))
-        (Z'i16vec arg_) ->
-            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'i16vec raw_))
-        (Z'i8vec arg_) ->
-            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'i8vec raw_))
-        (Z'u64vec arg_) ->
-            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'u64vec raw_))
-        (Z'u32vec arg_) ->
-            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'u32vec raw_))
-        (Z'u16vec arg_) ->
-            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'u16vec raw_))
-        (Z'u8vec arg_) ->
-            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'u8vec raw_))
-        (Z'zvec arg_) ->
-            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'zvec raw_))
-        (Z'zvecvec arg_) ->
-            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'zvecvec raw_))
-        (Z'zdate arg_) ->
-            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'zdate raw_))
-        (Z'zdata arg_) ->
-            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'zdata raw_))
-        (Z'aircraftvec arg_) ->
-            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'aircraftvec raw_))
-        (Z'aircraft arg_) ->
-            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'aircraft raw_))
-        (Z'regression arg_) ->
-            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'regression raw_))
-        (Z'planebase arg_) ->
-            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'planebase raw_))
-        (Z'airport arg_) ->
-            (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'airport raw_ arg_)
-        (Z'b737 arg_) ->
-            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'b737 raw_))
-        (Z'a320 arg_) ->
-            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'a320 raw_))
-        (Z'f16 arg_) ->
-            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'f16 raw_))
-        (Z'zdatevec arg_) ->
-            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'zdatevec raw_))
-        (Z'zdatavec arg_) ->
-            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'zdatavec raw_))
-        (Z'boolvec arg_) ->
-            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'boolvec raw_))
-        (Z'datavec arg_) ->
-            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'datavec raw_))
-        (Z'textvec arg_) ->
-            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'textvec raw_))
-        (Z'grp arg_) ->
-            (do
-                raw_ <- (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'grp raw_)
-                (Classes.marshalInto raw_ arg_)
-                )
-        (Z'echo arg_) ->
-            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'echo raw_))
-        (Z'echoBases arg_) ->
-            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'echoBases raw_))
-        (Z'unknown' tag) ->
-            (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'unknown' raw_ tag)
-instance (Classes.Cerialize s (Z))
-instance (Classes.Cerialize s (V.Vector (Z))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Z)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Z))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Z)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Z))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Z)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Z))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data Z'grp 
-    = Z'grp' 
-        {first :: Std_.Word64
-        ,second :: Std_.Word64}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (Z'grp)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Z'grp)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Z'grp)) where
-    type Cerial msg (Z'grp) = (Capnp.Gen.ById.X832bcc6686a26d56.Z'grp msg)
-    decerialize raw = (Z'grp' <$> (Capnp.Gen.ById.X832bcc6686a26d56.get_Z'grp'first raw)
-                              <*> (Capnp.Gen.ById.X832bcc6686a26d56.get_Z'grp'second raw))
-instance (Classes.Marshal s (Z'grp)) where
-    marshalInto raw_ value_ = case value_ of
-        Z'grp'{..} ->
-            (do
-                (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'grp'first raw_ first)
-                (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'grp'second raw_ second)
-                (Std_.pure ())
-                )
-data Counter 
-    = Counter 
-        {size :: Std_.Int64
-        ,words :: T.Text
-        ,wordlist :: (V.Vector T.Text)}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (Counter)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Counter)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Counter)) where
-    type Cerial msg (Counter) = (Capnp.Gen.ById.X832bcc6686a26d56.Counter msg)
-    decerialize raw = (Counter <$> (Capnp.Gen.ById.X832bcc6686a26d56.get_Counter'size raw)
-                               <*> ((Capnp.Gen.ById.X832bcc6686a26d56.get_Counter'words raw) >>= Classes.decerialize)
-                               <*> ((Capnp.Gen.ById.X832bcc6686a26d56.get_Counter'wordlist raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Counter)) where
-    marshalInto raw_ value_ = case value_ of
-        Counter{..} ->
-            (do
-                (Capnp.Gen.ById.X832bcc6686a26d56.set_Counter'size raw_ size)
-                ((Classes.cerialize (Untyped.message raw_) words) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Counter'words raw_))
-                ((Classes.cerialize (Untyped.message raw_) wordlist) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Counter'wordlist raw_))
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (Counter))
-instance (Classes.Cerialize s (V.Vector (Counter))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Counter)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Counter))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Counter)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Counter))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Counter)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Counter))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data Bag 
-    = Bag 
-        {counter :: Counter}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (Bag)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Bag)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Bag)) where
-    type Cerial msg (Bag) = (Capnp.Gen.ById.X832bcc6686a26d56.Bag msg)
-    decerialize raw = (Bag <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_Bag'counter raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Bag)) where
-    marshalInto raw_ value_ = case value_ of
-        Bag{..} ->
-            (do
-                ((Classes.cerialize (Untyped.message raw_) counter) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Bag'counter raw_))
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (Bag))
-instance (Classes.Cerialize s (V.Vector (Bag))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Bag)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Bag))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Bag)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Bag))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Bag)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Bag))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data Zserver 
-    = Zserver 
-        {waitingjobs :: (V.Vector Zjob)}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (Zserver)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Zserver)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Zserver)) where
-    type Cerial msg (Zserver) = (Capnp.Gen.ById.X832bcc6686a26d56.Zserver msg)
-    decerialize raw = (Zserver <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_Zserver'waitingjobs raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Zserver)) where
-    marshalInto raw_ value_ = case value_ of
-        Zserver{..} ->
-            (do
-                ((Classes.cerialize (Untyped.message raw_) waitingjobs) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Zserver'waitingjobs raw_))
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (Zserver))
-instance (Classes.Cerialize s (V.Vector (Zserver))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Zserver)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Zserver))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Zserver)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Zserver))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Zserver)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Zserver))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data Zjob 
-    = Zjob 
-        {cmd :: T.Text
-        ,args :: (V.Vector T.Text)}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (Zjob)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Zjob)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Zjob)) where
-    type Cerial msg (Zjob) = (Capnp.Gen.ById.X832bcc6686a26d56.Zjob msg)
-    decerialize raw = (Zjob <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_Zjob'cmd raw) >>= Classes.decerialize)
-                            <*> ((Capnp.Gen.ById.X832bcc6686a26d56.get_Zjob'args raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Zjob)) where
-    marshalInto raw_ value_ = case value_ of
-        Zjob{..} ->
-            (do
-                ((Classes.cerialize (Untyped.message raw_) cmd) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Zjob'cmd raw_))
-                ((Classes.cerialize (Untyped.message raw_) args) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Zjob'args raw_))
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (Zjob))
-instance (Classes.Cerialize s (V.Vector (Zjob))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Zjob)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Zjob))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Zjob)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Zjob))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Zjob)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Zjob))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data VerEmpty 
-    = VerEmpty 
-        {}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (VerEmpty)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (VerEmpty)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (VerEmpty)) where
-    type Cerial msg (VerEmpty) = (Capnp.Gen.ById.X832bcc6686a26d56.VerEmpty msg)
-    decerialize raw = (Std_.pure VerEmpty)
-instance (Classes.Marshal s (VerEmpty)) where
-    marshalInto raw_ value_ = case value_ of
-        (VerEmpty) ->
-            (do
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (VerEmpty))
-instance (Classes.Cerialize s (V.Vector (VerEmpty))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (VerEmpty)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (VerEmpty))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (VerEmpty)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (VerEmpty))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (VerEmpty)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (VerEmpty))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data VerOneData 
-    = VerOneData 
-        {val :: Std_.Int16}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (VerOneData)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (VerOneData)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (VerOneData)) where
-    type Cerial msg (VerOneData) = (Capnp.Gen.ById.X832bcc6686a26d56.VerOneData msg)
-    decerialize raw = (VerOneData <$> (Capnp.Gen.ById.X832bcc6686a26d56.get_VerOneData'val raw))
-instance (Classes.Marshal s (VerOneData)) where
-    marshalInto raw_ value_ = case value_ of
-        VerOneData{..} ->
-            (do
-                (Capnp.Gen.ById.X832bcc6686a26d56.set_VerOneData'val raw_ val)
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (VerOneData))
-instance (Classes.Cerialize s (V.Vector (VerOneData))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (VerOneData)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (VerOneData))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (VerOneData)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (VerOneData))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (VerOneData)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (VerOneData))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data VerTwoData 
-    = VerTwoData 
-        {val :: Std_.Int16
-        ,duo :: Std_.Int64}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (VerTwoData)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (VerTwoData)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (VerTwoData)) where
-    type Cerial msg (VerTwoData) = (Capnp.Gen.ById.X832bcc6686a26d56.VerTwoData msg)
-    decerialize raw = (VerTwoData <$> (Capnp.Gen.ById.X832bcc6686a26d56.get_VerTwoData'val raw)
-                                  <*> (Capnp.Gen.ById.X832bcc6686a26d56.get_VerTwoData'duo raw))
-instance (Classes.Marshal s (VerTwoData)) where
-    marshalInto raw_ value_ = case value_ of
-        VerTwoData{..} ->
-            (do
-                (Capnp.Gen.ById.X832bcc6686a26d56.set_VerTwoData'val raw_ val)
-                (Capnp.Gen.ById.X832bcc6686a26d56.set_VerTwoData'duo raw_ duo)
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (VerTwoData))
-instance (Classes.Cerialize s (V.Vector (VerTwoData))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (VerTwoData)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (VerTwoData))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (VerTwoData)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (VerTwoData))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (VerTwoData)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (VerTwoData))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data VerOnePtr 
-    = VerOnePtr 
-        {ptr :: VerOneData}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (VerOnePtr)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (VerOnePtr)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (VerOnePtr)) where
-    type Cerial msg (VerOnePtr) = (Capnp.Gen.ById.X832bcc6686a26d56.VerOnePtr msg)
-    decerialize raw = (VerOnePtr <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_VerOnePtr'ptr raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (VerOnePtr)) where
-    marshalInto raw_ value_ = case value_ of
-        VerOnePtr{..} ->
-            (do
-                ((Classes.cerialize (Untyped.message raw_) ptr) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_VerOnePtr'ptr raw_))
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (VerOnePtr))
-instance (Classes.Cerialize s (V.Vector (VerOnePtr))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (VerOnePtr)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (VerOnePtr))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (VerOnePtr)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (VerOnePtr))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (VerOnePtr)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (VerOnePtr))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data VerTwoPtr 
-    = VerTwoPtr 
-        {ptr1 :: VerOneData
-        ,ptr2 :: VerOneData}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (VerTwoPtr)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (VerTwoPtr)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (VerTwoPtr)) where
-    type Cerial msg (VerTwoPtr) = (Capnp.Gen.ById.X832bcc6686a26d56.VerTwoPtr msg)
-    decerialize raw = (VerTwoPtr <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_VerTwoPtr'ptr1 raw) >>= Classes.decerialize)
-                                 <*> ((Capnp.Gen.ById.X832bcc6686a26d56.get_VerTwoPtr'ptr2 raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (VerTwoPtr)) where
-    marshalInto raw_ value_ = case value_ of
-        VerTwoPtr{..} ->
-            (do
-                ((Classes.cerialize (Untyped.message raw_) ptr1) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_VerTwoPtr'ptr1 raw_))
-                ((Classes.cerialize (Untyped.message raw_) ptr2) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_VerTwoPtr'ptr2 raw_))
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (VerTwoPtr))
-instance (Classes.Cerialize s (V.Vector (VerTwoPtr))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (VerTwoPtr)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (VerTwoPtr))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (VerTwoPtr)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (VerTwoPtr))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (VerTwoPtr)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (VerTwoPtr))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data VerTwoDataTwoPtr 
-    = VerTwoDataTwoPtr 
-        {val :: Std_.Int16
-        ,duo :: Std_.Int64
-        ,ptr1 :: VerOneData
-        ,ptr2 :: VerOneData}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (VerTwoDataTwoPtr)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (VerTwoDataTwoPtr)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (VerTwoDataTwoPtr)) where
-    type Cerial msg (VerTwoDataTwoPtr) = (Capnp.Gen.ById.X832bcc6686a26d56.VerTwoDataTwoPtr msg)
-    decerialize raw = (VerTwoDataTwoPtr <$> (Capnp.Gen.ById.X832bcc6686a26d56.get_VerTwoDataTwoPtr'val raw)
-                                        <*> (Capnp.Gen.ById.X832bcc6686a26d56.get_VerTwoDataTwoPtr'duo raw)
-                                        <*> ((Capnp.Gen.ById.X832bcc6686a26d56.get_VerTwoDataTwoPtr'ptr1 raw) >>= Classes.decerialize)
-                                        <*> ((Capnp.Gen.ById.X832bcc6686a26d56.get_VerTwoDataTwoPtr'ptr2 raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (VerTwoDataTwoPtr)) where
-    marshalInto raw_ value_ = case value_ of
-        VerTwoDataTwoPtr{..} ->
-            (do
-                (Capnp.Gen.ById.X832bcc6686a26d56.set_VerTwoDataTwoPtr'val raw_ val)
-                (Capnp.Gen.ById.X832bcc6686a26d56.set_VerTwoDataTwoPtr'duo raw_ duo)
-                ((Classes.cerialize (Untyped.message raw_) ptr1) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_VerTwoDataTwoPtr'ptr1 raw_))
-                ((Classes.cerialize (Untyped.message raw_) ptr2) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_VerTwoDataTwoPtr'ptr2 raw_))
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (VerTwoDataTwoPtr))
-instance (Classes.Cerialize s (V.Vector (VerTwoDataTwoPtr))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (VerTwoDataTwoPtr)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (VerTwoDataTwoPtr))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (VerTwoDataTwoPtr)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (VerTwoDataTwoPtr))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (VerTwoDataTwoPtr)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (VerTwoDataTwoPtr))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data HoldsVerEmptyList 
-    = HoldsVerEmptyList 
-        {mylist :: (V.Vector VerEmpty)}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (HoldsVerEmptyList)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (HoldsVerEmptyList)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (HoldsVerEmptyList)) where
-    type Cerial msg (HoldsVerEmptyList) = (Capnp.Gen.ById.X832bcc6686a26d56.HoldsVerEmptyList msg)
-    decerialize raw = (HoldsVerEmptyList <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_HoldsVerEmptyList'mylist raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (HoldsVerEmptyList)) where
-    marshalInto raw_ value_ = case value_ of
-        HoldsVerEmptyList{..} ->
-            (do
-                ((Classes.cerialize (Untyped.message raw_) mylist) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_HoldsVerEmptyList'mylist raw_))
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (HoldsVerEmptyList))
-instance (Classes.Cerialize s (V.Vector (HoldsVerEmptyList))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (HoldsVerEmptyList)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (HoldsVerEmptyList))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (HoldsVerEmptyList)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (HoldsVerEmptyList))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (HoldsVerEmptyList)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (HoldsVerEmptyList))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data HoldsVerOneDataList 
-    = HoldsVerOneDataList 
-        {mylist :: (V.Vector VerOneData)}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (HoldsVerOneDataList)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (HoldsVerOneDataList)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (HoldsVerOneDataList)) where
-    type Cerial msg (HoldsVerOneDataList) = (Capnp.Gen.ById.X832bcc6686a26d56.HoldsVerOneDataList msg)
-    decerialize raw = (HoldsVerOneDataList <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_HoldsVerOneDataList'mylist raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (HoldsVerOneDataList)) where
-    marshalInto raw_ value_ = case value_ of
-        HoldsVerOneDataList{..} ->
-            (do
-                ((Classes.cerialize (Untyped.message raw_) mylist) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_HoldsVerOneDataList'mylist raw_))
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (HoldsVerOneDataList))
-instance (Classes.Cerialize s (V.Vector (HoldsVerOneDataList))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (HoldsVerOneDataList)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (HoldsVerOneDataList))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (HoldsVerOneDataList)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (HoldsVerOneDataList))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (HoldsVerOneDataList)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (HoldsVerOneDataList))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data HoldsVerTwoDataList 
-    = HoldsVerTwoDataList 
-        {mylist :: (V.Vector VerTwoData)}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (HoldsVerTwoDataList)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (HoldsVerTwoDataList)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (HoldsVerTwoDataList)) where
-    type Cerial msg (HoldsVerTwoDataList) = (Capnp.Gen.ById.X832bcc6686a26d56.HoldsVerTwoDataList msg)
-    decerialize raw = (HoldsVerTwoDataList <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_HoldsVerTwoDataList'mylist raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (HoldsVerTwoDataList)) where
-    marshalInto raw_ value_ = case value_ of
-        HoldsVerTwoDataList{..} ->
-            (do
-                ((Classes.cerialize (Untyped.message raw_) mylist) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_HoldsVerTwoDataList'mylist raw_))
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (HoldsVerTwoDataList))
-instance (Classes.Cerialize s (V.Vector (HoldsVerTwoDataList))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (HoldsVerTwoDataList)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (HoldsVerTwoDataList))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (HoldsVerTwoDataList)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (HoldsVerTwoDataList))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (HoldsVerTwoDataList)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (HoldsVerTwoDataList))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data HoldsVerOnePtrList 
-    = HoldsVerOnePtrList 
-        {mylist :: (V.Vector VerOnePtr)}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (HoldsVerOnePtrList)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (HoldsVerOnePtrList)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (HoldsVerOnePtrList)) where
-    type Cerial msg (HoldsVerOnePtrList) = (Capnp.Gen.ById.X832bcc6686a26d56.HoldsVerOnePtrList msg)
-    decerialize raw = (HoldsVerOnePtrList <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_HoldsVerOnePtrList'mylist raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (HoldsVerOnePtrList)) where
-    marshalInto raw_ value_ = case value_ of
-        HoldsVerOnePtrList{..} ->
-            (do
-                ((Classes.cerialize (Untyped.message raw_) mylist) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_HoldsVerOnePtrList'mylist raw_))
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (HoldsVerOnePtrList))
-instance (Classes.Cerialize s (V.Vector (HoldsVerOnePtrList))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (HoldsVerOnePtrList)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (HoldsVerOnePtrList))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (HoldsVerOnePtrList)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (HoldsVerOnePtrList))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (HoldsVerOnePtrList)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (HoldsVerOnePtrList))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data HoldsVerTwoPtrList 
-    = HoldsVerTwoPtrList 
-        {mylist :: (V.Vector VerTwoPtr)}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (HoldsVerTwoPtrList)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (HoldsVerTwoPtrList)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (HoldsVerTwoPtrList)) where
-    type Cerial msg (HoldsVerTwoPtrList) = (Capnp.Gen.ById.X832bcc6686a26d56.HoldsVerTwoPtrList msg)
-    decerialize raw = (HoldsVerTwoPtrList <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_HoldsVerTwoPtrList'mylist raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (HoldsVerTwoPtrList)) where
-    marshalInto raw_ value_ = case value_ of
-        HoldsVerTwoPtrList{..} ->
-            (do
-                ((Classes.cerialize (Untyped.message raw_) mylist) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_HoldsVerTwoPtrList'mylist raw_))
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (HoldsVerTwoPtrList))
-instance (Classes.Cerialize s (V.Vector (HoldsVerTwoPtrList))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (HoldsVerTwoPtrList)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (HoldsVerTwoPtrList))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (HoldsVerTwoPtrList)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (HoldsVerTwoPtrList))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (HoldsVerTwoPtrList)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (HoldsVerTwoPtrList))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data HoldsVerTwoTwoList 
-    = HoldsVerTwoTwoList 
-        {mylist :: (V.Vector VerTwoDataTwoPtr)}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (HoldsVerTwoTwoList)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (HoldsVerTwoTwoList)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (HoldsVerTwoTwoList)) where
-    type Cerial msg (HoldsVerTwoTwoList) = (Capnp.Gen.ById.X832bcc6686a26d56.HoldsVerTwoTwoList msg)
-    decerialize raw = (HoldsVerTwoTwoList <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_HoldsVerTwoTwoList'mylist raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (HoldsVerTwoTwoList)) where
-    marshalInto raw_ value_ = case value_ of
-        HoldsVerTwoTwoList{..} ->
-            (do
-                ((Classes.cerialize (Untyped.message raw_) mylist) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_HoldsVerTwoTwoList'mylist raw_))
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (HoldsVerTwoTwoList))
-instance (Classes.Cerialize s (V.Vector (HoldsVerTwoTwoList))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (HoldsVerTwoTwoList)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (HoldsVerTwoTwoList))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (HoldsVerTwoTwoList)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (HoldsVerTwoTwoList))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (HoldsVerTwoTwoList)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (HoldsVerTwoTwoList))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data HoldsVerTwoTwoPlus 
-    = HoldsVerTwoTwoPlus 
-        {mylist :: (V.Vector VerTwoTwoPlus)}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (HoldsVerTwoTwoPlus)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (HoldsVerTwoTwoPlus)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (HoldsVerTwoTwoPlus)) where
-    type Cerial msg (HoldsVerTwoTwoPlus) = (Capnp.Gen.ById.X832bcc6686a26d56.HoldsVerTwoTwoPlus msg)
-    decerialize raw = (HoldsVerTwoTwoPlus <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_HoldsVerTwoTwoPlus'mylist raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (HoldsVerTwoTwoPlus)) where
-    marshalInto raw_ value_ = case value_ of
-        HoldsVerTwoTwoPlus{..} ->
-            (do
-                ((Classes.cerialize (Untyped.message raw_) mylist) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_HoldsVerTwoTwoPlus'mylist raw_))
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (HoldsVerTwoTwoPlus))
-instance (Classes.Cerialize s (V.Vector (HoldsVerTwoTwoPlus))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (HoldsVerTwoTwoPlus)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (HoldsVerTwoTwoPlus))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (HoldsVerTwoTwoPlus)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (HoldsVerTwoTwoPlus))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (HoldsVerTwoTwoPlus)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (HoldsVerTwoTwoPlus))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data VerTwoTwoPlus 
-    = VerTwoTwoPlus 
-        {val :: Std_.Int16
-        ,duo :: Std_.Int64
-        ,ptr1 :: VerTwoDataTwoPtr
-        ,ptr2 :: VerTwoDataTwoPtr
-        ,tre :: Std_.Int64
-        ,lst3 :: (V.Vector Std_.Int64)}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (VerTwoTwoPlus)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (VerTwoTwoPlus)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (VerTwoTwoPlus)) where
-    type Cerial msg (VerTwoTwoPlus) = (Capnp.Gen.ById.X832bcc6686a26d56.VerTwoTwoPlus msg)
-    decerialize raw = (VerTwoTwoPlus <$> (Capnp.Gen.ById.X832bcc6686a26d56.get_VerTwoTwoPlus'val raw)
-                                     <*> (Capnp.Gen.ById.X832bcc6686a26d56.get_VerTwoTwoPlus'duo raw)
-                                     <*> ((Capnp.Gen.ById.X832bcc6686a26d56.get_VerTwoTwoPlus'ptr1 raw) >>= Classes.decerialize)
-                                     <*> ((Capnp.Gen.ById.X832bcc6686a26d56.get_VerTwoTwoPlus'ptr2 raw) >>= Classes.decerialize)
-                                     <*> (Capnp.Gen.ById.X832bcc6686a26d56.get_VerTwoTwoPlus'tre raw)
-                                     <*> ((Capnp.Gen.ById.X832bcc6686a26d56.get_VerTwoTwoPlus'lst3 raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (VerTwoTwoPlus)) where
-    marshalInto raw_ value_ = case value_ of
-        VerTwoTwoPlus{..} ->
-            (do
-                (Capnp.Gen.ById.X832bcc6686a26d56.set_VerTwoTwoPlus'val raw_ val)
-                (Capnp.Gen.ById.X832bcc6686a26d56.set_VerTwoTwoPlus'duo raw_ duo)
-                ((Classes.cerialize (Untyped.message raw_) ptr1) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_VerTwoTwoPlus'ptr1 raw_))
-                ((Classes.cerialize (Untyped.message raw_) ptr2) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_VerTwoTwoPlus'ptr2 raw_))
-                (Capnp.Gen.ById.X832bcc6686a26d56.set_VerTwoTwoPlus'tre raw_ tre)
-                ((Classes.cerialize (Untyped.message raw_) lst3) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_VerTwoTwoPlus'lst3 raw_))
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (VerTwoTwoPlus))
-instance (Classes.Cerialize s (V.Vector (VerTwoTwoPlus))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (VerTwoTwoPlus)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (VerTwoTwoPlus))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (VerTwoTwoPlus)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (VerTwoTwoPlus))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (VerTwoTwoPlus)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (VerTwoTwoPlus))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data HoldsText 
-    = HoldsText 
-        {txt :: T.Text
-        ,lst :: (V.Vector T.Text)
-        ,lstlst :: (V.Vector (V.Vector T.Text))}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (HoldsText)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (HoldsText)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (HoldsText)) where
-    type Cerial msg (HoldsText) = (Capnp.Gen.ById.X832bcc6686a26d56.HoldsText msg)
-    decerialize raw = (HoldsText <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_HoldsText'txt raw) >>= Classes.decerialize)
-                                 <*> ((Capnp.Gen.ById.X832bcc6686a26d56.get_HoldsText'lst raw) >>= Classes.decerialize)
-                                 <*> ((Capnp.Gen.ById.X832bcc6686a26d56.get_HoldsText'lstlst raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (HoldsText)) where
-    marshalInto raw_ value_ = case value_ of
-        HoldsText{..} ->
-            (do
-                ((Classes.cerialize (Untyped.message raw_) txt) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_HoldsText'txt raw_))
-                ((Classes.cerialize (Untyped.message raw_) lst) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_HoldsText'lst raw_))
-                ((Classes.cerialize (Untyped.message raw_) lstlst) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_HoldsText'lstlst raw_))
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (HoldsText))
-instance (Classes.Cerialize s (V.Vector (HoldsText))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (HoldsText)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (HoldsText))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (HoldsText)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (HoldsText))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (HoldsText)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (HoldsText))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data WrapEmpty 
-    = WrapEmpty 
-        {mightNotBeReallyEmpty :: VerEmpty}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (WrapEmpty)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (WrapEmpty)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (WrapEmpty)) where
-    type Cerial msg (WrapEmpty) = (Capnp.Gen.ById.X832bcc6686a26d56.WrapEmpty msg)
-    decerialize raw = (WrapEmpty <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_WrapEmpty'mightNotBeReallyEmpty raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (WrapEmpty)) where
-    marshalInto raw_ value_ = case value_ of
-        WrapEmpty{..} ->
-            (do
-                ((Classes.cerialize (Untyped.message raw_) mightNotBeReallyEmpty) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_WrapEmpty'mightNotBeReallyEmpty raw_))
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (WrapEmpty))
-instance (Classes.Cerialize s (V.Vector (WrapEmpty))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (WrapEmpty)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (WrapEmpty))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (WrapEmpty)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (WrapEmpty))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (WrapEmpty)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (WrapEmpty))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data Wrap2x2 
-    = Wrap2x2 
-        {mightNotBeReallyEmpty :: VerTwoDataTwoPtr}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (Wrap2x2)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Wrap2x2)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Wrap2x2)) where
-    type Cerial msg (Wrap2x2) = (Capnp.Gen.ById.X832bcc6686a26d56.Wrap2x2 msg)
-    decerialize raw = (Wrap2x2 <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_Wrap2x2'mightNotBeReallyEmpty raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Wrap2x2)) where
-    marshalInto raw_ value_ = case value_ of
-        Wrap2x2{..} ->
-            (do
-                ((Classes.cerialize (Untyped.message raw_) mightNotBeReallyEmpty) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Wrap2x2'mightNotBeReallyEmpty raw_))
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (Wrap2x2))
-instance (Classes.Cerialize s (V.Vector (Wrap2x2))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Wrap2x2)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Wrap2x2))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Wrap2x2)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Wrap2x2))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Wrap2x2)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Wrap2x2))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data Wrap2x2plus 
-    = Wrap2x2plus 
-        {mightNotBeReallyEmpty :: VerTwoTwoPlus}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (Wrap2x2plus)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Wrap2x2plus)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Wrap2x2plus)) where
-    type Cerial msg (Wrap2x2plus) = (Capnp.Gen.ById.X832bcc6686a26d56.Wrap2x2plus msg)
-    decerialize raw = (Wrap2x2plus <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_Wrap2x2plus'mightNotBeReallyEmpty raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Wrap2x2plus)) where
-    marshalInto raw_ value_ = case value_ of
-        Wrap2x2plus{..} ->
-            (do
-                ((Classes.cerialize (Untyped.message raw_) mightNotBeReallyEmpty) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Wrap2x2plus'mightNotBeReallyEmpty raw_))
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (Wrap2x2plus))
-instance (Classes.Cerialize s (V.Vector (Wrap2x2plus))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Wrap2x2plus)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Wrap2x2plus))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Wrap2x2plus)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Wrap2x2plus))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Wrap2x2plus)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Wrap2x2plus))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data VoidUnion 
-    = VoidUnion'a 
-    | VoidUnion'b 
-    | VoidUnion'unknown' Std_.Word16
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (VoidUnion)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (VoidUnion)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (VoidUnion)) where
-    type Cerial msg (VoidUnion) = (Capnp.Gen.ById.X832bcc6686a26d56.VoidUnion msg)
-    decerialize raw = (do
-        raw <- (Capnp.Gen.ById.X832bcc6686a26d56.get_VoidUnion' raw)
-        case raw of
-            (Capnp.Gen.ById.X832bcc6686a26d56.VoidUnion'a) ->
-                (Std_.pure VoidUnion'a)
-            (Capnp.Gen.ById.X832bcc6686a26d56.VoidUnion'b) ->
-                (Std_.pure VoidUnion'b)
-            (Capnp.Gen.ById.X832bcc6686a26d56.VoidUnion'unknown' tag) ->
-                (Std_.pure (VoidUnion'unknown' tag))
-        )
-instance (Classes.Marshal s (VoidUnion)) where
-    marshalInto raw_ value_ = case value_ of
-        (VoidUnion'a) ->
-            (Capnp.Gen.ById.X832bcc6686a26d56.set_VoidUnion'a raw_)
-        (VoidUnion'b) ->
-            (Capnp.Gen.ById.X832bcc6686a26d56.set_VoidUnion'b raw_)
-        (VoidUnion'unknown' tag) ->
-            (Capnp.Gen.ById.X832bcc6686a26d56.set_VoidUnion'unknown' raw_ tag)
-instance (Classes.Cerialize s (VoidUnion))
-instance (Classes.Cerialize s (V.Vector (VoidUnion))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (VoidUnion)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (VoidUnion))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (VoidUnion)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (VoidUnion))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (VoidUnion)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (VoidUnion))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data Nester1Capn 
-    = Nester1Capn 
-        {strs :: (V.Vector T.Text)}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (Nester1Capn)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Nester1Capn)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Nester1Capn)) where
-    type Cerial msg (Nester1Capn) = (Capnp.Gen.ById.X832bcc6686a26d56.Nester1Capn msg)
-    decerialize raw = (Nester1Capn <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_Nester1Capn'strs raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Nester1Capn)) where
-    marshalInto raw_ value_ = case value_ of
-        Nester1Capn{..} ->
-            (do
-                ((Classes.cerialize (Untyped.message raw_) strs) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Nester1Capn'strs raw_))
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (Nester1Capn))
-instance (Classes.Cerialize s (V.Vector (Nester1Capn))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Nester1Capn)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Nester1Capn))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Nester1Capn)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Nester1Capn))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Nester1Capn)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Nester1Capn))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data RWTestCapn 
-    = RWTestCapn 
-        {nestMatrix :: (V.Vector (V.Vector Nester1Capn))}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (RWTestCapn)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (RWTestCapn)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (RWTestCapn)) where
-    type Cerial msg (RWTestCapn) = (Capnp.Gen.ById.X832bcc6686a26d56.RWTestCapn msg)
-    decerialize raw = (RWTestCapn <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_RWTestCapn'nestMatrix raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (RWTestCapn)) where
-    marshalInto raw_ value_ = case value_ of
-        RWTestCapn{..} ->
-            (do
-                ((Classes.cerialize (Untyped.message raw_) nestMatrix) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_RWTestCapn'nestMatrix raw_))
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (RWTestCapn))
-instance (Classes.Cerialize s (V.Vector (RWTestCapn))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (RWTestCapn)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (RWTestCapn))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (RWTestCapn)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (RWTestCapn))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (RWTestCapn)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (RWTestCapn))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data ListStructCapn 
-    = ListStructCapn 
-        {vec :: (V.Vector Nester1Capn)}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (ListStructCapn)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (ListStructCapn)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (ListStructCapn)) where
-    type Cerial msg (ListStructCapn) = (Capnp.Gen.ById.X832bcc6686a26d56.ListStructCapn msg)
-    decerialize raw = (ListStructCapn <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_ListStructCapn'vec raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (ListStructCapn)) where
-    marshalInto raw_ value_ = case value_ of
-        ListStructCapn{..} ->
-            (do
-                ((Classes.cerialize (Untyped.message raw_) vec) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_ListStructCapn'vec raw_))
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (ListStructCapn))
-instance (Classes.Cerialize s (V.Vector (ListStructCapn))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (ListStructCapn)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (ListStructCapn))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (ListStructCapn)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (ListStructCapn))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (ListStructCapn)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (ListStructCapn))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-newtype Echo 
-    = Echo Message.Client
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-class ((MonadIO.MonadIO m)
-      ,(Server.Server m cap)) => (Echo'server_ m cap) where
-    {-# MINIMAL echo'echo #-}
-    echo'echo :: cap -> (Server.MethodHandler m Echo'echo'params Echo'echo'results)
-    echo'echo _ = Server.methodUnimplemented
-export_Echo :: ((STM.MonadSTM m)
-               ,(Echo'server_ Std_.IO cap)) => Supervisors.Supervisor -> cap -> (m (Echo))
-export_Echo sup_ server_ = (STM.liftSTM (Echo <$> (Rpc.export sup_ Server.ServerOps{handleCast = (Server.unwrap server_)
-                                                                                   ,handleStop = (Server.shutdown server_)
-                                                                                   ,handleCall = (\interfaceId_ methodId_ -> case interfaceId_ of
-                                                                                       10255578992688506164 ->
-                                                                                           case methodId_ of
-                                                                                               0 ->
-                                                                                                   (Server.toUntypedHandler (echo'echo server_))
-                                                                                               _ ->
-                                                                                                   Server.methodUnimplemented
-                                                                                       _ ->
-                                                                                           Server.methodUnimplemented)})))
-instance (Rpc.IsClient (Echo)) where
-    fromClient  = Echo
-    toClient (Echo client) = client
-instance (Classes.FromPtr msg (Echo)) where
-    fromPtr  = RpcHelpers.isClientFromPtr
-instance (Classes.ToPtr s (Echo)) where
-    toPtr  = RpcHelpers.isClientToPtr
-instance (Classes.Decerialize (Echo)) where
-    type Cerial msg (Echo) = (Capnp.Gen.ById.X832bcc6686a26d56.Echo msg)
-    decerialize (Capnp.Gen.ById.X832bcc6686a26d56.Echo'newtype_ maybeCap) = case maybeCap of
-        (Std_.Nothing) ->
-            (Std_.pure (Echo Message.nullClient))
-        (Std_.Just cap) ->
-            (Echo <$> (Untyped.getClient cap))
-instance (Classes.Cerialize s (Echo)) where
-    cerialize msg (Echo client) = (Capnp.Gen.ById.X832bcc6686a26d56.Echo'newtype_ <$> (Std_.Just <$> (Untyped.appendCap msg client)))
-instance (Server.Server Std_.IO (Echo))
-instance (Echo'server_ Std_.IO (Echo)) where
-    echo'echo (Echo client) = (Rpc.clientMethodHandler 10255578992688506164 0 client)
-data Echo'echo'params 
-    = Echo'echo'params 
-        {in_ :: T.Text}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (Echo'echo'params)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Echo'echo'params)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Echo'echo'params)) where
-    type Cerial msg (Echo'echo'params) = (Capnp.Gen.ById.X832bcc6686a26d56.Echo'echo'params msg)
-    decerialize raw = (Echo'echo'params <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_Echo'echo'params'in_ raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Echo'echo'params)) where
-    marshalInto raw_ value_ = case value_ of
-        Echo'echo'params{..} ->
-            (do
-                ((Classes.cerialize (Untyped.message raw_) in_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Echo'echo'params'in_ raw_))
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (Echo'echo'params))
-instance (Classes.Cerialize s (V.Vector (Echo'echo'params))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Echo'echo'params)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Echo'echo'params))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Echo'echo'params)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Echo'echo'params))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Echo'echo'params)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Echo'echo'params))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data Echo'echo'results 
-    = Echo'echo'results 
-        {out :: T.Text}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (Echo'echo'results)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Echo'echo'results)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Echo'echo'results)) where
-    type Cerial msg (Echo'echo'results) = (Capnp.Gen.ById.X832bcc6686a26d56.Echo'echo'results msg)
-    decerialize raw = (Echo'echo'results <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_Echo'echo'results'out raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Echo'echo'results)) where
-    marshalInto raw_ value_ = case value_ of
-        Echo'echo'results{..} ->
-            (do
-                ((Classes.cerialize (Untyped.message raw_) out) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Echo'echo'results'out raw_))
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (Echo'echo'results))
-instance (Classes.Cerialize s (V.Vector (Echo'echo'results))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Echo'echo'results)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Echo'echo'results))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Echo'echo'results)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Echo'echo'results))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Echo'echo'results)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Echo'echo'results))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data Hoth 
-    = Hoth 
-        {base :: EchoBase}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (Hoth)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Hoth)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Hoth)) where
-    type Cerial msg (Hoth) = (Capnp.Gen.ById.X832bcc6686a26d56.Hoth msg)
-    decerialize raw = (Hoth <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_Hoth'base raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (Hoth)) where
-    marshalInto raw_ value_ = case value_ of
-        Hoth{..} ->
-            (do
-                ((Classes.cerialize (Untyped.message raw_) base) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Hoth'base raw_))
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (Hoth))
-instance (Classes.Cerialize s (V.Vector (Hoth))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Hoth)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Hoth))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Hoth)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Hoth))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Hoth)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Hoth))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data EchoBase 
-    = EchoBase 
-        {echo :: Echo}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (EchoBase)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (EchoBase)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (EchoBase)) where
-    type Cerial msg (EchoBase) = (Capnp.Gen.ById.X832bcc6686a26d56.EchoBase msg)
-    decerialize raw = (EchoBase <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_EchoBase'echo raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (EchoBase)) where
-    marshalInto raw_ value_ = case value_ of
-        EchoBase{..} ->
-            (do
-                ((Classes.cerialize (Untyped.message raw_) echo) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_EchoBase'echo raw_))
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (EchoBase))
-instance (Classes.Cerialize s (V.Vector (EchoBase))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (EchoBase)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (EchoBase))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (EchoBase)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (EchoBase))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (EchoBase)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (EchoBase))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data EchoBases 
-    = EchoBases 
-        {bases :: (V.Vector EchoBase)}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (EchoBases)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (EchoBases)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (EchoBases)) where
-    type Cerial msg (EchoBases) = (Capnp.Gen.ById.X832bcc6686a26d56.EchoBases msg)
-    decerialize raw = (EchoBases <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_EchoBases'bases raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (EchoBases)) where
-    marshalInto raw_ value_ = case value_ of
-        EchoBases{..} ->
-            (do
-                ((Classes.cerialize (Untyped.message raw_) bases) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_EchoBases'bases raw_))
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (EchoBases))
-instance (Classes.Cerialize s (V.Vector (EchoBases))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (EchoBases)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (EchoBases))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (EchoBases)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (EchoBases))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (EchoBases)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (EchoBases))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data StackingRoot 
-    = StackingRoot 
-        {aWithDefault :: StackingA
-        ,a :: StackingA}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (StackingRoot)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (StackingRoot)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (StackingRoot)) where
-    type Cerial msg (StackingRoot) = (Capnp.Gen.ById.X832bcc6686a26d56.StackingRoot msg)
-    decerialize raw = (StackingRoot <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_StackingRoot'aWithDefault raw) >>= Classes.decerialize)
-                                    <*> ((Capnp.Gen.ById.X832bcc6686a26d56.get_StackingRoot'a raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (StackingRoot)) where
-    marshalInto raw_ value_ = case value_ of
-        StackingRoot{..} ->
-            (do
-                ((Classes.cerialize (Untyped.message raw_) aWithDefault) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_StackingRoot'aWithDefault raw_))
-                ((Classes.cerialize (Untyped.message raw_) a) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_StackingRoot'a raw_))
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (StackingRoot))
-instance (Classes.Cerialize s (V.Vector (StackingRoot))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (StackingRoot)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (StackingRoot))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (StackingRoot)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (StackingRoot))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (StackingRoot)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (StackingRoot))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data StackingA 
-    = StackingA 
-        {num :: Std_.Int32
-        ,b :: StackingB}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (StackingA)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (StackingA)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (StackingA)) where
-    type Cerial msg (StackingA) = (Capnp.Gen.ById.X832bcc6686a26d56.StackingA msg)
-    decerialize raw = (StackingA <$> (Capnp.Gen.ById.X832bcc6686a26d56.get_StackingA'num raw)
-                                 <*> ((Capnp.Gen.ById.X832bcc6686a26d56.get_StackingA'b raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (StackingA)) where
-    marshalInto raw_ value_ = case value_ of
-        StackingA{..} ->
-            (do
-                (Capnp.Gen.ById.X832bcc6686a26d56.set_StackingA'num raw_ num)
-                ((Classes.cerialize (Untyped.message raw_) b) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_StackingA'b raw_))
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (StackingA))
-instance (Classes.Cerialize s (V.Vector (StackingA))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (StackingA)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (StackingA))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (StackingA)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (StackingA))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (StackingA)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (StackingA))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data StackingB 
-    = StackingB 
-        {num :: Std_.Int32}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (StackingB)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (StackingB)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (StackingB)) where
-    type Cerial msg (StackingB) = (Capnp.Gen.ById.X832bcc6686a26d56.StackingB msg)
-    decerialize raw = (StackingB <$> (Capnp.Gen.ById.X832bcc6686a26d56.get_StackingB'num raw))
-instance (Classes.Marshal s (StackingB)) where
-    marshalInto raw_ value_ = case value_ of
-        StackingB{..} ->
-            (do
-                (Capnp.Gen.ById.X832bcc6686a26d56.set_StackingB'num raw_ num)
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (StackingB))
-instance (Classes.Cerialize s (V.Vector (StackingB))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (StackingB)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (StackingB))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (StackingB)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (StackingB))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (StackingB)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (StackingB))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-newtype CallSequence 
-    = CallSequence Message.Client
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-class ((MonadIO.MonadIO m)
-      ,(Server.Server m cap)) => (CallSequence'server_ m cap) where
-    {-# MINIMAL callSequence'getNumber #-}
-    callSequence'getNumber :: cap -> (Server.MethodHandler m CallSequence'getNumber'params CallSequence'getNumber'results)
-    callSequence'getNumber _ = Server.methodUnimplemented
-export_CallSequence :: ((STM.MonadSTM m)
-                       ,(CallSequence'server_ Std_.IO cap)) => Supervisors.Supervisor -> cap -> (m (CallSequence))
-export_CallSequence sup_ server_ = (STM.liftSTM (CallSequence <$> (Rpc.export sup_ Server.ServerOps{handleCast = (Server.unwrap server_)
-                                                                                                   ,handleStop = (Server.shutdown server_)
-                                                                                                   ,handleCall = (\interfaceId_ methodId_ -> case interfaceId_ of
-                                                                                                       12371070827563042848 ->
-                                                                                                           case methodId_ of
-                                                                                                               0 ->
-                                                                                                                   (Server.toUntypedHandler (callSequence'getNumber server_))
-                                                                                                               _ ->
-                                                                                                                   Server.methodUnimplemented
-                                                                                                       _ ->
-                                                                                                           Server.methodUnimplemented)})))
-instance (Rpc.IsClient (CallSequence)) where
-    fromClient  = CallSequence
-    toClient (CallSequence client) = client
-instance (Classes.FromPtr msg (CallSequence)) where
-    fromPtr  = RpcHelpers.isClientFromPtr
-instance (Classes.ToPtr s (CallSequence)) where
-    toPtr  = RpcHelpers.isClientToPtr
-instance (Classes.Decerialize (CallSequence)) where
-    type Cerial msg (CallSequence) = (Capnp.Gen.ById.X832bcc6686a26d56.CallSequence msg)
-    decerialize (Capnp.Gen.ById.X832bcc6686a26d56.CallSequence'newtype_ maybeCap) = case maybeCap of
-        (Std_.Nothing) ->
-            (Std_.pure (CallSequence Message.nullClient))
-        (Std_.Just cap) ->
-            (CallSequence <$> (Untyped.getClient cap))
-instance (Classes.Cerialize s (CallSequence)) where
-    cerialize msg (CallSequence client) = (Capnp.Gen.ById.X832bcc6686a26d56.CallSequence'newtype_ <$> (Std_.Just <$> (Untyped.appendCap msg client)))
-instance (Server.Server Std_.IO (CallSequence))
-instance (CallSequence'server_ Std_.IO (CallSequence)) where
-    callSequence'getNumber (CallSequence client) = (Rpc.clientMethodHandler 12371070827563042848 0 client)
-data CallSequence'getNumber'params 
-    = CallSequence'getNumber'params 
-        {}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (CallSequence'getNumber'params)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (CallSequence'getNumber'params)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (CallSequence'getNumber'params)) where
-    type Cerial msg (CallSequence'getNumber'params) = (Capnp.Gen.ById.X832bcc6686a26d56.CallSequence'getNumber'params msg)
-    decerialize raw = (Std_.pure CallSequence'getNumber'params)
-instance (Classes.Marshal s (CallSequence'getNumber'params)) where
-    marshalInto raw_ value_ = case value_ of
-        (CallSequence'getNumber'params) ->
-            (do
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (CallSequence'getNumber'params))
-instance (Classes.Cerialize s (V.Vector (CallSequence'getNumber'params))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (CallSequence'getNumber'params)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (CallSequence'getNumber'params))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (CallSequence'getNumber'params)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (CallSequence'getNumber'params))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (CallSequence'getNumber'params)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (CallSequence'getNumber'params))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data CallSequence'getNumber'results 
-    = CallSequence'getNumber'results 
-        {n :: Std_.Word32}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (CallSequence'getNumber'results)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (CallSequence'getNumber'results)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (CallSequence'getNumber'results)) where
-    type Cerial msg (CallSequence'getNumber'results) = (Capnp.Gen.ById.X832bcc6686a26d56.CallSequence'getNumber'results msg)
-    decerialize raw = (CallSequence'getNumber'results <$> (Capnp.Gen.ById.X832bcc6686a26d56.get_CallSequence'getNumber'results'n raw))
-instance (Classes.Marshal s (CallSequence'getNumber'results)) where
-    marshalInto raw_ value_ = case value_ of
-        CallSequence'getNumber'results{..} ->
-            (do
-                (Capnp.Gen.ById.X832bcc6686a26d56.set_CallSequence'getNumber'results'n raw_ n)
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (CallSequence'getNumber'results))
-instance (Classes.Cerialize s (V.Vector (CallSequence'getNumber'results))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (CallSequence'getNumber'results)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (CallSequence'getNumber'results))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (CallSequence'getNumber'results)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (CallSequence'getNumber'results))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (CallSequence'getNumber'results)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (CallSequence'getNumber'results))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-newtype CounterFactory 
-    = CounterFactory Message.Client
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-class ((MonadIO.MonadIO m)
-      ,(Server.Server m cap)) => (CounterFactory'server_ m cap) where
-    {-# MINIMAL counterFactory'newCounter #-}
-    counterFactory'newCounter :: cap -> (Server.MethodHandler m CounterFactory'newCounter'params CounterFactory'newCounter'results)
-    counterFactory'newCounter _ = Server.methodUnimplemented
-export_CounterFactory :: ((STM.MonadSTM m)
-                         ,(CounterFactory'server_ Std_.IO cap)) => Supervisors.Supervisor -> cap -> (m (CounterFactory))
-export_CounterFactory sup_ server_ = (STM.liftSTM (CounterFactory <$> (Rpc.export sup_ Server.ServerOps{handleCast = (Server.unwrap server_)
-                                                                                                       ,handleStop = (Server.shutdown server_)
-                                                                                                       ,handleCall = (\interfaceId_ methodId_ -> case interfaceId_ of
-                                                                                                           15610220054254702620 ->
-                                                                                                               case methodId_ of
-                                                                                                                   0 ->
-                                                                                                                       (Server.toUntypedHandler (counterFactory'newCounter server_))
-                                                                                                                   _ ->
-                                                                                                                       Server.methodUnimplemented
-                                                                                                           _ ->
-                                                                                                               Server.methodUnimplemented)})))
-instance (Rpc.IsClient (CounterFactory)) where
-    fromClient  = CounterFactory
-    toClient (CounterFactory client) = client
-instance (Classes.FromPtr msg (CounterFactory)) where
-    fromPtr  = RpcHelpers.isClientFromPtr
-instance (Classes.ToPtr s (CounterFactory)) where
-    toPtr  = RpcHelpers.isClientToPtr
-instance (Classes.Decerialize (CounterFactory)) where
-    type Cerial msg (CounterFactory) = (Capnp.Gen.ById.X832bcc6686a26d56.CounterFactory msg)
-    decerialize (Capnp.Gen.ById.X832bcc6686a26d56.CounterFactory'newtype_ maybeCap) = case maybeCap of
-        (Std_.Nothing) ->
-            (Std_.pure (CounterFactory Message.nullClient))
-        (Std_.Just cap) ->
-            (CounterFactory <$> (Untyped.getClient cap))
-instance (Classes.Cerialize s (CounterFactory)) where
-    cerialize msg (CounterFactory client) = (Capnp.Gen.ById.X832bcc6686a26d56.CounterFactory'newtype_ <$> (Std_.Just <$> (Untyped.appendCap msg client)))
-instance (Server.Server Std_.IO (CounterFactory))
-instance (CounterFactory'server_ Std_.IO (CounterFactory)) where
-    counterFactory'newCounter (CounterFactory client) = (Rpc.clientMethodHandler 15610220054254702620 0 client)
-data CounterFactory'newCounter'params 
-    = CounterFactory'newCounter'params 
-        {start :: Std_.Word32}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (CounterFactory'newCounter'params)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (CounterFactory'newCounter'params)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (CounterFactory'newCounter'params)) where
-    type Cerial msg (CounterFactory'newCounter'params) = (Capnp.Gen.ById.X832bcc6686a26d56.CounterFactory'newCounter'params msg)
-    decerialize raw = (CounterFactory'newCounter'params <$> (Capnp.Gen.ById.X832bcc6686a26d56.get_CounterFactory'newCounter'params'start raw))
-instance (Classes.Marshal s (CounterFactory'newCounter'params)) where
-    marshalInto raw_ value_ = case value_ of
-        CounterFactory'newCounter'params{..} ->
-            (do
-                (Capnp.Gen.ById.X832bcc6686a26d56.set_CounterFactory'newCounter'params'start raw_ start)
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (CounterFactory'newCounter'params))
-instance (Classes.Cerialize s (V.Vector (CounterFactory'newCounter'params))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (CounterFactory'newCounter'params)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (CounterFactory'newCounter'params))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (CounterFactory'newCounter'params)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (CounterFactory'newCounter'params))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (CounterFactory'newCounter'params)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (CounterFactory'newCounter'params))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data CounterFactory'newCounter'results 
-    = CounterFactory'newCounter'results 
-        {counter :: CallSequence}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (CounterFactory'newCounter'results)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (CounterFactory'newCounter'results)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (CounterFactory'newCounter'results)) where
-    type Cerial msg (CounterFactory'newCounter'results) = (Capnp.Gen.ById.X832bcc6686a26d56.CounterFactory'newCounter'results msg)
-    decerialize raw = (CounterFactory'newCounter'results <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_CounterFactory'newCounter'results'counter raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (CounterFactory'newCounter'results)) where
-    marshalInto raw_ value_ = case value_ of
-        CounterFactory'newCounter'results{..} ->
-            (do
-                ((Classes.cerialize (Untyped.message raw_) counter) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_CounterFactory'newCounter'results'counter raw_))
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (CounterFactory'newCounter'results))
-instance (Classes.Cerialize s (V.Vector (CounterFactory'newCounter'results))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (CounterFactory'newCounter'results)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (CounterFactory'newCounter'results))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (CounterFactory'newCounter'results)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (CounterFactory'newCounter'results))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (CounterFactory'newCounter'results)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (CounterFactory'newCounter'results))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-newtype CounterAcceptor 
-    = CounterAcceptor Message.Client
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-class ((MonadIO.MonadIO m)
-      ,(Server.Server m cap)) => (CounterAcceptor'server_ m cap) where
-    {-# MINIMAL counterAcceptor'accept #-}
-    counterAcceptor'accept :: cap -> (Server.MethodHandler m CounterAcceptor'accept'params CounterAcceptor'accept'results)
-    counterAcceptor'accept _ = Server.methodUnimplemented
-export_CounterAcceptor :: ((STM.MonadSTM m)
-                          ,(CounterAcceptor'server_ Std_.IO cap)) => Supervisors.Supervisor -> cap -> (m (CounterAcceptor))
-export_CounterAcceptor sup_ server_ = (STM.liftSTM (CounterAcceptor <$> (Rpc.export sup_ Server.ServerOps{handleCast = (Server.unwrap server_)
-                                                                                                         ,handleStop = (Server.shutdown server_)
-                                                                                                         ,handleCall = (\interfaceId_ methodId_ -> case interfaceId_ of
-                                                                                                             14317498215560924065 ->
-                                                                                                                 case methodId_ of
-                                                                                                                     0 ->
-                                                                                                                         (Server.toUntypedHandler (counterAcceptor'accept server_))
-                                                                                                                     _ ->
-                                                                                                                         Server.methodUnimplemented
-                                                                                                             _ ->
-                                                                                                                 Server.methodUnimplemented)})))
-instance (Rpc.IsClient (CounterAcceptor)) where
-    fromClient  = CounterAcceptor
-    toClient (CounterAcceptor client) = client
-instance (Classes.FromPtr msg (CounterAcceptor)) where
-    fromPtr  = RpcHelpers.isClientFromPtr
-instance (Classes.ToPtr s (CounterAcceptor)) where
-    toPtr  = RpcHelpers.isClientToPtr
-instance (Classes.Decerialize (CounterAcceptor)) where
-    type Cerial msg (CounterAcceptor) = (Capnp.Gen.ById.X832bcc6686a26d56.CounterAcceptor msg)
-    decerialize (Capnp.Gen.ById.X832bcc6686a26d56.CounterAcceptor'newtype_ maybeCap) = case maybeCap of
-        (Std_.Nothing) ->
-            (Std_.pure (CounterAcceptor Message.nullClient))
-        (Std_.Just cap) ->
-            (CounterAcceptor <$> (Untyped.getClient cap))
-instance (Classes.Cerialize s (CounterAcceptor)) where
-    cerialize msg (CounterAcceptor client) = (Capnp.Gen.ById.X832bcc6686a26d56.CounterAcceptor'newtype_ <$> (Std_.Just <$> (Untyped.appendCap msg client)))
-instance (Server.Server Std_.IO (CounterAcceptor))
-instance (CounterAcceptor'server_ Std_.IO (CounterAcceptor)) where
-    counterAcceptor'accept (CounterAcceptor client) = (Rpc.clientMethodHandler 14317498215560924065 0 client)
-data CounterAcceptor'accept'params 
-    = CounterAcceptor'accept'params 
-        {counter :: CallSequence}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (CounterAcceptor'accept'params)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (CounterAcceptor'accept'params)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (CounterAcceptor'accept'params)) where
-    type Cerial msg (CounterAcceptor'accept'params) = (Capnp.Gen.ById.X832bcc6686a26d56.CounterAcceptor'accept'params msg)
-    decerialize raw = (CounterAcceptor'accept'params <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_CounterAcceptor'accept'params'counter raw) >>= Classes.decerialize))
-instance (Classes.Marshal s (CounterAcceptor'accept'params)) where
-    marshalInto raw_ value_ = case value_ of
-        CounterAcceptor'accept'params{..} ->
-            (do
-                ((Classes.cerialize (Untyped.message raw_) counter) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_CounterAcceptor'accept'params'counter raw_))
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (CounterAcceptor'accept'params))
-instance (Classes.Cerialize s (V.Vector (CounterAcceptor'accept'params))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (CounterAcceptor'accept'params)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (CounterAcceptor'accept'params))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (CounterAcceptor'accept'params)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (CounterAcceptor'accept'params))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (CounterAcceptor'accept'params)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (CounterAcceptor'accept'params))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data CounterAcceptor'accept'results 
-    = CounterAcceptor'accept'results 
-        {}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (CounterAcceptor'accept'results)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (CounterAcceptor'accept'results)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (CounterAcceptor'accept'results)) where
-    type Cerial msg (CounterAcceptor'accept'results) = (Capnp.Gen.ById.X832bcc6686a26d56.CounterAcceptor'accept'results msg)
-    decerialize raw = (Std_.pure CounterAcceptor'accept'results)
-instance (Classes.Marshal s (CounterAcceptor'accept'results)) where
-    marshalInto raw_ value_ = case value_ of
-        (CounterAcceptor'accept'results) ->
-            (do
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (CounterAcceptor'accept'results))
-instance (Classes.Cerialize s (V.Vector (CounterAcceptor'accept'results))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (CounterAcceptor'accept'results)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (CounterAcceptor'accept'results))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (CounterAcceptor'accept'results)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (CounterAcceptor'accept'results))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (CounterAcceptor'accept'results)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (CounterAcceptor'accept'results))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-newtype Top 
-    = Top Message.Client
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-class ((MonadIO.MonadIO m)
-      ,(Server.Server m cap)) => (Top'server_ m cap) where
-    {-# MINIMAL top'top #-}
-    top'top :: cap -> (Server.MethodHandler m Top'top'params Top'top'results)
-    top'top _ = Server.methodUnimplemented
-export_Top :: ((STM.MonadSTM m)
-              ,(Top'server_ Std_.IO cap)) => Supervisors.Supervisor -> cap -> (m (Top))
-export_Top sup_ server_ = (STM.liftSTM (Top <$> (Rpc.export sup_ Server.ServerOps{handleCast = (Server.unwrap server_)
-                                                                                 ,handleStop = (Server.shutdown server_)
-                                                                                 ,handleCall = (\interfaceId_ methodId_ -> case interfaceId_ of
-                                                                                     17861645508359101525 ->
-                                                                                         case methodId_ of
-                                                                                             0 ->
-                                                                                                 (Server.toUntypedHandler (top'top server_))
-                                                                                             _ ->
-                                                                                                 Server.methodUnimplemented
-                                                                                     _ ->
-                                                                                         Server.methodUnimplemented)})))
-instance (Rpc.IsClient (Top)) where
-    fromClient  = Top
-    toClient (Top client) = client
-instance (Classes.FromPtr msg (Top)) where
-    fromPtr  = RpcHelpers.isClientFromPtr
-instance (Classes.ToPtr s (Top)) where
-    toPtr  = RpcHelpers.isClientToPtr
-instance (Classes.Decerialize (Top)) where
-    type Cerial msg (Top) = (Capnp.Gen.ById.X832bcc6686a26d56.Top msg)
-    decerialize (Capnp.Gen.ById.X832bcc6686a26d56.Top'newtype_ maybeCap) = case maybeCap of
-        (Std_.Nothing) ->
-            (Std_.pure (Top Message.nullClient))
-        (Std_.Just cap) ->
-            (Top <$> (Untyped.getClient cap))
-instance (Classes.Cerialize s (Top)) where
-    cerialize msg (Top client) = (Capnp.Gen.ById.X832bcc6686a26d56.Top'newtype_ <$> (Std_.Just <$> (Untyped.appendCap msg client)))
-instance (Server.Server Std_.IO (Top))
-instance (Top'server_ Std_.IO (Top)) where
-    top'top (Top client) = (Rpc.clientMethodHandler 17861645508359101525 0 client)
-data Top'top'params 
-    = Top'top'params 
-        {}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (Top'top'params)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Top'top'params)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Top'top'params)) where
-    type Cerial msg (Top'top'params) = (Capnp.Gen.ById.X832bcc6686a26d56.Top'top'params msg)
-    decerialize raw = (Std_.pure Top'top'params)
-instance (Classes.Marshal s (Top'top'params)) where
-    marshalInto raw_ value_ = case value_ of
-        (Top'top'params) ->
-            (do
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (Top'top'params))
-instance (Classes.Cerialize s (V.Vector (Top'top'params))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Top'top'params)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Top'top'params))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Top'top'params)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Top'top'params))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Top'top'params)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Top'top'params))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data Top'top'results 
-    = Top'top'results 
-        {}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (Top'top'results)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Top'top'results)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Top'top'results)) where
-    type Cerial msg (Top'top'results) = (Capnp.Gen.ById.X832bcc6686a26d56.Top'top'results msg)
-    decerialize raw = (Std_.pure Top'top'results)
-instance (Classes.Marshal s (Top'top'results)) where
-    marshalInto raw_ value_ = case value_ of
-        (Top'top'results) ->
-            (do
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (Top'top'results))
-instance (Classes.Cerialize s (V.Vector (Top'top'results))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Top'top'results)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Top'top'results))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Top'top'results)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Top'top'results))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Top'top'results)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Top'top'results))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-newtype Left 
-    = Left Message.Client
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-class ((MonadIO.MonadIO m)
-      ,(Top'server_ m cap)) => (Left'server_ m cap) where
-    {-# MINIMAL left'left #-}
-    left'left :: cap -> (Server.MethodHandler m Left'left'params Left'left'results)
-    left'left _ = Server.methodUnimplemented
-export_Left :: ((STM.MonadSTM m)
-               ,(Left'server_ Std_.IO cap)) => Supervisors.Supervisor -> cap -> (m (Left))
-export_Left sup_ server_ = (STM.liftSTM (Left <$> (Rpc.export sup_ Server.ServerOps{handleCast = (Server.unwrap server_)
-                                                                                   ,handleStop = (Server.shutdown server_)
-                                                                                   ,handleCall = (\interfaceId_ methodId_ -> case interfaceId_ of
-                                                                                       17679152961798450446 ->
-                                                                                           case methodId_ of
-                                                                                               0 ->
-                                                                                                   (Server.toUntypedHandler (left'left server_))
-                                                                                               _ ->
-                                                                                                   Server.methodUnimplemented
-                                                                                       17861645508359101525 ->
-                                                                                           case methodId_ of
-                                                                                               0 ->
-                                                                                                   (Server.toUntypedHandler (top'top server_))
-                                                                                               _ ->
-                                                                                                   Server.methodUnimplemented
-                                                                                       _ ->
-                                                                                           Server.methodUnimplemented)})))
-instance (Rpc.IsClient (Left)) where
-    fromClient  = Left
-    toClient (Left client) = client
-instance (Classes.FromPtr msg (Left)) where
-    fromPtr  = RpcHelpers.isClientFromPtr
-instance (Classes.ToPtr s (Left)) where
-    toPtr  = RpcHelpers.isClientToPtr
-instance (Classes.Decerialize (Left)) where
-    type Cerial msg (Left) = (Capnp.Gen.ById.X832bcc6686a26d56.Left msg)
-    decerialize (Capnp.Gen.ById.X832bcc6686a26d56.Left'newtype_ maybeCap) = case maybeCap of
-        (Std_.Nothing) ->
-            (Std_.pure (Left Message.nullClient))
-        (Std_.Just cap) ->
-            (Left <$> (Untyped.getClient cap))
-instance (Classes.Cerialize s (Left)) where
-    cerialize msg (Left client) = (Capnp.Gen.ById.X832bcc6686a26d56.Left'newtype_ <$> (Std_.Just <$> (Untyped.appendCap msg client)))
-instance (Server.Server Std_.IO (Left))
-instance (Left'server_ Std_.IO (Left)) where
-    left'left (Left client) = (Rpc.clientMethodHandler 17679152961798450446 0 client)
-instance (Top'server_ Std_.IO (Left)) where
-    top'top (Left client) = (Rpc.clientMethodHandler 17861645508359101525 0 client)
-data Left'left'params 
-    = Left'left'params 
-        {}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (Left'left'params)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Left'left'params)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Left'left'params)) where
-    type Cerial msg (Left'left'params) = (Capnp.Gen.ById.X832bcc6686a26d56.Left'left'params msg)
-    decerialize raw = (Std_.pure Left'left'params)
-instance (Classes.Marshal s (Left'left'params)) where
-    marshalInto raw_ value_ = case value_ of
-        (Left'left'params) ->
-            (do
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (Left'left'params))
-instance (Classes.Cerialize s (V.Vector (Left'left'params))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Left'left'params)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Left'left'params))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Left'left'params)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Left'left'params))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Left'left'params)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Left'left'params))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data Left'left'results 
-    = Left'left'results 
-        {}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (Left'left'results)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Left'left'results)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Left'left'results)) where
-    type Cerial msg (Left'left'results) = (Capnp.Gen.ById.X832bcc6686a26d56.Left'left'results msg)
-    decerialize raw = (Std_.pure Left'left'results)
-instance (Classes.Marshal s (Left'left'results)) where
-    marshalInto raw_ value_ = case value_ of
-        (Left'left'results) ->
-            (do
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (Left'left'results))
-instance (Classes.Cerialize s (V.Vector (Left'left'results))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Left'left'results)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Left'left'results))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Left'left'results)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Left'left'results))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Left'left'results)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Left'left'results))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-newtype Right 
-    = Right Message.Client
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-class ((MonadIO.MonadIO m)
-      ,(Top'server_ m cap)) => (Right'server_ m cap) where
-    {-# MINIMAL right'right #-}
-    right'right :: cap -> (Server.MethodHandler m Right'right'params Right'right'results)
-    right'right _ = Server.methodUnimplemented
-export_Right :: ((STM.MonadSTM m)
-                ,(Right'server_ Std_.IO cap)) => Supervisors.Supervisor -> cap -> (m (Right))
-export_Right sup_ server_ = (STM.liftSTM (Right <$> (Rpc.export sup_ Server.ServerOps{handleCast = (Server.unwrap server_)
-                                                                                     ,handleStop = (Server.shutdown server_)
-                                                                                     ,handleCall = (\interfaceId_ methodId_ -> case interfaceId_ of
-                                                                                         14712639595305348988 ->
-                                                                                             case methodId_ of
-                                                                                                 0 ->
-                                                                                                     (Server.toUntypedHandler (right'right server_))
-                                                                                                 _ ->
-                                                                                                     Server.methodUnimplemented
-                                                                                         17861645508359101525 ->
-                                                                                             case methodId_ of
-                                                                                                 0 ->
-                                                                                                     (Server.toUntypedHandler (top'top server_))
-                                                                                                 _ ->
-                                                                                                     Server.methodUnimplemented
-                                                                                         _ ->
-                                                                                             Server.methodUnimplemented)})))
-instance (Rpc.IsClient (Right)) where
-    fromClient  = Right
-    toClient (Right client) = client
-instance (Classes.FromPtr msg (Right)) where
-    fromPtr  = RpcHelpers.isClientFromPtr
-instance (Classes.ToPtr s (Right)) where
-    toPtr  = RpcHelpers.isClientToPtr
-instance (Classes.Decerialize (Right)) where
-    type Cerial msg (Right) = (Capnp.Gen.ById.X832bcc6686a26d56.Right msg)
-    decerialize (Capnp.Gen.ById.X832bcc6686a26d56.Right'newtype_ maybeCap) = case maybeCap of
-        (Std_.Nothing) ->
-            (Std_.pure (Right Message.nullClient))
-        (Std_.Just cap) ->
-            (Right <$> (Untyped.getClient cap))
-instance (Classes.Cerialize s (Right)) where
-    cerialize msg (Right client) = (Capnp.Gen.ById.X832bcc6686a26d56.Right'newtype_ <$> (Std_.Just <$> (Untyped.appendCap msg client)))
-instance (Server.Server Std_.IO (Right))
-instance (Right'server_ Std_.IO (Right)) where
-    right'right (Right client) = (Rpc.clientMethodHandler 14712639595305348988 0 client)
-instance (Top'server_ Std_.IO (Right)) where
-    top'top (Right client) = (Rpc.clientMethodHandler 17861645508359101525 0 client)
-data Right'right'params 
-    = Right'right'params 
-        {}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (Right'right'params)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Right'right'params)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Right'right'params)) where
-    type Cerial msg (Right'right'params) = (Capnp.Gen.ById.X832bcc6686a26d56.Right'right'params msg)
-    decerialize raw = (Std_.pure Right'right'params)
-instance (Classes.Marshal s (Right'right'params)) where
-    marshalInto raw_ value_ = case value_ of
-        (Right'right'params) ->
-            (do
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (Right'right'params))
-instance (Classes.Cerialize s (V.Vector (Right'right'params))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Right'right'params)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Right'right'params))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Right'right'params)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Right'right'params))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Right'right'params)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Right'right'params))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data Right'right'results 
-    = Right'right'results 
-        {}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (Right'right'results)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Right'right'results)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Right'right'results)) where
-    type Cerial msg (Right'right'results) = (Capnp.Gen.ById.X832bcc6686a26d56.Right'right'results msg)
-    decerialize raw = (Std_.pure Right'right'results)
-instance (Classes.Marshal s (Right'right'results)) where
-    marshalInto raw_ value_ = case value_ of
-        (Right'right'results) ->
-            (do
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (Right'right'results))
-instance (Classes.Cerialize s (V.Vector (Right'right'results))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Right'right'results)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Right'right'results))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Right'right'results)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Right'right'results))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Right'right'results)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Right'right'results))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-newtype Bottom 
-    = Bottom Message.Client
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-class ((MonadIO.MonadIO m)
-      ,(Left'server_ m cap)
-      ,(Right'server_ m cap)) => (Bottom'server_ m cap) where
-    {-# MINIMAL bottom'bottom #-}
-    bottom'bottom :: cap -> (Server.MethodHandler m Bottom'bottom'params Bottom'bottom'results)
-    bottom'bottom _ = Server.methodUnimplemented
-export_Bottom :: ((STM.MonadSTM m)
-                 ,(Bottom'server_ Std_.IO cap)) => Supervisors.Supervisor -> cap -> (m (Bottom))
-export_Bottom sup_ server_ = (STM.liftSTM (Bottom <$> (Rpc.export sup_ Server.ServerOps{handleCast = (Server.unwrap server_)
-                                                                                       ,handleStop = (Server.shutdown server_)
-                                                                                       ,handleCall = (\interfaceId_ methodId_ -> case interfaceId_ of
-                                                                                           18402872613340521775 ->
-                                                                                               case methodId_ of
-                                                                                                   0 ->
-                                                                                                       (Server.toUntypedHandler (bottom'bottom server_))
-                                                                                                   _ ->
-                                                                                                       Server.methodUnimplemented
-                                                                                           17679152961798450446 ->
-                                                                                               case methodId_ of
-                                                                                                   0 ->
-                                                                                                       (Server.toUntypedHandler (left'left server_))
-                                                                                                   _ ->
-                                                                                                       Server.methodUnimplemented
-                                                                                           17861645508359101525 ->
-                                                                                               case methodId_ of
-                                                                                                   0 ->
-                                                                                                       (Server.toUntypedHandler (top'top server_))
-                                                                                                   _ ->
-                                                                                                       Server.methodUnimplemented
-                                                                                           14712639595305348988 ->
-                                                                                               case methodId_ of
-                                                                                                   0 ->
-                                                                                                       (Server.toUntypedHandler (right'right server_))
-                                                                                                   _ ->
-                                                                                                       Server.methodUnimplemented
-                                                                                           _ ->
-                                                                                               Server.methodUnimplemented)})))
-instance (Rpc.IsClient (Bottom)) where
-    fromClient  = Bottom
-    toClient (Bottom client) = client
-instance (Classes.FromPtr msg (Bottom)) where
-    fromPtr  = RpcHelpers.isClientFromPtr
-instance (Classes.ToPtr s (Bottom)) where
-    toPtr  = RpcHelpers.isClientToPtr
-instance (Classes.Decerialize (Bottom)) where
-    type Cerial msg (Bottom) = (Capnp.Gen.ById.X832bcc6686a26d56.Bottom msg)
-    decerialize (Capnp.Gen.ById.X832bcc6686a26d56.Bottom'newtype_ maybeCap) = case maybeCap of
-        (Std_.Nothing) ->
-            (Std_.pure (Bottom Message.nullClient))
-        (Std_.Just cap) ->
-            (Bottom <$> (Untyped.getClient cap))
-instance (Classes.Cerialize s (Bottom)) where
-    cerialize msg (Bottom client) = (Capnp.Gen.ById.X832bcc6686a26d56.Bottom'newtype_ <$> (Std_.Just <$> (Untyped.appendCap msg client)))
-instance (Server.Server Std_.IO (Bottom))
-instance (Bottom'server_ Std_.IO (Bottom)) where
-    bottom'bottom (Bottom client) = (Rpc.clientMethodHandler 18402872613340521775 0 client)
-instance (Left'server_ Std_.IO (Bottom)) where
-    left'left (Bottom client) = (Rpc.clientMethodHandler 17679152961798450446 0 client)
-instance (Top'server_ Std_.IO (Bottom)) where
-    top'top (Bottom client) = (Rpc.clientMethodHandler 17861645508359101525 0 client)
-instance (Right'server_ Std_.IO (Bottom)) where
-    right'right (Bottom client) = (Rpc.clientMethodHandler 14712639595305348988 0 client)
-data Bottom'bottom'params 
-    = Bottom'bottom'params 
-        {}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (Bottom'bottom'params)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Bottom'bottom'params)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Bottom'bottom'params)) where
-    type Cerial msg (Bottom'bottom'params) = (Capnp.Gen.ById.X832bcc6686a26d56.Bottom'bottom'params msg)
-    decerialize raw = (Std_.pure Bottom'bottom'params)
-instance (Classes.Marshal s (Bottom'bottom'params)) where
-    marshalInto raw_ value_ = case value_ of
-        (Bottom'bottom'params) ->
-            (do
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (Bottom'bottom'params))
-instance (Classes.Cerialize s (V.Vector (Bottom'bottom'params))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Bottom'bottom'params)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Bottom'bottom'params))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Bottom'bottom'params)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Bottom'bottom'params))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Bottom'bottom'params)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Bottom'bottom'params))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data Bottom'bottom'results 
-    = Bottom'bottom'results 
-        {}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (Bottom'bottom'results)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Bottom'bottom'results)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Bottom'bottom'results)) where
-    type Cerial msg (Bottom'bottom'results) = (Capnp.Gen.ById.X832bcc6686a26d56.Bottom'bottom'results msg)
-    decerialize raw = (Std_.pure Bottom'bottom'results)
-instance (Classes.Marshal s (Bottom'bottom'results)) where
-    marshalInto raw_ value_ = case value_ of
-        (Bottom'bottom'results) ->
-            (do
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (Bottom'bottom'results))
-instance (Classes.Cerialize s (V.Vector (Bottom'bottom'results))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Bottom'bottom'results)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Bottom'bottom'results))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Bottom'bottom'results)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Bottom'bottom'results))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Bottom'bottom'results)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Bottom'bottom'results))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data Defaults 
-    = Defaults 
-        {text :: T.Text
-        ,data_ :: BS.ByteString
-        ,float :: Std_.Float
-        ,int :: Std_.Int32
-        ,uint :: Std_.Word32}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (Defaults)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (Defaults)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (Defaults)) where
-    type Cerial msg (Defaults) = (Capnp.Gen.ById.X832bcc6686a26d56.Defaults msg)
-    decerialize raw = (Defaults <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_Defaults'text raw) >>= Classes.decerialize)
-                                <*> ((Capnp.Gen.ById.X832bcc6686a26d56.get_Defaults'data_ raw) >>= Classes.decerialize)
-                                <*> (Capnp.Gen.ById.X832bcc6686a26d56.get_Defaults'float raw)
-                                <*> (Capnp.Gen.ById.X832bcc6686a26d56.get_Defaults'int raw)
-                                <*> (Capnp.Gen.ById.X832bcc6686a26d56.get_Defaults'uint raw))
-instance (Classes.Marshal s (Defaults)) where
-    marshalInto raw_ value_ = case value_ of
-        Defaults{..} ->
-            (do
-                ((Classes.cerialize (Untyped.message raw_) text) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Defaults'text raw_))
-                ((Classes.cerialize (Untyped.message raw_) data_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Defaults'data_ raw_))
-                (Capnp.Gen.ById.X832bcc6686a26d56.set_Defaults'float raw_ float)
-                (Capnp.Gen.ById.X832bcc6686a26d56.set_Defaults'int raw_ int)
-                (Capnp.Gen.ById.X832bcc6686a26d56.set_Defaults'uint raw_ uint)
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (Defaults))
-instance (Classes.Cerialize s (V.Vector (Defaults))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (Defaults)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (Defaults))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (Defaults)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Defaults))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Defaults)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (Defaults))))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-data BenchmarkA 
-    = BenchmarkA 
-        {name :: T.Text
-        ,birthDay :: Std_.Int64
-        ,phone :: T.Text
-        ,siblings :: Std_.Int32
-        ,spouse :: Std_.Bool
-        ,money :: Std_.Double}
-    deriving(Std_.Show
-            ,Std_.Eq
-            ,Generics.Generic)
-instance (Default.Default (BenchmarkA)) where
-    def  = GenHelpersPure.defaultStruct
-instance (Classes.FromStruct Message.Const (BenchmarkA)) where
-    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
-instance (Classes.Decerialize (BenchmarkA)) where
-    type Cerial msg (BenchmarkA) = (Capnp.Gen.ById.X832bcc6686a26d56.BenchmarkA msg)
-    decerialize raw = (BenchmarkA <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_BenchmarkA'name raw) >>= Classes.decerialize)
-                                  <*> (Capnp.Gen.ById.X832bcc6686a26d56.get_BenchmarkA'birthDay raw)
-                                  <*> ((Capnp.Gen.ById.X832bcc6686a26d56.get_BenchmarkA'phone raw) >>= Classes.decerialize)
-                                  <*> (Capnp.Gen.ById.X832bcc6686a26d56.get_BenchmarkA'siblings raw)
-                                  <*> (Capnp.Gen.ById.X832bcc6686a26d56.get_BenchmarkA'spouse raw)
-                                  <*> (Capnp.Gen.ById.X832bcc6686a26d56.get_BenchmarkA'money raw))
-instance (Classes.Marshal s (BenchmarkA)) where
-    marshalInto raw_ value_ = case value_ of
-        BenchmarkA{..} ->
-            (do
-                ((Classes.cerialize (Untyped.message raw_) name) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_BenchmarkA'name raw_))
-                (Capnp.Gen.ById.X832bcc6686a26d56.set_BenchmarkA'birthDay raw_ birthDay)
-                ((Classes.cerialize (Untyped.message raw_) phone) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_BenchmarkA'phone raw_))
-                (Capnp.Gen.ById.X832bcc6686a26d56.set_BenchmarkA'siblings raw_ siblings)
-                (Capnp.Gen.ById.X832bcc6686a26d56.set_BenchmarkA'spouse raw_ spouse)
-                (Capnp.Gen.ById.X832bcc6686a26d56.set_BenchmarkA'money raw_ money)
-                (Std_.pure ())
-                )
-instance (Classes.Cerialize s (BenchmarkA))
-instance (Classes.Cerialize s (V.Vector (BenchmarkA))) where
-    cerialize  = GenHelpersPure.cerializeCompositeVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (BenchmarkA)))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (BenchmarkA))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (BenchmarkA)))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (BenchmarkA))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (BenchmarkA)))))))) where
-    cerialize  = GenHelpersPure.cerializeBasicVec
-instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (BenchmarkA))))))))) where
+instance (Default.Default Zdate) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const Zdate) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize Zdate) where
+    type Cerial msg Zdate = (Capnp.Gen.ById.X832bcc6686a26d56.Zdate msg)
+    decerialize raw = (Zdate <$> (Capnp.Gen.ById.X832bcc6686a26d56.get_Zdate'year raw)
+                             <*> (Capnp.Gen.ById.X832bcc6686a26d56.get_Zdate'month raw)
+                             <*> (Capnp.Gen.ById.X832bcc6686a26d56.get_Zdate'day raw))
+instance (Classes.Marshal s Zdate) where
+    marshalInto raw_ value_ = case value_ of
+        Zdate{..} ->
+            (do
+                (Capnp.Gen.ById.X832bcc6686a26d56.set_Zdate'year raw_ year)
+                (Capnp.Gen.ById.X832bcc6686a26d56.set_Zdate'month raw_ month)
+                (Capnp.Gen.ById.X832bcc6686a26d56.set_Zdate'day raw_ day)
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s Zdate)
+instance (Classes.Cerialize s (V.Vector Zdate)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector Zdate))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Zdate)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Zdate))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Zdate)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Zdate))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Zdate)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data Zdata 
+    = Zdata 
+        {data_ :: BS.ByteString}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default Zdata) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const Zdata) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize Zdata) where
+    type Cerial msg Zdata = (Capnp.Gen.ById.X832bcc6686a26d56.Zdata msg)
+    decerialize raw = (Zdata <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_Zdata'data_ raw) >>= Classes.decerialize))
+instance (Classes.Marshal s Zdata) where
+    marshalInto raw_ value_ = case value_ of
+        Zdata{..} ->
+            (do
+                ((Classes.cerialize (Untyped.message raw_) data_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Zdata'data_ raw_))
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s Zdata)
+instance (Classes.Cerialize s (V.Vector Zdata)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector Zdata))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Zdata)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Zdata))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Zdata)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Zdata))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Zdata)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data PlaneBase 
+    = PlaneBase 
+        {name :: T.Text
+        ,homes :: (V.Vector Capnp.Gen.ById.X832bcc6686a26d56.Airport)
+        ,rating :: Std_.Int64
+        ,canFly :: Std_.Bool
+        ,capacity :: Std_.Int64
+        ,maxSpeed :: Std_.Double}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default PlaneBase) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const PlaneBase) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize PlaneBase) where
+    type Cerial msg PlaneBase = (Capnp.Gen.ById.X832bcc6686a26d56.PlaneBase msg)
+    decerialize raw = (PlaneBase <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_PlaneBase'name raw) >>= Classes.decerialize)
+                                 <*> ((Capnp.Gen.ById.X832bcc6686a26d56.get_PlaneBase'homes raw) >>= Classes.decerialize)
+                                 <*> (Capnp.Gen.ById.X832bcc6686a26d56.get_PlaneBase'rating raw)
+                                 <*> (Capnp.Gen.ById.X832bcc6686a26d56.get_PlaneBase'canFly raw)
+                                 <*> (Capnp.Gen.ById.X832bcc6686a26d56.get_PlaneBase'capacity raw)
+                                 <*> (Capnp.Gen.ById.X832bcc6686a26d56.get_PlaneBase'maxSpeed raw))
+instance (Classes.Marshal s PlaneBase) where
+    marshalInto raw_ value_ = case value_ of
+        PlaneBase{..} ->
+            (do
+                ((Classes.cerialize (Untyped.message raw_) name) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_PlaneBase'name raw_))
+                ((Classes.cerialize (Untyped.message raw_) homes) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_PlaneBase'homes raw_))
+                (Capnp.Gen.ById.X832bcc6686a26d56.set_PlaneBase'rating raw_ rating)
+                (Capnp.Gen.ById.X832bcc6686a26d56.set_PlaneBase'canFly raw_ canFly)
+                (Capnp.Gen.ById.X832bcc6686a26d56.set_PlaneBase'capacity raw_ capacity)
+                (Capnp.Gen.ById.X832bcc6686a26d56.set_PlaneBase'maxSpeed raw_ maxSpeed)
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s PlaneBase)
+instance (Classes.Cerialize s (V.Vector PlaneBase)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector PlaneBase))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector PlaneBase)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector PlaneBase))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector PlaneBase)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector PlaneBase))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector PlaneBase)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data B737 
+    = B737 
+        {base :: PlaneBase}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default B737) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const B737) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize B737) where
+    type Cerial msg B737 = (Capnp.Gen.ById.X832bcc6686a26d56.B737 msg)
+    decerialize raw = (B737 <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_B737'base raw) >>= Classes.decerialize))
+instance (Classes.Marshal s B737) where
+    marshalInto raw_ value_ = case value_ of
+        B737{..} ->
+            (do
+                ((Classes.cerialize (Untyped.message raw_) base) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_B737'base raw_))
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s B737)
+instance (Classes.Cerialize s (V.Vector B737)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector B737))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector B737)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector B737))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector B737)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector B737))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector B737)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data A320 
+    = A320 
+        {base :: PlaneBase}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default A320) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const A320) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize A320) where
+    type Cerial msg A320 = (Capnp.Gen.ById.X832bcc6686a26d56.A320 msg)
+    decerialize raw = (A320 <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_A320'base raw) >>= Classes.decerialize))
+instance (Classes.Marshal s A320) where
+    marshalInto raw_ value_ = case value_ of
+        A320{..} ->
+            (do
+                ((Classes.cerialize (Untyped.message raw_) base) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_A320'base raw_))
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s A320)
+instance (Classes.Cerialize s (V.Vector A320)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector A320))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector A320)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector A320))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector A320)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector A320))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector A320)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data F16 
+    = F16 
+        {base :: PlaneBase}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default F16) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const F16) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize F16) where
+    type Cerial msg F16 = (Capnp.Gen.ById.X832bcc6686a26d56.F16 msg)
+    decerialize raw = (F16 <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_F16'base raw) >>= Classes.decerialize))
+instance (Classes.Marshal s F16) where
+    marshalInto raw_ value_ = case value_ of
+        F16{..} ->
+            (do
+                ((Classes.cerialize (Untyped.message raw_) base) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_F16'base raw_))
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s F16)
+instance (Classes.Cerialize s (V.Vector F16)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector F16))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector F16)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector F16))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector F16)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector F16))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector F16)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data Regression 
+    = Regression 
+        {base :: PlaneBase
+        ,b0 :: Std_.Double
+        ,beta :: (V.Vector Std_.Double)
+        ,planes :: (V.Vector Aircraft)
+        ,ymu :: Std_.Double
+        ,ysd :: Std_.Double}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default Regression) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const Regression) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize Regression) where
+    type Cerial msg Regression = (Capnp.Gen.ById.X832bcc6686a26d56.Regression msg)
+    decerialize raw = (Regression <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_Regression'base raw) >>= Classes.decerialize)
+                                  <*> (Capnp.Gen.ById.X832bcc6686a26d56.get_Regression'b0 raw)
+                                  <*> ((Capnp.Gen.ById.X832bcc6686a26d56.get_Regression'beta raw) >>= Classes.decerialize)
+                                  <*> ((Capnp.Gen.ById.X832bcc6686a26d56.get_Regression'planes raw) >>= Classes.decerialize)
+                                  <*> (Capnp.Gen.ById.X832bcc6686a26d56.get_Regression'ymu raw)
+                                  <*> (Capnp.Gen.ById.X832bcc6686a26d56.get_Regression'ysd raw))
+instance (Classes.Marshal s Regression) where
+    marshalInto raw_ value_ = case value_ of
+        Regression{..} ->
+            (do
+                ((Classes.cerialize (Untyped.message raw_) base) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Regression'base raw_))
+                (Capnp.Gen.ById.X832bcc6686a26d56.set_Regression'b0 raw_ b0)
+                ((Classes.cerialize (Untyped.message raw_) beta) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Regression'beta raw_))
+                ((Classes.cerialize (Untyped.message raw_) planes) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Regression'planes raw_))
+                (Capnp.Gen.ById.X832bcc6686a26d56.set_Regression'ymu raw_ ymu)
+                (Capnp.Gen.ById.X832bcc6686a26d56.set_Regression'ysd raw_ ysd)
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s Regression)
+instance (Classes.Cerialize s (V.Vector Regression)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector Regression))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Regression)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Regression))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Regression)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Regression))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Regression)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data Aircraft 
+    = Aircraft'void 
+    | Aircraft'b737 B737
+    | Aircraft'a320 A320
+    | Aircraft'f16 F16
+    | Aircraft'unknown' Std_.Word16
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default Aircraft) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const Aircraft) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize Aircraft) where
+    type Cerial msg Aircraft = (Capnp.Gen.ById.X832bcc6686a26d56.Aircraft msg)
+    decerialize raw = (do
+        raw <- (Capnp.Gen.ById.X832bcc6686a26d56.get_Aircraft' raw)
+        case raw of
+            (Capnp.Gen.ById.X832bcc6686a26d56.Aircraft'void) ->
+                (Std_.pure Aircraft'void)
+            (Capnp.Gen.ById.X832bcc6686a26d56.Aircraft'b737 raw) ->
+                (Aircraft'b737 <$> (Classes.decerialize raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Aircraft'a320 raw) ->
+                (Aircraft'a320 <$> (Classes.decerialize raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Aircraft'f16 raw) ->
+                (Aircraft'f16 <$> (Classes.decerialize raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Aircraft'unknown' tag) ->
+                (Std_.pure (Aircraft'unknown' tag))
+        )
+instance (Classes.Marshal s Aircraft) where
+    marshalInto raw_ value_ = case value_ of
+        (Aircraft'void) ->
+            (Capnp.Gen.ById.X832bcc6686a26d56.set_Aircraft'void raw_)
+        (Aircraft'b737 arg_) ->
+            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Aircraft'b737 raw_))
+        (Aircraft'a320 arg_) ->
+            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Aircraft'a320 raw_))
+        (Aircraft'f16 arg_) ->
+            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Aircraft'f16 raw_))
+        (Aircraft'unknown' tag) ->
+            (Capnp.Gen.ById.X832bcc6686a26d56.set_Aircraft'unknown' raw_ tag)
+instance (Classes.Cerialize s Aircraft)
+instance (Classes.Cerialize s (V.Vector Aircraft)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector Aircraft))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Aircraft)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Aircraft))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Aircraft)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Aircraft))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Aircraft)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data Z 
+    = Z'void 
+    | Z'zz Z
+    | Z'f64 Std_.Double
+    | Z'f32 Std_.Float
+    | Z'i64 Std_.Int64
+    | Z'i32 Std_.Int32
+    | Z'i16 Std_.Int16
+    | Z'i8 Std_.Int8
+    | Z'u64 Std_.Word64
+    | Z'u32 Std_.Word32
+    | Z'u16 Std_.Word16
+    | Z'u8 Std_.Word8
+    | Z'bool Std_.Bool
+    | Z'text T.Text
+    | Z'blob BS.ByteString
+    | Z'f64vec (V.Vector Std_.Double)
+    | Z'f32vec (V.Vector Std_.Float)
+    | Z'i64vec (V.Vector Std_.Int64)
+    | Z'i32vec (V.Vector Std_.Int32)
+    | Z'i16vec (V.Vector Std_.Int16)
+    | Z'i8vec (V.Vector Std_.Int8)
+    | Z'u64vec (V.Vector Std_.Word64)
+    | Z'u32vec (V.Vector Std_.Word32)
+    | Z'u16vec (V.Vector Std_.Word16)
+    | Z'u8vec (V.Vector Std_.Word8)
+    | Z'zvec (V.Vector Z)
+    | Z'zvecvec (V.Vector (V.Vector Z))
+    | Z'zdate Zdate
+    | Z'zdata Zdata
+    | Z'aircraftvec (V.Vector Aircraft)
+    | Z'aircraft Aircraft
+    | Z'regression Regression
+    | Z'planebase PlaneBase
+    | Z'airport Capnp.Gen.ById.X832bcc6686a26d56.Airport
+    | Z'b737 B737
+    | Z'a320 A320
+    | Z'f16 F16
+    | Z'zdatevec (V.Vector Zdate)
+    | Z'zdatavec (V.Vector Zdata)
+    | Z'boolvec (V.Vector Std_.Bool)
+    | Z'datavec (V.Vector BS.ByteString)
+    | Z'textvec (V.Vector T.Text)
+    | Z'grp Z'grp
+    | Z'echo Echo
+    | Z'echoBases EchoBases
+    | Z'unknown' Std_.Word16
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default Z) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const Z) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize Z) where
+    type Cerial msg Z = (Capnp.Gen.ById.X832bcc6686a26d56.Z msg)
+    decerialize raw = (do
+        raw <- (Capnp.Gen.ById.X832bcc6686a26d56.get_Z' raw)
+        case raw of
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'void) ->
+                (Std_.pure Z'void)
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'zz raw) ->
+                (Z'zz <$> (Classes.decerialize raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'f64 raw) ->
+                (Std_.pure (Z'f64 raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'f32 raw) ->
+                (Std_.pure (Z'f32 raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'i64 raw) ->
+                (Std_.pure (Z'i64 raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'i32 raw) ->
+                (Std_.pure (Z'i32 raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'i16 raw) ->
+                (Std_.pure (Z'i16 raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'i8 raw) ->
+                (Std_.pure (Z'i8 raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'u64 raw) ->
+                (Std_.pure (Z'u64 raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'u32 raw) ->
+                (Std_.pure (Z'u32 raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'u16 raw) ->
+                (Std_.pure (Z'u16 raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'u8 raw) ->
+                (Std_.pure (Z'u8 raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'bool raw) ->
+                (Std_.pure (Z'bool raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'text raw) ->
+                (Z'text <$> (Classes.decerialize raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'blob raw) ->
+                (Z'blob <$> (Classes.decerialize raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'f64vec raw) ->
+                (Z'f64vec <$> (Classes.decerialize raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'f32vec raw) ->
+                (Z'f32vec <$> (Classes.decerialize raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'i64vec raw) ->
+                (Z'i64vec <$> (Classes.decerialize raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'i32vec raw) ->
+                (Z'i32vec <$> (Classes.decerialize raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'i16vec raw) ->
+                (Z'i16vec <$> (Classes.decerialize raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'i8vec raw) ->
+                (Z'i8vec <$> (Classes.decerialize raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'u64vec raw) ->
+                (Z'u64vec <$> (Classes.decerialize raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'u32vec raw) ->
+                (Z'u32vec <$> (Classes.decerialize raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'u16vec raw) ->
+                (Z'u16vec <$> (Classes.decerialize raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'u8vec raw) ->
+                (Z'u8vec <$> (Classes.decerialize raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'zvec raw) ->
+                (Z'zvec <$> (Classes.decerialize raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'zvecvec raw) ->
+                (Z'zvecvec <$> (Classes.decerialize raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'zdate raw) ->
+                (Z'zdate <$> (Classes.decerialize raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'zdata raw) ->
+                (Z'zdata <$> (Classes.decerialize raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'aircraftvec raw) ->
+                (Z'aircraftvec <$> (Classes.decerialize raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'aircraft raw) ->
+                (Z'aircraft <$> (Classes.decerialize raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'regression raw) ->
+                (Z'regression <$> (Classes.decerialize raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'planebase raw) ->
+                (Z'planebase <$> (Classes.decerialize raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'airport raw) ->
+                (Std_.pure (Z'airport raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'b737 raw) ->
+                (Z'b737 <$> (Classes.decerialize raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'a320 raw) ->
+                (Z'a320 <$> (Classes.decerialize raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'f16 raw) ->
+                (Z'f16 <$> (Classes.decerialize raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'zdatevec raw) ->
+                (Z'zdatevec <$> (Classes.decerialize raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'zdatavec raw) ->
+                (Z'zdatavec <$> (Classes.decerialize raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'boolvec raw) ->
+                (Z'boolvec <$> (Classes.decerialize raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'datavec raw) ->
+                (Z'datavec <$> (Classes.decerialize raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'textvec raw) ->
+                (Z'textvec <$> (Classes.decerialize raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'grp raw) ->
+                (Z'grp <$> (Classes.decerialize raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'echo raw) ->
+                (Z'echo <$> (Classes.decerialize raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'echoBases raw) ->
+                (Z'echoBases <$> (Classes.decerialize raw))
+            (Capnp.Gen.ById.X832bcc6686a26d56.Z'unknown' tag) ->
+                (Std_.pure (Z'unknown' tag))
+        )
+instance (Classes.Marshal s Z) where
+    marshalInto raw_ value_ = case value_ of
+        (Z'void) ->
+            (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'void raw_)
+        (Z'zz arg_) ->
+            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'zz raw_))
+        (Z'f64 arg_) ->
+            (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'f64 raw_ arg_)
+        (Z'f32 arg_) ->
+            (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'f32 raw_ arg_)
+        (Z'i64 arg_) ->
+            (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'i64 raw_ arg_)
+        (Z'i32 arg_) ->
+            (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'i32 raw_ arg_)
+        (Z'i16 arg_) ->
+            (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'i16 raw_ arg_)
+        (Z'i8 arg_) ->
+            (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'i8 raw_ arg_)
+        (Z'u64 arg_) ->
+            (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'u64 raw_ arg_)
+        (Z'u32 arg_) ->
+            (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'u32 raw_ arg_)
+        (Z'u16 arg_) ->
+            (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'u16 raw_ arg_)
+        (Z'u8 arg_) ->
+            (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'u8 raw_ arg_)
+        (Z'bool arg_) ->
+            (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'bool raw_ arg_)
+        (Z'text arg_) ->
+            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'text raw_))
+        (Z'blob arg_) ->
+            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'blob raw_))
+        (Z'f64vec arg_) ->
+            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'f64vec raw_))
+        (Z'f32vec arg_) ->
+            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'f32vec raw_))
+        (Z'i64vec arg_) ->
+            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'i64vec raw_))
+        (Z'i32vec arg_) ->
+            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'i32vec raw_))
+        (Z'i16vec arg_) ->
+            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'i16vec raw_))
+        (Z'i8vec arg_) ->
+            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'i8vec raw_))
+        (Z'u64vec arg_) ->
+            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'u64vec raw_))
+        (Z'u32vec arg_) ->
+            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'u32vec raw_))
+        (Z'u16vec arg_) ->
+            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'u16vec raw_))
+        (Z'u8vec arg_) ->
+            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'u8vec raw_))
+        (Z'zvec arg_) ->
+            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'zvec raw_))
+        (Z'zvecvec arg_) ->
+            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'zvecvec raw_))
+        (Z'zdate arg_) ->
+            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'zdate raw_))
+        (Z'zdata arg_) ->
+            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'zdata raw_))
+        (Z'aircraftvec arg_) ->
+            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'aircraftvec raw_))
+        (Z'aircraft arg_) ->
+            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'aircraft raw_))
+        (Z'regression arg_) ->
+            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'regression raw_))
+        (Z'planebase arg_) ->
+            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'planebase raw_))
+        (Z'airport arg_) ->
+            (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'airport raw_ arg_)
+        (Z'b737 arg_) ->
+            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'b737 raw_))
+        (Z'a320 arg_) ->
+            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'a320 raw_))
+        (Z'f16 arg_) ->
+            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'f16 raw_))
+        (Z'zdatevec arg_) ->
+            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'zdatevec raw_))
+        (Z'zdatavec arg_) ->
+            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'zdatavec raw_))
+        (Z'boolvec arg_) ->
+            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'boolvec raw_))
+        (Z'datavec arg_) ->
+            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'datavec raw_))
+        (Z'textvec arg_) ->
+            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'textvec raw_))
+        (Z'grp arg_) ->
+            (do
+                raw_ <- (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'grp raw_)
+                (Classes.marshalInto raw_ arg_)
+                )
+        (Z'echo arg_) ->
+            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'echo raw_))
+        (Z'echoBases arg_) ->
+            ((Classes.cerialize (Untyped.message raw_) arg_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'echoBases raw_))
+        (Z'unknown' tag) ->
+            (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'unknown' raw_ tag)
+instance (Classes.Cerialize s Z)
+instance (Classes.Cerialize s (V.Vector Z)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector Z))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Z)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Z))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Z)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Z))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Z)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data Z'grp 
+    = Z'grp' 
+        {first :: Std_.Word64
+        ,second :: Std_.Word64}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default Z'grp) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const Z'grp) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize Z'grp) where
+    type Cerial msg Z'grp = (Capnp.Gen.ById.X832bcc6686a26d56.Z'grp msg)
+    decerialize raw = (Z'grp' <$> (Capnp.Gen.ById.X832bcc6686a26d56.get_Z'grp'first raw)
+                              <*> (Capnp.Gen.ById.X832bcc6686a26d56.get_Z'grp'second raw))
+instance (Classes.Marshal s Z'grp) where
+    marshalInto raw_ value_ = case value_ of
+        Z'grp'{..} ->
+            (do
+                (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'grp'first raw_ first)
+                (Capnp.Gen.ById.X832bcc6686a26d56.set_Z'grp'second raw_ second)
+                (Std_.pure ())
+                )
+data Counter 
+    = Counter 
+        {size :: Std_.Int64
+        ,words :: T.Text
+        ,wordlist :: (V.Vector T.Text)}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default Counter) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const Counter) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize Counter) where
+    type Cerial msg Counter = (Capnp.Gen.ById.X832bcc6686a26d56.Counter msg)
+    decerialize raw = (Counter <$> (Capnp.Gen.ById.X832bcc6686a26d56.get_Counter'size raw)
+                               <*> ((Capnp.Gen.ById.X832bcc6686a26d56.get_Counter'words raw) >>= Classes.decerialize)
+                               <*> ((Capnp.Gen.ById.X832bcc6686a26d56.get_Counter'wordlist raw) >>= Classes.decerialize))
+instance (Classes.Marshal s Counter) where
+    marshalInto raw_ value_ = case value_ of
+        Counter{..} ->
+            (do
+                (Capnp.Gen.ById.X832bcc6686a26d56.set_Counter'size raw_ size)
+                ((Classes.cerialize (Untyped.message raw_) words) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Counter'words raw_))
+                ((Classes.cerialize (Untyped.message raw_) wordlist) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Counter'wordlist raw_))
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s Counter)
+instance (Classes.Cerialize s (V.Vector Counter)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector Counter))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Counter)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Counter))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Counter)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Counter))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Counter)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data Bag 
+    = Bag 
+        {counter :: Counter}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default Bag) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const Bag) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize Bag) where
+    type Cerial msg Bag = (Capnp.Gen.ById.X832bcc6686a26d56.Bag msg)
+    decerialize raw = (Bag <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_Bag'counter raw) >>= Classes.decerialize))
+instance (Classes.Marshal s Bag) where
+    marshalInto raw_ value_ = case value_ of
+        Bag{..} ->
+            (do
+                ((Classes.cerialize (Untyped.message raw_) counter) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Bag'counter raw_))
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s Bag)
+instance (Classes.Cerialize s (V.Vector Bag)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector Bag))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Bag)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Bag))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Bag)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Bag))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Bag)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data Zserver 
+    = Zserver 
+        {waitingjobs :: (V.Vector Zjob)}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default Zserver) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const Zserver) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize Zserver) where
+    type Cerial msg Zserver = (Capnp.Gen.ById.X832bcc6686a26d56.Zserver msg)
+    decerialize raw = (Zserver <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_Zserver'waitingjobs raw) >>= Classes.decerialize))
+instance (Classes.Marshal s Zserver) where
+    marshalInto raw_ value_ = case value_ of
+        Zserver{..} ->
+            (do
+                ((Classes.cerialize (Untyped.message raw_) waitingjobs) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Zserver'waitingjobs raw_))
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s Zserver)
+instance (Classes.Cerialize s (V.Vector Zserver)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector Zserver))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Zserver)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Zserver))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Zserver)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Zserver))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Zserver)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data Zjob 
+    = Zjob 
+        {cmd :: T.Text
+        ,args :: (V.Vector T.Text)}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default Zjob) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const Zjob) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize Zjob) where
+    type Cerial msg Zjob = (Capnp.Gen.ById.X832bcc6686a26d56.Zjob msg)
+    decerialize raw = (Zjob <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_Zjob'cmd raw) >>= Classes.decerialize)
+                            <*> ((Capnp.Gen.ById.X832bcc6686a26d56.get_Zjob'args raw) >>= Classes.decerialize))
+instance (Classes.Marshal s Zjob) where
+    marshalInto raw_ value_ = case value_ of
+        Zjob{..} ->
+            (do
+                ((Classes.cerialize (Untyped.message raw_) cmd) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Zjob'cmd raw_))
+                ((Classes.cerialize (Untyped.message raw_) args) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Zjob'args raw_))
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s Zjob)
+instance (Classes.Cerialize s (V.Vector Zjob)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector Zjob))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Zjob)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Zjob))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Zjob)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Zjob))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Zjob)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data VerEmpty 
+    = VerEmpty 
+        {}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default VerEmpty) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const VerEmpty) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize VerEmpty) where
+    type Cerial msg VerEmpty = (Capnp.Gen.ById.X832bcc6686a26d56.VerEmpty msg)
+    decerialize raw = (Std_.pure VerEmpty)
+instance (Classes.Marshal s VerEmpty) where
+    marshalInto raw_ value_ = case value_ of
+        (VerEmpty) ->
+            (do
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s VerEmpty)
+instance (Classes.Cerialize s (V.Vector VerEmpty)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector VerEmpty))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector VerEmpty)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector VerEmpty))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector VerEmpty)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector VerEmpty))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector VerEmpty)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data VerOneData 
+    = VerOneData 
+        {val :: Std_.Int16}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default VerOneData) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const VerOneData) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize VerOneData) where
+    type Cerial msg VerOneData = (Capnp.Gen.ById.X832bcc6686a26d56.VerOneData msg)
+    decerialize raw = (VerOneData <$> (Capnp.Gen.ById.X832bcc6686a26d56.get_VerOneData'val raw))
+instance (Classes.Marshal s VerOneData) where
+    marshalInto raw_ value_ = case value_ of
+        VerOneData{..} ->
+            (do
+                (Capnp.Gen.ById.X832bcc6686a26d56.set_VerOneData'val raw_ val)
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s VerOneData)
+instance (Classes.Cerialize s (V.Vector VerOneData)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector VerOneData))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector VerOneData)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector VerOneData))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector VerOneData)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector VerOneData))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector VerOneData)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data VerTwoData 
+    = VerTwoData 
+        {val :: Std_.Int16
+        ,duo :: Std_.Int64}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default VerTwoData) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const VerTwoData) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize VerTwoData) where
+    type Cerial msg VerTwoData = (Capnp.Gen.ById.X832bcc6686a26d56.VerTwoData msg)
+    decerialize raw = (VerTwoData <$> (Capnp.Gen.ById.X832bcc6686a26d56.get_VerTwoData'val raw)
+                                  <*> (Capnp.Gen.ById.X832bcc6686a26d56.get_VerTwoData'duo raw))
+instance (Classes.Marshal s VerTwoData) where
+    marshalInto raw_ value_ = case value_ of
+        VerTwoData{..} ->
+            (do
+                (Capnp.Gen.ById.X832bcc6686a26d56.set_VerTwoData'val raw_ val)
+                (Capnp.Gen.ById.X832bcc6686a26d56.set_VerTwoData'duo raw_ duo)
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s VerTwoData)
+instance (Classes.Cerialize s (V.Vector VerTwoData)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector VerTwoData))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector VerTwoData)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector VerTwoData))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector VerTwoData)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector VerTwoData))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector VerTwoData)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data VerOnePtr 
+    = VerOnePtr 
+        {ptr :: VerOneData}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default VerOnePtr) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const VerOnePtr) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize VerOnePtr) where
+    type Cerial msg VerOnePtr = (Capnp.Gen.ById.X832bcc6686a26d56.VerOnePtr msg)
+    decerialize raw = (VerOnePtr <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_VerOnePtr'ptr raw) >>= Classes.decerialize))
+instance (Classes.Marshal s VerOnePtr) where
+    marshalInto raw_ value_ = case value_ of
+        VerOnePtr{..} ->
+            (do
+                ((Classes.cerialize (Untyped.message raw_) ptr) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_VerOnePtr'ptr raw_))
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s VerOnePtr)
+instance (Classes.Cerialize s (V.Vector VerOnePtr)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector VerOnePtr))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector VerOnePtr)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector VerOnePtr))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector VerOnePtr)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector VerOnePtr))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector VerOnePtr)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data VerTwoPtr 
+    = VerTwoPtr 
+        {ptr1 :: VerOneData
+        ,ptr2 :: VerOneData}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default VerTwoPtr) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const VerTwoPtr) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize VerTwoPtr) where
+    type Cerial msg VerTwoPtr = (Capnp.Gen.ById.X832bcc6686a26d56.VerTwoPtr msg)
+    decerialize raw = (VerTwoPtr <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_VerTwoPtr'ptr1 raw) >>= Classes.decerialize)
+                                 <*> ((Capnp.Gen.ById.X832bcc6686a26d56.get_VerTwoPtr'ptr2 raw) >>= Classes.decerialize))
+instance (Classes.Marshal s VerTwoPtr) where
+    marshalInto raw_ value_ = case value_ of
+        VerTwoPtr{..} ->
+            (do
+                ((Classes.cerialize (Untyped.message raw_) ptr1) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_VerTwoPtr'ptr1 raw_))
+                ((Classes.cerialize (Untyped.message raw_) ptr2) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_VerTwoPtr'ptr2 raw_))
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s VerTwoPtr)
+instance (Classes.Cerialize s (V.Vector VerTwoPtr)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector VerTwoPtr))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector VerTwoPtr)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector VerTwoPtr))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector VerTwoPtr)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector VerTwoPtr))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector VerTwoPtr)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data VerTwoDataTwoPtr 
+    = VerTwoDataTwoPtr 
+        {val :: Std_.Int16
+        ,duo :: Std_.Int64
+        ,ptr1 :: VerOneData
+        ,ptr2 :: VerOneData}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default VerTwoDataTwoPtr) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const VerTwoDataTwoPtr) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize VerTwoDataTwoPtr) where
+    type Cerial msg VerTwoDataTwoPtr = (Capnp.Gen.ById.X832bcc6686a26d56.VerTwoDataTwoPtr msg)
+    decerialize raw = (VerTwoDataTwoPtr <$> (Capnp.Gen.ById.X832bcc6686a26d56.get_VerTwoDataTwoPtr'val raw)
+                                        <*> (Capnp.Gen.ById.X832bcc6686a26d56.get_VerTwoDataTwoPtr'duo raw)
+                                        <*> ((Capnp.Gen.ById.X832bcc6686a26d56.get_VerTwoDataTwoPtr'ptr1 raw) >>= Classes.decerialize)
+                                        <*> ((Capnp.Gen.ById.X832bcc6686a26d56.get_VerTwoDataTwoPtr'ptr2 raw) >>= Classes.decerialize))
+instance (Classes.Marshal s VerTwoDataTwoPtr) where
+    marshalInto raw_ value_ = case value_ of
+        VerTwoDataTwoPtr{..} ->
+            (do
+                (Capnp.Gen.ById.X832bcc6686a26d56.set_VerTwoDataTwoPtr'val raw_ val)
+                (Capnp.Gen.ById.X832bcc6686a26d56.set_VerTwoDataTwoPtr'duo raw_ duo)
+                ((Classes.cerialize (Untyped.message raw_) ptr1) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_VerTwoDataTwoPtr'ptr1 raw_))
+                ((Classes.cerialize (Untyped.message raw_) ptr2) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_VerTwoDataTwoPtr'ptr2 raw_))
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s VerTwoDataTwoPtr)
+instance (Classes.Cerialize s (V.Vector VerTwoDataTwoPtr)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector VerTwoDataTwoPtr))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector VerTwoDataTwoPtr)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector VerTwoDataTwoPtr))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector VerTwoDataTwoPtr)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector VerTwoDataTwoPtr))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector VerTwoDataTwoPtr)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data HoldsVerEmptyList 
+    = HoldsVerEmptyList 
+        {mylist :: (V.Vector VerEmpty)}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default HoldsVerEmptyList) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const HoldsVerEmptyList) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize HoldsVerEmptyList) where
+    type Cerial msg HoldsVerEmptyList = (Capnp.Gen.ById.X832bcc6686a26d56.HoldsVerEmptyList msg)
+    decerialize raw = (HoldsVerEmptyList <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_HoldsVerEmptyList'mylist raw) >>= Classes.decerialize))
+instance (Classes.Marshal s HoldsVerEmptyList) where
+    marshalInto raw_ value_ = case value_ of
+        HoldsVerEmptyList{..} ->
+            (do
+                ((Classes.cerialize (Untyped.message raw_) mylist) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_HoldsVerEmptyList'mylist raw_))
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s HoldsVerEmptyList)
+instance (Classes.Cerialize s (V.Vector HoldsVerEmptyList)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector HoldsVerEmptyList))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector HoldsVerEmptyList)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector HoldsVerEmptyList))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector HoldsVerEmptyList)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector HoldsVerEmptyList))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector HoldsVerEmptyList)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data HoldsVerOneDataList 
+    = HoldsVerOneDataList 
+        {mylist :: (V.Vector VerOneData)}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default HoldsVerOneDataList) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const HoldsVerOneDataList) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize HoldsVerOneDataList) where
+    type Cerial msg HoldsVerOneDataList = (Capnp.Gen.ById.X832bcc6686a26d56.HoldsVerOneDataList msg)
+    decerialize raw = (HoldsVerOneDataList <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_HoldsVerOneDataList'mylist raw) >>= Classes.decerialize))
+instance (Classes.Marshal s HoldsVerOneDataList) where
+    marshalInto raw_ value_ = case value_ of
+        HoldsVerOneDataList{..} ->
+            (do
+                ((Classes.cerialize (Untyped.message raw_) mylist) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_HoldsVerOneDataList'mylist raw_))
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s HoldsVerOneDataList)
+instance (Classes.Cerialize s (V.Vector HoldsVerOneDataList)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector HoldsVerOneDataList))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector HoldsVerOneDataList)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector HoldsVerOneDataList))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector HoldsVerOneDataList)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector HoldsVerOneDataList))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector HoldsVerOneDataList)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data HoldsVerTwoDataList 
+    = HoldsVerTwoDataList 
+        {mylist :: (V.Vector VerTwoData)}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default HoldsVerTwoDataList) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const HoldsVerTwoDataList) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize HoldsVerTwoDataList) where
+    type Cerial msg HoldsVerTwoDataList = (Capnp.Gen.ById.X832bcc6686a26d56.HoldsVerTwoDataList msg)
+    decerialize raw = (HoldsVerTwoDataList <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_HoldsVerTwoDataList'mylist raw) >>= Classes.decerialize))
+instance (Classes.Marshal s HoldsVerTwoDataList) where
+    marshalInto raw_ value_ = case value_ of
+        HoldsVerTwoDataList{..} ->
+            (do
+                ((Classes.cerialize (Untyped.message raw_) mylist) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_HoldsVerTwoDataList'mylist raw_))
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s HoldsVerTwoDataList)
+instance (Classes.Cerialize s (V.Vector HoldsVerTwoDataList)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector HoldsVerTwoDataList))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector HoldsVerTwoDataList)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector HoldsVerTwoDataList))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector HoldsVerTwoDataList)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector HoldsVerTwoDataList))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector HoldsVerTwoDataList)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data HoldsVerOnePtrList 
+    = HoldsVerOnePtrList 
+        {mylist :: (V.Vector VerOnePtr)}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default HoldsVerOnePtrList) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const HoldsVerOnePtrList) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize HoldsVerOnePtrList) where
+    type Cerial msg HoldsVerOnePtrList = (Capnp.Gen.ById.X832bcc6686a26d56.HoldsVerOnePtrList msg)
+    decerialize raw = (HoldsVerOnePtrList <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_HoldsVerOnePtrList'mylist raw) >>= Classes.decerialize))
+instance (Classes.Marshal s HoldsVerOnePtrList) where
+    marshalInto raw_ value_ = case value_ of
+        HoldsVerOnePtrList{..} ->
+            (do
+                ((Classes.cerialize (Untyped.message raw_) mylist) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_HoldsVerOnePtrList'mylist raw_))
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s HoldsVerOnePtrList)
+instance (Classes.Cerialize s (V.Vector HoldsVerOnePtrList)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector HoldsVerOnePtrList))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector HoldsVerOnePtrList)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector HoldsVerOnePtrList))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector HoldsVerOnePtrList)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector HoldsVerOnePtrList))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector HoldsVerOnePtrList)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data HoldsVerTwoPtrList 
+    = HoldsVerTwoPtrList 
+        {mylist :: (V.Vector VerTwoPtr)}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default HoldsVerTwoPtrList) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const HoldsVerTwoPtrList) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize HoldsVerTwoPtrList) where
+    type Cerial msg HoldsVerTwoPtrList = (Capnp.Gen.ById.X832bcc6686a26d56.HoldsVerTwoPtrList msg)
+    decerialize raw = (HoldsVerTwoPtrList <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_HoldsVerTwoPtrList'mylist raw) >>= Classes.decerialize))
+instance (Classes.Marshal s HoldsVerTwoPtrList) where
+    marshalInto raw_ value_ = case value_ of
+        HoldsVerTwoPtrList{..} ->
+            (do
+                ((Classes.cerialize (Untyped.message raw_) mylist) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_HoldsVerTwoPtrList'mylist raw_))
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s HoldsVerTwoPtrList)
+instance (Classes.Cerialize s (V.Vector HoldsVerTwoPtrList)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector HoldsVerTwoPtrList))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector HoldsVerTwoPtrList)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector HoldsVerTwoPtrList))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector HoldsVerTwoPtrList)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector HoldsVerTwoPtrList))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector HoldsVerTwoPtrList)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data HoldsVerTwoTwoList 
+    = HoldsVerTwoTwoList 
+        {mylist :: (V.Vector VerTwoDataTwoPtr)}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default HoldsVerTwoTwoList) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const HoldsVerTwoTwoList) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize HoldsVerTwoTwoList) where
+    type Cerial msg HoldsVerTwoTwoList = (Capnp.Gen.ById.X832bcc6686a26d56.HoldsVerTwoTwoList msg)
+    decerialize raw = (HoldsVerTwoTwoList <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_HoldsVerTwoTwoList'mylist raw) >>= Classes.decerialize))
+instance (Classes.Marshal s HoldsVerTwoTwoList) where
+    marshalInto raw_ value_ = case value_ of
+        HoldsVerTwoTwoList{..} ->
+            (do
+                ((Classes.cerialize (Untyped.message raw_) mylist) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_HoldsVerTwoTwoList'mylist raw_))
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s HoldsVerTwoTwoList)
+instance (Classes.Cerialize s (V.Vector HoldsVerTwoTwoList)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector HoldsVerTwoTwoList))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector HoldsVerTwoTwoList)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector HoldsVerTwoTwoList))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector HoldsVerTwoTwoList)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector HoldsVerTwoTwoList))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector HoldsVerTwoTwoList)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data HoldsVerTwoTwoPlus 
+    = HoldsVerTwoTwoPlus 
+        {mylist :: (V.Vector VerTwoTwoPlus)}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default HoldsVerTwoTwoPlus) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const HoldsVerTwoTwoPlus) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize HoldsVerTwoTwoPlus) where
+    type Cerial msg HoldsVerTwoTwoPlus = (Capnp.Gen.ById.X832bcc6686a26d56.HoldsVerTwoTwoPlus msg)
+    decerialize raw = (HoldsVerTwoTwoPlus <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_HoldsVerTwoTwoPlus'mylist raw) >>= Classes.decerialize))
+instance (Classes.Marshal s HoldsVerTwoTwoPlus) where
+    marshalInto raw_ value_ = case value_ of
+        HoldsVerTwoTwoPlus{..} ->
+            (do
+                ((Classes.cerialize (Untyped.message raw_) mylist) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_HoldsVerTwoTwoPlus'mylist raw_))
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s HoldsVerTwoTwoPlus)
+instance (Classes.Cerialize s (V.Vector HoldsVerTwoTwoPlus)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector HoldsVerTwoTwoPlus))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector HoldsVerTwoTwoPlus)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector HoldsVerTwoTwoPlus))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector HoldsVerTwoTwoPlus)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector HoldsVerTwoTwoPlus))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector HoldsVerTwoTwoPlus)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data VerTwoTwoPlus 
+    = VerTwoTwoPlus 
+        {val :: Std_.Int16
+        ,duo :: Std_.Int64
+        ,ptr1 :: VerTwoDataTwoPtr
+        ,ptr2 :: VerTwoDataTwoPtr
+        ,tre :: Std_.Int64
+        ,lst3 :: (V.Vector Std_.Int64)}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default VerTwoTwoPlus) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const VerTwoTwoPlus) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize VerTwoTwoPlus) where
+    type Cerial msg VerTwoTwoPlus = (Capnp.Gen.ById.X832bcc6686a26d56.VerTwoTwoPlus msg)
+    decerialize raw = (VerTwoTwoPlus <$> (Capnp.Gen.ById.X832bcc6686a26d56.get_VerTwoTwoPlus'val raw)
+                                     <*> (Capnp.Gen.ById.X832bcc6686a26d56.get_VerTwoTwoPlus'duo raw)
+                                     <*> ((Capnp.Gen.ById.X832bcc6686a26d56.get_VerTwoTwoPlus'ptr1 raw) >>= Classes.decerialize)
+                                     <*> ((Capnp.Gen.ById.X832bcc6686a26d56.get_VerTwoTwoPlus'ptr2 raw) >>= Classes.decerialize)
+                                     <*> (Capnp.Gen.ById.X832bcc6686a26d56.get_VerTwoTwoPlus'tre raw)
+                                     <*> ((Capnp.Gen.ById.X832bcc6686a26d56.get_VerTwoTwoPlus'lst3 raw) >>= Classes.decerialize))
+instance (Classes.Marshal s VerTwoTwoPlus) where
+    marshalInto raw_ value_ = case value_ of
+        VerTwoTwoPlus{..} ->
+            (do
+                (Capnp.Gen.ById.X832bcc6686a26d56.set_VerTwoTwoPlus'val raw_ val)
+                (Capnp.Gen.ById.X832bcc6686a26d56.set_VerTwoTwoPlus'duo raw_ duo)
+                ((Classes.cerialize (Untyped.message raw_) ptr1) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_VerTwoTwoPlus'ptr1 raw_))
+                ((Classes.cerialize (Untyped.message raw_) ptr2) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_VerTwoTwoPlus'ptr2 raw_))
+                (Capnp.Gen.ById.X832bcc6686a26d56.set_VerTwoTwoPlus'tre raw_ tre)
+                ((Classes.cerialize (Untyped.message raw_) lst3) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_VerTwoTwoPlus'lst3 raw_))
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s VerTwoTwoPlus)
+instance (Classes.Cerialize s (V.Vector VerTwoTwoPlus)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector VerTwoTwoPlus))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector VerTwoTwoPlus)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector VerTwoTwoPlus))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector VerTwoTwoPlus)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector VerTwoTwoPlus))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector VerTwoTwoPlus)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data HoldsText 
+    = HoldsText 
+        {txt :: T.Text
+        ,lst :: (V.Vector T.Text)
+        ,lstlst :: (V.Vector (V.Vector T.Text))}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default HoldsText) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const HoldsText) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize HoldsText) where
+    type Cerial msg HoldsText = (Capnp.Gen.ById.X832bcc6686a26d56.HoldsText msg)
+    decerialize raw = (HoldsText <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_HoldsText'txt raw) >>= Classes.decerialize)
+                                 <*> ((Capnp.Gen.ById.X832bcc6686a26d56.get_HoldsText'lst raw) >>= Classes.decerialize)
+                                 <*> ((Capnp.Gen.ById.X832bcc6686a26d56.get_HoldsText'lstlst raw) >>= Classes.decerialize))
+instance (Classes.Marshal s HoldsText) where
+    marshalInto raw_ value_ = case value_ of
+        HoldsText{..} ->
+            (do
+                ((Classes.cerialize (Untyped.message raw_) txt) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_HoldsText'txt raw_))
+                ((Classes.cerialize (Untyped.message raw_) lst) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_HoldsText'lst raw_))
+                ((Classes.cerialize (Untyped.message raw_) lstlst) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_HoldsText'lstlst raw_))
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s HoldsText)
+instance (Classes.Cerialize s (V.Vector HoldsText)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector HoldsText))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector HoldsText)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector HoldsText))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector HoldsText)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector HoldsText))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector HoldsText)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data WrapEmpty 
+    = WrapEmpty 
+        {mightNotBeReallyEmpty :: VerEmpty}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default WrapEmpty) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const WrapEmpty) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize WrapEmpty) where
+    type Cerial msg WrapEmpty = (Capnp.Gen.ById.X832bcc6686a26d56.WrapEmpty msg)
+    decerialize raw = (WrapEmpty <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_WrapEmpty'mightNotBeReallyEmpty raw) >>= Classes.decerialize))
+instance (Classes.Marshal s WrapEmpty) where
+    marshalInto raw_ value_ = case value_ of
+        WrapEmpty{..} ->
+            (do
+                ((Classes.cerialize (Untyped.message raw_) mightNotBeReallyEmpty) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_WrapEmpty'mightNotBeReallyEmpty raw_))
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s WrapEmpty)
+instance (Classes.Cerialize s (V.Vector WrapEmpty)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector WrapEmpty))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector WrapEmpty)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector WrapEmpty))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector WrapEmpty)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector WrapEmpty))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector WrapEmpty)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data Wrap2x2 
+    = Wrap2x2 
+        {mightNotBeReallyEmpty :: VerTwoDataTwoPtr}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default Wrap2x2) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const Wrap2x2) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize Wrap2x2) where
+    type Cerial msg Wrap2x2 = (Capnp.Gen.ById.X832bcc6686a26d56.Wrap2x2 msg)
+    decerialize raw = (Wrap2x2 <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_Wrap2x2'mightNotBeReallyEmpty raw) >>= Classes.decerialize))
+instance (Classes.Marshal s Wrap2x2) where
+    marshalInto raw_ value_ = case value_ of
+        Wrap2x2{..} ->
+            (do
+                ((Classes.cerialize (Untyped.message raw_) mightNotBeReallyEmpty) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Wrap2x2'mightNotBeReallyEmpty raw_))
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s Wrap2x2)
+instance (Classes.Cerialize s (V.Vector Wrap2x2)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector Wrap2x2))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Wrap2x2)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Wrap2x2))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Wrap2x2)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Wrap2x2))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Wrap2x2)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data Wrap2x2plus 
+    = Wrap2x2plus 
+        {mightNotBeReallyEmpty :: VerTwoTwoPlus}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default Wrap2x2plus) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const Wrap2x2plus) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize Wrap2x2plus) where
+    type Cerial msg Wrap2x2plus = (Capnp.Gen.ById.X832bcc6686a26d56.Wrap2x2plus msg)
+    decerialize raw = (Wrap2x2plus <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_Wrap2x2plus'mightNotBeReallyEmpty raw) >>= Classes.decerialize))
+instance (Classes.Marshal s Wrap2x2plus) where
+    marshalInto raw_ value_ = case value_ of
+        Wrap2x2plus{..} ->
+            (do
+                ((Classes.cerialize (Untyped.message raw_) mightNotBeReallyEmpty) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Wrap2x2plus'mightNotBeReallyEmpty raw_))
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s Wrap2x2plus)
+instance (Classes.Cerialize s (V.Vector Wrap2x2plus)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector Wrap2x2plus))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Wrap2x2plus)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Wrap2x2plus))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Wrap2x2plus)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Wrap2x2plus))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Wrap2x2plus)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data VoidUnion 
+    = VoidUnion'a 
+    | VoidUnion'b 
+    | VoidUnion'unknown' Std_.Word16
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default VoidUnion) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const VoidUnion) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize VoidUnion) where
+    type Cerial msg VoidUnion = (Capnp.Gen.ById.X832bcc6686a26d56.VoidUnion msg)
+    decerialize raw = (do
+        raw <- (Capnp.Gen.ById.X832bcc6686a26d56.get_VoidUnion' raw)
+        case raw of
+            (Capnp.Gen.ById.X832bcc6686a26d56.VoidUnion'a) ->
+                (Std_.pure VoidUnion'a)
+            (Capnp.Gen.ById.X832bcc6686a26d56.VoidUnion'b) ->
+                (Std_.pure VoidUnion'b)
+            (Capnp.Gen.ById.X832bcc6686a26d56.VoidUnion'unknown' tag) ->
+                (Std_.pure (VoidUnion'unknown' tag))
+        )
+instance (Classes.Marshal s VoidUnion) where
+    marshalInto raw_ value_ = case value_ of
+        (VoidUnion'a) ->
+            (Capnp.Gen.ById.X832bcc6686a26d56.set_VoidUnion'a raw_)
+        (VoidUnion'b) ->
+            (Capnp.Gen.ById.X832bcc6686a26d56.set_VoidUnion'b raw_)
+        (VoidUnion'unknown' tag) ->
+            (Capnp.Gen.ById.X832bcc6686a26d56.set_VoidUnion'unknown' raw_ tag)
+instance (Classes.Cerialize s VoidUnion)
+instance (Classes.Cerialize s (V.Vector VoidUnion)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector VoidUnion))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector VoidUnion)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector VoidUnion))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector VoidUnion)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector VoidUnion))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector VoidUnion)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data Nester1Capn 
+    = Nester1Capn 
+        {strs :: (V.Vector T.Text)}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default Nester1Capn) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const Nester1Capn) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize Nester1Capn) where
+    type Cerial msg Nester1Capn = (Capnp.Gen.ById.X832bcc6686a26d56.Nester1Capn msg)
+    decerialize raw = (Nester1Capn <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_Nester1Capn'strs raw) >>= Classes.decerialize))
+instance (Classes.Marshal s Nester1Capn) where
+    marshalInto raw_ value_ = case value_ of
+        Nester1Capn{..} ->
+            (do
+                ((Classes.cerialize (Untyped.message raw_) strs) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Nester1Capn'strs raw_))
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s Nester1Capn)
+instance (Classes.Cerialize s (V.Vector Nester1Capn)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector Nester1Capn))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Nester1Capn)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Nester1Capn))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Nester1Capn)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Nester1Capn))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Nester1Capn)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data RWTestCapn 
+    = RWTestCapn 
+        {nestMatrix :: (V.Vector (V.Vector Nester1Capn))}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default RWTestCapn) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const RWTestCapn) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize RWTestCapn) where
+    type Cerial msg RWTestCapn = (Capnp.Gen.ById.X832bcc6686a26d56.RWTestCapn msg)
+    decerialize raw = (RWTestCapn <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_RWTestCapn'nestMatrix raw) >>= Classes.decerialize))
+instance (Classes.Marshal s RWTestCapn) where
+    marshalInto raw_ value_ = case value_ of
+        RWTestCapn{..} ->
+            (do
+                ((Classes.cerialize (Untyped.message raw_) nestMatrix) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_RWTestCapn'nestMatrix raw_))
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s RWTestCapn)
+instance (Classes.Cerialize s (V.Vector RWTestCapn)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector RWTestCapn))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector RWTestCapn)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector RWTestCapn))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector RWTestCapn)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector RWTestCapn))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector RWTestCapn)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data ListStructCapn 
+    = ListStructCapn 
+        {vec :: (V.Vector Nester1Capn)}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default ListStructCapn) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const ListStructCapn) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize ListStructCapn) where
+    type Cerial msg ListStructCapn = (Capnp.Gen.ById.X832bcc6686a26d56.ListStructCapn msg)
+    decerialize raw = (ListStructCapn <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_ListStructCapn'vec raw) >>= Classes.decerialize))
+instance (Classes.Marshal s ListStructCapn) where
+    marshalInto raw_ value_ = case value_ of
+        ListStructCapn{..} ->
+            (do
+                ((Classes.cerialize (Untyped.message raw_) vec) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_ListStructCapn'vec raw_))
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s ListStructCapn)
+instance (Classes.Cerialize s (V.Vector ListStructCapn)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector ListStructCapn))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector ListStructCapn)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector ListStructCapn))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector ListStructCapn)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector ListStructCapn))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector ListStructCapn)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+newtype Echo 
+    = Echo Message.Client
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+class ((MonadIO.MonadIO m)
+      ,(Server.Server m cap)) => (Echo'server_ m cap) where
+    {-# MINIMAL echo'echo #-}
+    echo'echo :: cap -> (Server.MethodHandler m Echo'echo'params Echo'echo'results)
+    echo'echo _ = Server.methodUnimplemented
+export_Echo :: ((STM.MonadSTM m)
+               ,(Echo'server_ Std_.IO cap)) => Supervisors.Supervisor -> cap -> (m Echo)
+export_Echo sup_ server_ = (STM.liftSTM (Echo <$> (Rpc.export sup_ Server.ServerOps{handleCast = (Server.unwrap server_)
+                                                                                   ,handleStop = (Server.shutdown server_)
+                                                                                   ,handleCall = (\interfaceId_ methodId_ -> case interfaceId_ of
+                                                                                       10255578992688506164 ->
+                                                                                           case methodId_ of
+                                                                                               0 ->
+                                                                                                   (Server.toUntypedHandler (echo'echo server_))
+                                                                                               _ ->
+                                                                                                   Server.methodUnimplemented
+                                                                                       _ ->
+                                                                                           Server.methodUnimplemented)})))
+instance (Rpc.IsClient Echo) where
+    fromClient  = Echo
+    toClient (Echo client) = client
+instance (Classes.FromPtr msg Echo) where
+    fromPtr  = RpcHelpers.isClientFromPtr
+instance (Classes.ToPtr s Echo) where
+    toPtr  = RpcHelpers.isClientToPtr
+instance (Classes.Decerialize Echo) where
+    type Cerial msg Echo = (Capnp.Gen.ById.X832bcc6686a26d56.Echo msg)
+    decerialize (Capnp.Gen.ById.X832bcc6686a26d56.Echo'newtype_ maybeCap) = case maybeCap of
+        (Std_.Nothing) ->
+            (Std_.pure (Echo Message.nullClient))
+        (Std_.Just cap) ->
+            (Echo <$> (Untyped.getClient cap))
+instance (Classes.Cerialize s Echo) where
+    cerialize msg (Echo client) = (Capnp.Gen.ById.X832bcc6686a26d56.Echo'newtype_ <$> (Std_.Just <$> (Untyped.appendCap msg client)))
+instance (Server.Server Std_.IO Echo)
+instance (Echo'server_ Std_.IO Echo) where
+    echo'echo (Echo client) = (Rpc.clientMethodHandler 10255578992688506164 0 client)
+data Echo'echo'params 
+    = Echo'echo'params 
+        {in_ :: T.Text}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default Echo'echo'params) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const Echo'echo'params) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize Echo'echo'params) where
+    type Cerial msg Echo'echo'params = (Capnp.Gen.ById.X832bcc6686a26d56.Echo'echo'params msg)
+    decerialize raw = (Echo'echo'params <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_Echo'echo'params'in_ raw) >>= Classes.decerialize))
+instance (Classes.Marshal s Echo'echo'params) where
+    marshalInto raw_ value_ = case value_ of
+        Echo'echo'params{..} ->
+            (do
+                ((Classes.cerialize (Untyped.message raw_) in_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Echo'echo'params'in_ raw_))
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s Echo'echo'params)
+instance (Classes.Cerialize s (V.Vector Echo'echo'params)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector Echo'echo'params))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Echo'echo'params)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Echo'echo'params))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Echo'echo'params)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Echo'echo'params))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Echo'echo'params)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data Echo'echo'results 
+    = Echo'echo'results 
+        {out :: T.Text}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default Echo'echo'results) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const Echo'echo'results) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize Echo'echo'results) where
+    type Cerial msg Echo'echo'results = (Capnp.Gen.ById.X832bcc6686a26d56.Echo'echo'results msg)
+    decerialize raw = (Echo'echo'results <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_Echo'echo'results'out raw) >>= Classes.decerialize))
+instance (Classes.Marshal s Echo'echo'results) where
+    marshalInto raw_ value_ = case value_ of
+        Echo'echo'results{..} ->
+            (do
+                ((Classes.cerialize (Untyped.message raw_) out) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Echo'echo'results'out raw_))
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s Echo'echo'results)
+instance (Classes.Cerialize s (V.Vector Echo'echo'results)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector Echo'echo'results))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Echo'echo'results)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Echo'echo'results))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Echo'echo'results)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Echo'echo'results))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Echo'echo'results)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data Hoth 
+    = Hoth 
+        {base :: EchoBase}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default Hoth) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const Hoth) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize Hoth) where
+    type Cerial msg Hoth = (Capnp.Gen.ById.X832bcc6686a26d56.Hoth msg)
+    decerialize raw = (Hoth <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_Hoth'base raw) >>= Classes.decerialize))
+instance (Classes.Marshal s Hoth) where
+    marshalInto raw_ value_ = case value_ of
+        Hoth{..} ->
+            (do
+                ((Classes.cerialize (Untyped.message raw_) base) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Hoth'base raw_))
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s Hoth)
+instance (Classes.Cerialize s (V.Vector Hoth)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector Hoth))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Hoth)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Hoth))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Hoth)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Hoth))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Hoth)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data EchoBase 
+    = EchoBase 
+        {echo :: Echo}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default EchoBase) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const EchoBase) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize EchoBase) where
+    type Cerial msg EchoBase = (Capnp.Gen.ById.X832bcc6686a26d56.EchoBase msg)
+    decerialize raw = (EchoBase <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_EchoBase'echo raw) >>= Classes.decerialize))
+instance (Classes.Marshal s EchoBase) where
+    marshalInto raw_ value_ = case value_ of
+        EchoBase{..} ->
+            (do
+                ((Classes.cerialize (Untyped.message raw_) echo) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_EchoBase'echo raw_))
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s EchoBase)
+instance (Classes.Cerialize s (V.Vector EchoBase)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector EchoBase))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector EchoBase)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector EchoBase))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector EchoBase)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector EchoBase))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector EchoBase)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data EchoBases 
+    = EchoBases 
+        {bases :: (V.Vector EchoBase)}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default EchoBases) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const EchoBases) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize EchoBases) where
+    type Cerial msg EchoBases = (Capnp.Gen.ById.X832bcc6686a26d56.EchoBases msg)
+    decerialize raw = (EchoBases <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_EchoBases'bases raw) >>= Classes.decerialize))
+instance (Classes.Marshal s EchoBases) where
+    marshalInto raw_ value_ = case value_ of
+        EchoBases{..} ->
+            (do
+                ((Classes.cerialize (Untyped.message raw_) bases) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_EchoBases'bases raw_))
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s EchoBases)
+instance (Classes.Cerialize s (V.Vector EchoBases)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector EchoBases))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector EchoBases)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector EchoBases))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector EchoBases)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector EchoBases))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector EchoBases)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data StackingRoot 
+    = StackingRoot 
+        {aWithDefault :: StackingA
+        ,a :: StackingA}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default StackingRoot) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const StackingRoot) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize StackingRoot) where
+    type Cerial msg StackingRoot = (Capnp.Gen.ById.X832bcc6686a26d56.StackingRoot msg)
+    decerialize raw = (StackingRoot <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_StackingRoot'aWithDefault raw) >>= Classes.decerialize)
+                                    <*> ((Capnp.Gen.ById.X832bcc6686a26d56.get_StackingRoot'a raw) >>= Classes.decerialize))
+instance (Classes.Marshal s StackingRoot) where
+    marshalInto raw_ value_ = case value_ of
+        StackingRoot{..} ->
+            (do
+                ((Classes.cerialize (Untyped.message raw_) aWithDefault) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_StackingRoot'aWithDefault raw_))
+                ((Classes.cerialize (Untyped.message raw_) a) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_StackingRoot'a raw_))
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s StackingRoot)
+instance (Classes.Cerialize s (V.Vector StackingRoot)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector StackingRoot))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector StackingRoot)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector StackingRoot))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector StackingRoot)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector StackingRoot))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector StackingRoot)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data StackingA 
+    = StackingA 
+        {num :: Std_.Int32
+        ,b :: StackingB}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default StackingA) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const StackingA) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize StackingA) where
+    type Cerial msg StackingA = (Capnp.Gen.ById.X832bcc6686a26d56.StackingA msg)
+    decerialize raw = (StackingA <$> (Capnp.Gen.ById.X832bcc6686a26d56.get_StackingA'num raw)
+                                 <*> ((Capnp.Gen.ById.X832bcc6686a26d56.get_StackingA'b raw) >>= Classes.decerialize))
+instance (Classes.Marshal s StackingA) where
+    marshalInto raw_ value_ = case value_ of
+        StackingA{..} ->
+            (do
+                (Capnp.Gen.ById.X832bcc6686a26d56.set_StackingA'num raw_ num)
+                ((Classes.cerialize (Untyped.message raw_) b) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_StackingA'b raw_))
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s StackingA)
+instance (Classes.Cerialize s (V.Vector StackingA)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector StackingA))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector StackingA)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector StackingA))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector StackingA)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector StackingA))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector StackingA)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data StackingB 
+    = StackingB 
+        {num :: Std_.Int32}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default StackingB) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const StackingB) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize StackingB) where
+    type Cerial msg StackingB = (Capnp.Gen.ById.X832bcc6686a26d56.StackingB msg)
+    decerialize raw = (StackingB <$> (Capnp.Gen.ById.X832bcc6686a26d56.get_StackingB'num raw))
+instance (Classes.Marshal s StackingB) where
+    marshalInto raw_ value_ = case value_ of
+        StackingB{..} ->
+            (do
+                (Capnp.Gen.ById.X832bcc6686a26d56.set_StackingB'num raw_ num)
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s StackingB)
+instance (Classes.Cerialize s (V.Vector StackingB)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector StackingB))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector StackingB)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector StackingB))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector StackingB)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector StackingB))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector StackingB)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+newtype CallSequence 
+    = CallSequence Message.Client
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+class ((MonadIO.MonadIO m)
+      ,(Server.Server m cap)) => (CallSequence'server_ m cap) where
+    {-# MINIMAL callSequence'getNumber #-}
+    callSequence'getNumber :: cap -> (Server.MethodHandler m CallSequence'getNumber'params CallSequence'getNumber'results)
+    callSequence'getNumber _ = Server.methodUnimplemented
+export_CallSequence :: ((STM.MonadSTM m)
+                       ,(CallSequence'server_ Std_.IO cap)) => Supervisors.Supervisor -> cap -> (m CallSequence)
+export_CallSequence sup_ server_ = (STM.liftSTM (CallSequence <$> (Rpc.export sup_ Server.ServerOps{handleCast = (Server.unwrap server_)
+                                                                                                   ,handleStop = (Server.shutdown server_)
+                                                                                                   ,handleCall = (\interfaceId_ methodId_ -> case interfaceId_ of
+                                                                                                       12371070827563042848 ->
+                                                                                                           case methodId_ of
+                                                                                                               0 ->
+                                                                                                                   (Server.toUntypedHandler (callSequence'getNumber server_))
+                                                                                                               _ ->
+                                                                                                                   Server.methodUnimplemented
+                                                                                                       _ ->
+                                                                                                           Server.methodUnimplemented)})))
+instance (Rpc.IsClient CallSequence) where
+    fromClient  = CallSequence
+    toClient (CallSequence client) = client
+instance (Classes.FromPtr msg CallSequence) where
+    fromPtr  = RpcHelpers.isClientFromPtr
+instance (Classes.ToPtr s CallSequence) where
+    toPtr  = RpcHelpers.isClientToPtr
+instance (Classes.Decerialize CallSequence) where
+    type Cerial msg CallSequence = (Capnp.Gen.ById.X832bcc6686a26d56.CallSequence msg)
+    decerialize (Capnp.Gen.ById.X832bcc6686a26d56.CallSequence'newtype_ maybeCap) = case maybeCap of
+        (Std_.Nothing) ->
+            (Std_.pure (CallSequence Message.nullClient))
+        (Std_.Just cap) ->
+            (CallSequence <$> (Untyped.getClient cap))
+instance (Classes.Cerialize s CallSequence) where
+    cerialize msg (CallSequence client) = (Capnp.Gen.ById.X832bcc6686a26d56.CallSequence'newtype_ <$> (Std_.Just <$> (Untyped.appendCap msg client)))
+instance (Server.Server Std_.IO CallSequence)
+instance (CallSequence'server_ Std_.IO CallSequence) where
+    callSequence'getNumber (CallSequence client) = (Rpc.clientMethodHandler 12371070827563042848 0 client)
+data CallSequence'getNumber'params 
+    = CallSequence'getNumber'params 
+        {}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default CallSequence'getNumber'params) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const CallSequence'getNumber'params) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize CallSequence'getNumber'params) where
+    type Cerial msg CallSequence'getNumber'params = (Capnp.Gen.ById.X832bcc6686a26d56.CallSequence'getNumber'params msg)
+    decerialize raw = (Std_.pure CallSequence'getNumber'params)
+instance (Classes.Marshal s CallSequence'getNumber'params) where
+    marshalInto raw_ value_ = case value_ of
+        (CallSequence'getNumber'params) ->
+            (do
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s CallSequence'getNumber'params)
+instance (Classes.Cerialize s (V.Vector CallSequence'getNumber'params)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector CallSequence'getNumber'params))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector CallSequence'getNumber'params)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector CallSequence'getNumber'params))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector CallSequence'getNumber'params)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector CallSequence'getNumber'params))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector CallSequence'getNumber'params)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data CallSequence'getNumber'results 
+    = CallSequence'getNumber'results 
+        {n :: Std_.Word32}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default CallSequence'getNumber'results) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const CallSequence'getNumber'results) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize CallSequence'getNumber'results) where
+    type Cerial msg CallSequence'getNumber'results = (Capnp.Gen.ById.X832bcc6686a26d56.CallSequence'getNumber'results msg)
+    decerialize raw = (CallSequence'getNumber'results <$> (Capnp.Gen.ById.X832bcc6686a26d56.get_CallSequence'getNumber'results'n raw))
+instance (Classes.Marshal s CallSequence'getNumber'results) where
+    marshalInto raw_ value_ = case value_ of
+        CallSequence'getNumber'results{..} ->
+            (do
+                (Capnp.Gen.ById.X832bcc6686a26d56.set_CallSequence'getNumber'results'n raw_ n)
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s CallSequence'getNumber'results)
+instance (Classes.Cerialize s (V.Vector CallSequence'getNumber'results)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector CallSequence'getNumber'results))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector CallSequence'getNumber'results)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector CallSequence'getNumber'results))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector CallSequence'getNumber'results)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector CallSequence'getNumber'results))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector CallSequence'getNumber'results)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+newtype CounterFactory 
+    = CounterFactory Message.Client
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+class ((MonadIO.MonadIO m)
+      ,(Server.Server m cap)) => (CounterFactory'server_ m cap) where
+    {-# MINIMAL counterFactory'newCounter #-}
+    counterFactory'newCounter :: cap -> (Server.MethodHandler m CounterFactory'newCounter'params CounterFactory'newCounter'results)
+    counterFactory'newCounter _ = Server.methodUnimplemented
+export_CounterFactory :: ((STM.MonadSTM m)
+                         ,(CounterFactory'server_ Std_.IO cap)) => Supervisors.Supervisor -> cap -> (m CounterFactory)
+export_CounterFactory sup_ server_ = (STM.liftSTM (CounterFactory <$> (Rpc.export sup_ Server.ServerOps{handleCast = (Server.unwrap server_)
+                                                                                                       ,handleStop = (Server.shutdown server_)
+                                                                                                       ,handleCall = (\interfaceId_ methodId_ -> case interfaceId_ of
+                                                                                                           15610220054254702620 ->
+                                                                                                               case methodId_ of
+                                                                                                                   0 ->
+                                                                                                                       (Server.toUntypedHandler (counterFactory'newCounter server_))
+                                                                                                                   _ ->
+                                                                                                                       Server.methodUnimplemented
+                                                                                                           _ ->
+                                                                                                               Server.methodUnimplemented)})))
+instance (Rpc.IsClient CounterFactory) where
+    fromClient  = CounterFactory
+    toClient (CounterFactory client) = client
+instance (Classes.FromPtr msg CounterFactory) where
+    fromPtr  = RpcHelpers.isClientFromPtr
+instance (Classes.ToPtr s CounterFactory) where
+    toPtr  = RpcHelpers.isClientToPtr
+instance (Classes.Decerialize CounterFactory) where
+    type Cerial msg CounterFactory = (Capnp.Gen.ById.X832bcc6686a26d56.CounterFactory msg)
+    decerialize (Capnp.Gen.ById.X832bcc6686a26d56.CounterFactory'newtype_ maybeCap) = case maybeCap of
+        (Std_.Nothing) ->
+            (Std_.pure (CounterFactory Message.nullClient))
+        (Std_.Just cap) ->
+            (CounterFactory <$> (Untyped.getClient cap))
+instance (Classes.Cerialize s CounterFactory) where
+    cerialize msg (CounterFactory client) = (Capnp.Gen.ById.X832bcc6686a26d56.CounterFactory'newtype_ <$> (Std_.Just <$> (Untyped.appendCap msg client)))
+instance (Server.Server Std_.IO CounterFactory)
+instance (CounterFactory'server_ Std_.IO CounterFactory) where
+    counterFactory'newCounter (CounterFactory client) = (Rpc.clientMethodHandler 15610220054254702620 0 client)
+data CounterFactory'newCounter'params 
+    = CounterFactory'newCounter'params 
+        {start :: Std_.Word32}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default CounterFactory'newCounter'params) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const CounterFactory'newCounter'params) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize CounterFactory'newCounter'params) where
+    type Cerial msg CounterFactory'newCounter'params = (Capnp.Gen.ById.X832bcc6686a26d56.CounterFactory'newCounter'params msg)
+    decerialize raw = (CounterFactory'newCounter'params <$> (Capnp.Gen.ById.X832bcc6686a26d56.get_CounterFactory'newCounter'params'start raw))
+instance (Classes.Marshal s CounterFactory'newCounter'params) where
+    marshalInto raw_ value_ = case value_ of
+        CounterFactory'newCounter'params{..} ->
+            (do
+                (Capnp.Gen.ById.X832bcc6686a26d56.set_CounterFactory'newCounter'params'start raw_ start)
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s CounterFactory'newCounter'params)
+instance (Classes.Cerialize s (V.Vector CounterFactory'newCounter'params)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector CounterFactory'newCounter'params))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector CounterFactory'newCounter'params)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector CounterFactory'newCounter'params))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector CounterFactory'newCounter'params)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector CounterFactory'newCounter'params))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector CounterFactory'newCounter'params)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data CounterFactory'newCounter'results 
+    = CounterFactory'newCounter'results 
+        {counter :: CallSequence}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default CounterFactory'newCounter'results) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const CounterFactory'newCounter'results) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize CounterFactory'newCounter'results) where
+    type Cerial msg CounterFactory'newCounter'results = (Capnp.Gen.ById.X832bcc6686a26d56.CounterFactory'newCounter'results msg)
+    decerialize raw = (CounterFactory'newCounter'results <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_CounterFactory'newCounter'results'counter raw) >>= Classes.decerialize))
+instance (Classes.Marshal s CounterFactory'newCounter'results) where
+    marshalInto raw_ value_ = case value_ of
+        CounterFactory'newCounter'results{..} ->
+            (do
+                ((Classes.cerialize (Untyped.message raw_) counter) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_CounterFactory'newCounter'results'counter raw_))
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s CounterFactory'newCounter'results)
+instance (Classes.Cerialize s (V.Vector CounterFactory'newCounter'results)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector CounterFactory'newCounter'results))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector CounterFactory'newCounter'results)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector CounterFactory'newCounter'results))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector CounterFactory'newCounter'results)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector CounterFactory'newCounter'results))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector CounterFactory'newCounter'results)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+newtype CounterAcceptor 
+    = CounterAcceptor Message.Client
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+class ((MonadIO.MonadIO m)
+      ,(Server.Server m cap)) => (CounterAcceptor'server_ m cap) where
+    {-# MINIMAL counterAcceptor'accept #-}
+    counterAcceptor'accept :: cap -> (Server.MethodHandler m CounterAcceptor'accept'params CounterAcceptor'accept'results)
+    counterAcceptor'accept _ = Server.methodUnimplemented
+export_CounterAcceptor :: ((STM.MonadSTM m)
+                          ,(CounterAcceptor'server_ Std_.IO cap)) => Supervisors.Supervisor -> cap -> (m CounterAcceptor)
+export_CounterAcceptor sup_ server_ = (STM.liftSTM (CounterAcceptor <$> (Rpc.export sup_ Server.ServerOps{handleCast = (Server.unwrap server_)
+                                                                                                         ,handleStop = (Server.shutdown server_)
+                                                                                                         ,handleCall = (\interfaceId_ methodId_ -> case interfaceId_ of
+                                                                                                             14317498215560924065 ->
+                                                                                                                 case methodId_ of
+                                                                                                                     0 ->
+                                                                                                                         (Server.toUntypedHandler (counterAcceptor'accept server_))
+                                                                                                                     _ ->
+                                                                                                                         Server.methodUnimplemented
+                                                                                                             _ ->
+                                                                                                                 Server.methodUnimplemented)})))
+instance (Rpc.IsClient CounterAcceptor) where
+    fromClient  = CounterAcceptor
+    toClient (CounterAcceptor client) = client
+instance (Classes.FromPtr msg CounterAcceptor) where
+    fromPtr  = RpcHelpers.isClientFromPtr
+instance (Classes.ToPtr s CounterAcceptor) where
+    toPtr  = RpcHelpers.isClientToPtr
+instance (Classes.Decerialize CounterAcceptor) where
+    type Cerial msg CounterAcceptor = (Capnp.Gen.ById.X832bcc6686a26d56.CounterAcceptor msg)
+    decerialize (Capnp.Gen.ById.X832bcc6686a26d56.CounterAcceptor'newtype_ maybeCap) = case maybeCap of
+        (Std_.Nothing) ->
+            (Std_.pure (CounterAcceptor Message.nullClient))
+        (Std_.Just cap) ->
+            (CounterAcceptor <$> (Untyped.getClient cap))
+instance (Classes.Cerialize s CounterAcceptor) where
+    cerialize msg (CounterAcceptor client) = (Capnp.Gen.ById.X832bcc6686a26d56.CounterAcceptor'newtype_ <$> (Std_.Just <$> (Untyped.appendCap msg client)))
+instance (Server.Server Std_.IO CounterAcceptor)
+instance (CounterAcceptor'server_ Std_.IO CounterAcceptor) where
+    counterAcceptor'accept (CounterAcceptor client) = (Rpc.clientMethodHandler 14317498215560924065 0 client)
+data CounterAcceptor'accept'params 
+    = CounterAcceptor'accept'params 
+        {counter :: CallSequence}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default CounterAcceptor'accept'params) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const CounterAcceptor'accept'params) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize CounterAcceptor'accept'params) where
+    type Cerial msg CounterAcceptor'accept'params = (Capnp.Gen.ById.X832bcc6686a26d56.CounterAcceptor'accept'params msg)
+    decerialize raw = (CounterAcceptor'accept'params <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_CounterAcceptor'accept'params'counter raw) >>= Classes.decerialize))
+instance (Classes.Marshal s CounterAcceptor'accept'params) where
+    marshalInto raw_ value_ = case value_ of
+        CounterAcceptor'accept'params{..} ->
+            (do
+                ((Classes.cerialize (Untyped.message raw_) counter) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_CounterAcceptor'accept'params'counter raw_))
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s CounterAcceptor'accept'params)
+instance (Classes.Cerialize s (V.Vector CounterAcceptor'accept'params)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector CounterAcceptor'accept'params))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector CounterAcceptor'accept'params)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector CounterAcceptor'accept'params))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector CounterAcceptor'accept'params)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector CounterAcceptor'accept'params))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector CounterAcceptor'accept'params)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data CounterAcceptor'accept'results 
+    = CounterAcceptor'accept'results 
+        {}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default CounterAcceptor'accept'results) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const CounterAcceptor'accept'results) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize CounterAcceptor'accept'results) where
+    type Cerial msg CounterAcceptor'accept'results = (Capnp.Gen.ById.X832bcc6686a26d56.CounterAcceptor'accept'results msg)
+    decerialize raw = (Std_.pure CounterAcceptor'accept'results)
+instance (Classes.Marshal s CounterAcceptor'accept'results) where
+    marshalInto raw_ value_ = case value_ of
+        (CounterAcceptor'accept'results) ->
+            (do
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s CounterAcceptor'accept'results)
+instance (Classes.Cerialize s (V.Vector CounterAcceptor'accept'results)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector CounterAcceptor'accept'results))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector CounterAcceptor'accept'results)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector CounterAcceptor'accept'results))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector CounterAcceptor'accept'results)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector CounterAcceptor'accept'results))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector CounterAcceptor'accept'results)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+newtype Top 
+    = Top Message.Client
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+class ((MonadIO.MonadIO m)
+      ,(Server.Server m cap)) => (Top'server_ m cap) where
+    {-# MINIMAL top'top #-}
+    top'top :: cap -> (Server.MethodHandler m Top'top'params Top'top'results)
+    top'top _ = Server.methodUnimplemented
+export_Top :: ((STM.MonadSTM m)
+              ,(Top'server_ Std_.IO cap)) => Supervisors.Supervisor -> cap -> (m Top)
+export_Top sup_ server_ = (STM.liftSTM (Top <$> (Rpc.export sup_ Server.ServerOps{handleCast = (Server.unwrap server_)
+                                                                                 ,handleStop = (Server.shutdown server_)
+                                                                                 ,handleCall = (\interfaceId_ methodId_ -> case interfaceId_ of
+                                                                                     17861645508359101525 ->
+                                                                                         case methodId_ of
+                                                                                             0 ->
+                                                                                                 (Server.toUntypedHandler (top'top server_))
+                                                                                             _ ->
+                                                                                                 Server.methodUnimplemented
+                                                                                     _ ->
+                                                                                         Server.methodUnimplemented)})))
+instance (Rpc.IsClient Top) where
+    fromClient  = Top
+    toClient (Top client) = client
+instance (Classes.FromPtr msg Top) where
+    fromPtr  = RpcHelpers.isClientFromPtr
+instance (Classes.ToPtr s Top) where
+    toPtr  = RpcHelpers.isClientToPtr
+instance (Classes.Decerialize Top) where
+    type Cerial msg Top = (Capnp.Gen.ById.X832bcc6686a26d56.Top msg)
+    decerialize (Capnp.Gen.ById.X832bcc6686a26d56.Top'newtype_ maybeCap) = case maybeCap of
+        (Std_.Nothing) ->
+            (Std_.pure (Top Message.nullClient))
+        (Std_.Just cap) ->
+            (Top <$> (Untyped.getClient cap))
+instance (Classes.Cerialize s Top) where
+    cerialize msg (Top client) = (Capnp.Gen.ById.X832bcc6686a26d56.Top'newtype_ <$> (Std_.Just <$> (Untyped.appendCap msg client)))
+instance (Server.Server Std_.IO Top)
+instance (Top'server_ Std_.IO Top) where
+    top'top (Top client) = (Rpc.clientMethodHandler 17861645508359101525 0 client)
+data Top'top'params 
+    = Top'top'params 
+        {}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default Top'top'params) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const Top'top'params) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize Top'top'params) where
+    type Cerial msg Top'top'params = (Capnp.Gen.ById.X832bcc6686a26d56.Top'top'params msg)
+    decerialize raw = (Std_.pure Top'top'params)
+instance (Classes.Marshal s Top'top'params) where
+    marshalInto raw_ value_ = case value_ of
+        (Top'top'params) ->
+            (do
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s Top'top'params)
+instance (Classes.Cerialize s (V.Vector Top'top'params)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector Top'top'params))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Top'top'params)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Top'top'params))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Top'top'params)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Top'top'params))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Top'top'params)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data Top'top'results 
+    = Top'top'results 
+        {}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default Top'top'results) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const Top'top'results) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize Top'top'results) where
+    type Cerial msg Top'top'results = (Capnp.Gen.ById.X832bcc6686a26d56.Top'top'results msg)
+    decerialize raw = (Std_.pure Top'top'results)
+instance (Classes.Marshal s Top'top'results) where
+    marshalInto raw_ value_ = case value_ of
+        (Top'top'results) ->
+            (do
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s Top'top'results)
+instance (Classes.Cerialize s (V.Vector Top'top'results)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector Top'top'results))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Top'top'results)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Top'top'results))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Top'top'results)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Top'top'results))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Top'top'results)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+newtype Left 
+    = Left Message.Client
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+class ((MonadIO.MonadIO m)
+      ,(Top'server_ m cap)) => (Left'server_ m cap) where
+    {-# MINIMAL left'left #-}
+    left'left :: cap -> (Server.MethodHandler m Left'left'params Left'left'results)
+    left'left _ = Server.methodUnimplemented
+export_Left :: ((STM.MonadSTM m)
+               ,(Left'server_ Std_.IO cap)) => Supervisors.Supervisor -> cap -> (m Left)
+export_Left sup_ server_ = (STM.liftSTM (Left <$> (Rpc.export sup_ Server.ServerOps{handleCast = (Server.unwrap server_)
+                                                                                   ,handleStop = (Server.shutdown server_)
+                                                                                   ,handleCall = (\interfaceId_ methodId_ -> case interfaceId_ of
+                                                                                       17679152961798450446 ->
+                                                                                           case methodId_ of
+                                                                                               0 ->
+                                                                                                   (Server.toUntypedHandler (left'left server_))
+                                                                                               _ ->
+                                                                                                   Server.methodUnimplemented
+                                                                                       17861645508359101525 ->
+                                                                                           case methodId_ of
+                                                                                               0 ->
+                                                                                                   (Server.toUntypedHandler (top'top server_))
+                                                                                               _ ->
+                                                                                                   Server.methodUnimplemented
+                                                                                       _ ->
+                                                                                           Server.methodUnimplemented)})))
+instance (Rpc.IsClient Left) where
+    fromClient  = Left
+    toClient (Left client) = client
+instance (Classes.FromPtr msg Left) where
+    fromPtr  = RpcHelpers.isClientFromPtr
+instance (Classes.ToPtr s Left) where
+    toPtr  = RpcHelpers.isClientToPtr
+instance (Classes.Decerialize Left) where
+    type Cerial msg Left = (Capnp.Gen.ById.X832bcc6686a26d56.Left msg)
+    decerialize (Capnp.Gen.ById.X832bcc6686a26d56.Left'newtype_ maybeCap) = case maybeCap of
+        (Std_.Nothing) ->
+            (Std_.pure (Left Message.nullClient))
+        (Std_.Just cap) ->
+            (Left <$> (Untyped.getClient cap))
+instance (Classes.Cerialize s Left) where
+    cerialize msg (Left client) = (Capnp.Gen.ById.X832bcc6686a26d56.Left'newtype_ <$> (Std_.Just <$> (Untyped.appendCap msg client)))
+instance (Server.Server Std_.IO Left)
+instance (Left'server_ Std_.IO Left) where
+    left'left (Left client) = (Rpc.clientMethodHandler 17679152961798450446 0 client)
+instance (Top'server_ Std_.IO Left) where
+    top'top (Left client) = (Rpc.clientMethodHandler 17861645508359101525 0 client)
+data Left'left'params 
+    = Left'left'params 
+        {}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default Left'left'params) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const Left'left'params) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize Left'left'params) where
+    type Cerial msg Left'left'params = (Capnp.Gen.ById.X832bcc6686a26d56.Left'left'params msg)
+    decerialize raw = (Std_.pure Left'left'params)
+instance (Classes.Marshal s Left'left'params) where
+    marshalInto raw_ value_ = case value_ of
+        (Left'left'params) ->
+            (do
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s Left'left'params)
+instance (Classes.Cerialize s (V.Vector Left'left'params)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector Left'left'params))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Left'left'params)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Left'left'params))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Left'left'params)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Left'left'params))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Left'left'params)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data Left'left'results 
+    = Left'left'results 
+        {}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default Left'left'results) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const Left'left'results) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize Left'left'results) where
+    type Cerial msg Left'left'results = (Capnp.Gen.ById.X832bcc6686a26d56.Left'left'results msg)
+    decerialize raw = (Std_.pure Left'left'results)
+instance (Classes.Marshal s Left'left'results) where
+    marshalInto raw_ value_ = case value_ of
+        (Left'left'results) ->
+            (do
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s Left'left'results)
+instance (Classes.Cerialize s (V.Vector Left'left'results)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector Left'left'results))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Left'left'results)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Left'left'results))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Left'left'results)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Left'left'results))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Left'left'results)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+newtype Right 
+    = Right Message.Client
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+class ((MonadIO.MonadIO m)
+      ,(Top'server_ m cap)) => (Right'server_ m cap) where
+    {-# MINIMAL right'right #-}
+    right'right :: cap -> (Server.MethodHandler m Right'right'params Right'right'results)
+    right'right _ = Server.methodUnimplemented
+export_Right :: ((STM.MonadSTM m)
+                ,(Right'server_ Std_.IO cap)) => Supervisors.Supervisor -> cap -> (m Right)
+export_Right sup_ server_ = (STM.liftSTM (Right <$> (Rpc.export sup_ Server.ServerOps{handleCast = (Server.unwrap server_)
+                                                                                     ,handleStop = (Server.shutdown server_)
+                                                                                     ,handleCall = (\interfaceId_ methodId_ -> case interfaceId_ of
+                                                                                         14712639595305348988 ->
+                                                                                             case methodId_ of
+                                                                                                 0 ->
+                                                                                                     (Server.toUntypedHandler (right'right server_))
+                                                                                                 _ ->
+                                                                                                     Server.methodUnimplemented
+                                                                                         17861645508359101525 ->
+                                                                                             case methodId_ of
+                                                                                                 0 ->
+                                                                                                     (Server.toUntypedHandler (top'top server_))
+                                                                                                 _ ->
+                                                                                                     Server.methodUnimplemented
+                                                                                         _ ->
+                                                                                             Server.methodUnimplemented)})))
+instance (Rpc.IsClient Right) where
+    fromClient  = Right
+    toClient (Right client) = client
+instance (Classes.FromPtr msg Right) where
+    fromPtr  = RpcHelpers.isClientFromPtr
+instance (Classes.ToPtr s Right) where
+    toPtr  = RpcHelpers.isClientToPtr
+instance (Classes.Decerialize Right) where
+    type Cerial msg Right = (Capnp.Gen.ById.X832bcc6686a26d56.Right msg)
+    decerialize (Capnp.Gen.ById.X832bcc6686a26d56.Right'newtype_ maybeCap) = case maybeCap of
+        (Std_.Nothing) ->
+            (Std_.pure (Right Message.nullClient))
+        (Std_.Just cap) ->
+            (Right <$> (Untyped.getClient cap))
+instance (Classes.Cerialize s Right) where
+    cerialize msg (Right client) = (Capnp.Gen.ById.X832bcc6686a26d56.Right'newtype_ <$> (Std_.Just <$> (Untyped.appendCap msg client)))
+instance (Server.Server Std_.IO Right)
+instance (Right'server_ Std_.IO Right) where
+    right'right (Right client) = (Rpc.clientMethodHandler 14712639595305348988 0 client)
+instance (Top'server_ Std_.IO Right) where
+    top'top (Right client) = (Rpc.clientMethodHandler 17861645508359101525 0 client)
+data Right'right'params 
+    = Right'right'params 
+        {}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default Right'right'params) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const Right'right'params) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize Right'right'params) where
+    type Cerial msg Right'right'params = (Capnp.Gen.ById.X832bcc6686a26d56.Right'right'params msg)
+    decerialize raw = (Std_.pure Right'right'params)
+instance (Classes.Marshal s Right'right'params) where
+    marshalInto raw_ value_ = case value_ of
+        (Right'right'params) ->
+            (do
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s Right'right'params)
+instance (Classes.Cerialize s (V.Vector Right'right'params)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector Right'right'params))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Right'right'params)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Right'right'params))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Right'right'params)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Right'right'params))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Right'right'params)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data Right'right'results 
+    = Right'right'results 
+        {}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default Right'right'results) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const Right'right'results) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize Right'right'results) where
+    type Cerial msg Right'right'results = (Capnp.Gen.ById.X832bcc6686a26d56.Right'right'results msg)
+    decerialize raw = (Std_.pure Right'right'results)
+instance (Classes.Marshal s Right'right'results) where
+    marshalInto raw_ value_ = case value_ of
+        (Right'right'results) ->
+            (do
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s Right'right'results)
+instance (Classes.Cerialize s (V.Vector Right'right'results)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector Right'right'results))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Right'right'results)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Right'right'results))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Right'right'results)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Right'right'results))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Right'right'results)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+newtype Bottom 
+    = Bottom Message.Client
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+class ((MonadIO.MonadIO m)
+      ,(Left'server_ m cap)
+      ,(Right'server_ m cap)) => (Bottom'server_ m cap) where
+    {-# MINIMAL bottom'bottom #-}
+    bottom'bottom :: cap -> (Server.MethodHandler m Bottom'bottom'params Bottom'bottom'results)
+    bottom'bottom _ = Server.methodUnimplemented
+export_Bottom :: ((STM.MonadSTM m)
+                 ,(Bottom'server_ Std_.IO cap)) => Supervisors.Supervisor -> cap -> (m Bottom)
+export_Bottom sup_ server_ = (STM.liftSTM (Bottom <$> (Rpc.export sup_ Server.ServerOps{handleCast = (Server.unwrap server_)
+                                                                                       ,handleStop = (Server.shutdown server_)
+                                                                                       ,handleCall = (\interfaceId_ methodId_ -> case interfaceId_ of
+                                                                                           18402872613340521775 ->
+                                                                                               case methodId_ of
+                                                                                                   0 ->
+                                                                                                       (Server.toUntypedHandler (bottom'bottom server_))
+                                                                                                   _ ->
+                                                                                                       Server.methodUnimplemented
+                                                                                           17679152961798450446 ->
+                                                                                               case methodId_ of
+                                                                                                   0 ->
+                                                                                                       (Server.toUntypedHandler (left'left server_))
+                                                                                                   _ ->
+                                                                                                       Server.methodUnimplemented
+                                                                                           17861645508359101525 ->
+                                                                                               case methodId_ of
+                                                                                                   0 ->
+                                                                                                       (Server.toUntypedHandler (top'top server_))
+                                                                                                   _ ->
+                                                                                                       Server.methodUnimplemented
+                                                                                           14712639595305348988 ->
+                                                                                               case methodId_ of
+                                                                                                   0 ->
+                                                                                                       (Server.toUntypedHandler (right'right server_))
+                                                                                                   _ ->
+                                                                                                       Server.methodUnimplemented
+                                                                                           _ ->
+                                                                                               Server.methodUnimplemented)})))
+instance (Rpc.IsClient Bottom) where
+    fromClient  = Bottom
+    toClient (Bottom client) = client
+instance (Classes.FromPtr msg Bottom) where
+    fromPtr  = RpcHelpers.isClientFromPtr
+instance (Classes.ToPtr s Bottom) where
+    toPtr  = RpcHelpers.isClientToPtr
+instance (Classes.Decerialize Bottom) where
+    type Cerial msg Bottom = (Capnp.Gen.ById.X832bcc6686a26d56.Bottom msg)
+    decerialize (Capnp.Gen.ById.X832bcc6686a26d56.Bottom'newtype_ maybeCap) = case maybeCap of
+        (Std_.Nothing) ->
+            (Std_.pure (Bottom Message.nullClient))
+        (Std_.Just cap) ->
+            (Bottom <$> (Untyped.getClient cap))
+instance (Classes.Cerialize s Bottom) where
+    cerialize msg (Bottom client) = (Capnp.Gen.ById.X832bcc6686a26d56.Bottom'newtype_ <$> (Std_.Just <$> (Untyped.appendCap msg client)))
+instance (Server.Server Std_.IO Bottom)
+instance (Bottom'server_ Std_.IO Bottom) where
+    bottom'bottom (Bottom client) = (Rpc.clientMethodHandler 18402872613340521775 0 client)
+instance (Left'server_ Std_.IO Bottom) where
+    left'left (Bottom client) = (Rpc.clientMethodHandler 17679152961798450446 0 client)
+instance (Top'server_ Std_.IO Bottom) where
+    top'top (Bottom client) = (Rpc.clientMethodHandler 17861645508359101525 0 client)
+instance (Right'server_ Std_.IO Bottom) where
+    right'right (Bottom client) = (Rpc.clientMethodHandler 14712639595305348988 0 client)
+data Bottom'bottom'params 
+    = Bottom'bottom'params 
+        {}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default Bottom'bottom'params) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const Bottom'bottom'params) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize Bottom'bottom'params) where
+    type Cerial msg Bottom'bottom'params = (Capnp.Gen.ById.X832bcc6686a26d56.Bottom'bottom'params msg)
+    decerialize raw = (Std_.pure Bottom'bottom'params)
+instance (Classes.Marshal s Bottom'bottom'params) where
+    marshalInto raw_ value_ = case value_ of
+        (Bottom'bottom'params) ->
+            (do
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s Bottom'bottom'params)
+instance (Classes.Cerialize s (V.Vector Bottom'bottom'params)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector Bottom'bottom'params))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Bottom'bottom'params)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Bottom'bottom'params))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Bottom'bottom'params)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Bottom'bottom'params))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Bottom'bottom'params)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data Bottom'bottom'results 
+    = Bottom'bottom'results 
+        {}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default Bottom'bottom'results) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const Bottom'bottom'results) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize Bottom'bottom'results) where
+    type Cerial msg Bottom'bottom'results = (Capnp.Gen.ById.X832bcc6686a26d56.Bottom'bottom'results msg)
+    decerialize raw = (Std_.pure Bottom'bottom'results)
+instance (Classes.Marshal s Bottom'bottom'results) where
+    marshalInto raw_ value_ = case value_ of
+        (Bottom'bottom'results) ->
+            (do
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s Bottom'bottom'results)
+instance (Classes.Cerialize s (V.Vector Bottom'bottom'results)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector Bottom'bottom'results))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Bottom'bottom'results)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Bottom'bottom'results))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Bottom'bottom'results)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Bottom'bottom'results))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Bottom'bottom'results)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data Defaults 
+    = Defaults 
+        {text :: T.Text
+        ,data_ :: BS.ByteString
+        ,float :: Std_.Float
+        ,int :: Std_.Int32
+        ,uint :: Std_.Word32}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default Defaults) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const Defaults) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize Defaults) where
+    type Cerial msg Defaults = (Capnp.Gen.ById.X832bcc6686a26d56.Defaults msg)
+    decerialize raw = (Defaults <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_Defaults'text raw) >>= Classes.decerialize)
+                                <*> ((Capnp.Gen.ById.X832bcc6686a26d56.get_Defaults'data_ raw) >>= Classes.decerialize)
+                                <*> (Capnp.Gen.ById.X832bcc6686a26d56.get_Defaults'float raw)
+                                <*> (Capnp.Gen.ById.X832bcc6686a26d56.get_Defaults'int raw)
+                                <*> (Capnp.Gen.ById.X832bcc6686a26d56.get_Defaults'uint raw))
+instance (Classes.Marshal s Defaults) where
+    marshalInto raw_ value_ = case value_ of
+        Defaults{..} ->
+            (do
+                ((Classes.cerialize (Untyped.message raw_) text) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Defaults'text raw_))
+                ((Classes.cerialize (Untyped.message raw_) data_) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_Defaults'data_ raw_))
+                (Capnp.Gen.ById.X832bcc6686a26d56.set_Defaults'float raw_ float)
+                (Capnp.Gen.ById.X832bcc6686a26d56.set_Defaults'int raw_ int)
+                (Capnp.Gen.ById.X832bcc6686a26d56.set_Defaults'uint raw_ uint)
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s Defaults)
+instance (Classes.Cerialize s (V.Vector Defaults)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector Defaults))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector Defaults)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector Defaults))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Defaults)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Defaults))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector Defaults)))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+data BenchmarkA 
+    = BenchmarkA 
+        {name :: T.Text
+        ,birthDay :: Std_.Int64
+        ,phone :: T.Text
+        ,siblings :: Std_.Int32
+        ,spouse :: Std_.Bool
+        ,money :: Std_.Double}
+    deriving(Std_.Show
+            ,Std_.Eq
+            ,Generics.Generic)
+instance (Default.Default BenchmarkA) where
+    def  = GenHelpersPure.defaultStruct
+instance (Classes.FromStruct Message.Const BenchmarkA) where
+    fromStruct struct = ((Classes.fromStruct struct) >>= Classes.decerialize)
+instance (Classes.Decerialize BenchmarkA) where
+    type Cerial msg BenchmarkA = (Capnp.Gen.ById.X832bcc6686a26d56.BenchmarkA msg)
+    decerialize raw = (BenchmarkA <$> ((Capnp.Gen.ById.X832bcc6686a26d56.get_BenchmarkA'name raw) >>= Classes.decerialize)
+                                  <*> (Capnp.Gen.ById.X832bcc6686a26d56.get_BenchmarkA'birthDay raw)
+                                  <*> ((Capnp.Gen.ById.X832bcc6686a26d56.get_BenchmarkA'phone raw) >>= Classes.decerialize)
+                                  <*> (Capnp.Gen.ById.X832bcc6686a26d56.get_BenchmarkA'siblings raw)
+                                  <*> (Capnp.Gen.ById.X832bcc6686a26d56.get_BenchmarkA'spouse raw)
+                                  <*> (Capnp.Gen.ById.X832bcc6686a26d56.get_BenchmarkA'money raw))
+instance (Classes.Marshal s BenchmarkA) where
+    marshalInto raw_ value_ = case value_ of
+        BenchmarkA{..} ->
+            (do
+                ((Classes.cerialize (Untyped.message raw_) name) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_BenchmarkA'name raw_))
+                (Capnp.Gen.ById.X832bcc6686a26d56.set_BenchmarkA'birthDay raw_ birthDay)
+                ((Classes.cerialize (Untyped.message raw_) phone) >>= (Capnp.Gen.ById.X832bcc6686a26d56.set_BenchmarkA'phone raw_))
+                (Capnp.Gen.ById.X832bcc6686a26d56.set_BenchmarkA'siblings raw_ siblings)
+                (Capnp.Gen.ById.X832bcc6686a26d56.set_BenchmarkA'spouse raw_ spouse)
+                (Capnp.Gen.ById.X832bcc6686a26d56.set_BenchmarkA'money raw_ money)
+                (Std_.pure ())
+                )
+instance (Classes.Cerialize s BenchmarkA)
+instance (Classes.Cerialize s (V.Vector BenchmarkA)) where
+    cerialize  = GenHelpersPure.cerializeCompositeVec
+instance (Classes.Cerialize s (V.Vector (V.Vector BenchmarkA))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector BenchmarkA)))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector BenchmarkA))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector BenchmarkA)))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector BenchmarkA))))))) where
+    cerialize  = GenHelpersPure.cerializeBasicVec
+instance (Classes.Cerialize s (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector (V.Vector BenchmarkA)))))))) where
     cerialize  = GenHelpersPure.cerializeBasicVec
 instance (Classes.Decerialize Capnp.Gen.ById.X832bcc6686a26d56.Airport) where
     type Cerial msg Capnp.Gen.ById.X832bcc6686a26d56.Airport = Capnp.Gen.ById.X832bcc6686a26d56.Airport
diff --git a/gen/tests/Capnp/Gen/ById/X832bcc6686a26d56/New.hs b/gen/tests/Capnp/Gen/ById/X832bcc6686a26d56/New.hs
new file mode 100644
--- /dev/null
+++ b/gen/tests/Capnp/Gen/ById/X832bcc6686a26d56/New.hs
@@ -0,0 +1,12 @@
+{-# OPTIONS_GHC -Wno-unused-imports #-}
+{-# OPTIONS_GHC -Wno-dodgy-exports #-}
+{-# OPTIONS_GHC -Wno-unused-matches #-}
+{-# OPTIONS_GHC -Wno-orphans #-}
+{-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
+module Capnp.Gen.ById.X832bcc6686a26d56.New(module Capnp.Gen.Aircraft.New) where
+import Capnp.Gen.Aircraft.New
+import qualified Prelude as Std_
+import qualified Data.Word as Std_
+import qualified Data.Int as Std_
+import Prelude ((<$>), (<*>), (>>=))
diff --git a/gen/tests/Capnp/Gen/ById/Xb6421fb8e478d144/New.hs b/gen/tests/Capnp/Gen/ById/Xb6421fb8e478d144/New.hs
new file mode 100644
--- /dev/null
+++ b/gen/tests/Capnp/Gen/ById/Xb6421fb8e478d144/New.hs
@@ -0,0 +1,12 @@
+{-# OPTIONS_GHC -Wno-unused-imports #-}
+{-# OPTIONS_GHC -Wno-dodgy-exports #-}
+{-# OPTIONS_GHC -Wno-unused-matches #-}
+{-# OPTIONS_GHC -Wno-orphans #-}
+{-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
+module Capnp.Gen.ById.Xb6421fb8e478d144.New(module Capnp.Gen.Generics.New) where
+import Capnp.Gen.Generics.New
+import qualified Prelude as Std_
+import qualified Data.Word as Std_
+import qualified Data.Int as Std_
+import Prelude ((<$>), (<*>), (>>=))
diff --git a/gen/tests/Capnp/Gen/Generics/New.hs b/gen/tests/Capnp/Gen/Generics/New.hs
new file mode 100644
--- /dev/null
+++ b/gen/tests/Capnp/Gen/Generics/New.hs
@@ -0,0 +1,435 @@
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE EmptyDataDeriving #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE UndecidableInstances #-}
+{-# LANGUAGE OverloadedLabels #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE StandaloneDeriving #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# OPTIONS_GHC -Wno-unused-imports #-}
+{-# OPTIONS_GHC -Wno-dodgy-exports #-}
+{-# OPTIONS_GHC -Wno-unused-matches #-}
+{-# OPTIONS_GHC -Wno-orphans #-}
+{-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
+module Capnp.Gen.Generics.New where
+import qualified Capnp.Repr as R
+import qualified Capnp.Repr.Parsed as RP
+import qualified Capnp.New.Basics as Basics
+import qualified GHC.OverloadedLabels as OL
+import qualified Capnp.GenHelpers.New as GH
+import qualified Capnp.New.Classes as C
+import qualified GHC.Generics as Generics
+import qualified Capnp.GenHelpers.ReExports.Data.ByteString as BS
+import qualified Prelude as Std_
+import qualified Data.Word as Std_
+import qualified Data.Int as Std_
+import Prelude ((<$>), (<*>), (>>=))
+data Maybe t
+type instance (R.ReprFor (Maybe t)) = (R.Ptr (Std_.Just R.Struct))
+instance ((GH.TypeParam t)) => (C.TypedStruct (Maybe t)) where
+    numStructWords  = 1
+    numStructPtrs  = 1
+instance ((GH.TypeParam t)) => (C.Allocate (Maybe t)) where
+    type AllocHint (Maybe t) = ()
+    new _ = C.newTypedStruct
+instance ((GH.TypeParam t)) => (C.EstimateAlloc (Maybe t) (C.Parsed (Maybe t)))
+instance ((GH.TypeParam t)) => (C.AllocateList (Maybe t)) where
+    type ListAllocHint (Maybe t) = Std_.Int
+    newList  = C.newTypedStructList
+instance ((GH.TypeParam t)) => (C.EstimateListAlloc (Maybe t) (C.Parsed (Maybe t)))
+data instance C.Parsed (Maybe t)
+    = Maybe 
+        {union' :: (C.Parsed (GH.Which (Maybe t)))}
+    deriving(Generics.Generic)
+deriving instance ((Std_.Show (RP.Parsed t))) => (Std_.Show (C.Parsed (Maybe t)))
+deriving instance ((Std_.Eq (RP.Parsed t))) => (Std_.Eq (C.Parsed (Maybe t)))
+instance ((GH.TypeParam t)) => (C.Parse (Maybe t) (C.Parsed (Maybe t))) where
+    parse raw_ = (Maybe <$> (C.parse (GH.structUnion raw_)))
+instance ((GH.TypeParam t)) => (C.Marshal (Maybe t) (C.Parsed (Maybe t))) where
+    marshalInto raw_ Maybe{..} = (do
+        (C.marshalInto (GH.structUnion raw_) union')
+        )
+instance ((GH.TypeParam t)) => (GH.HasUnion (Maybe t)) where
+    unionField  = (GH.dataField 0 0 16 0)
+    data RawWhich mut_ (Maybe t)
+        = RW_Maybe'nothing (R.Raw mut_ ())
+        | RW_Maybe'just (R.Raw mut_ t)
+        | RW_Maybe'unknown' Std_.Word16
+    internalWhich tag_ struct_ = case tag_ of
+        0 ->
+            (RW_Maybe'nothing <$> (GH.readVariant #nothing struct_))
+        1 ->
+            (RW_Maybe'just <$> (GH.readVariant #just struct_))
+        _ ->
+            (Std_.pure (RW_Maybe'unknown' tag_))
+    data Which (Maybe t)
+instance ((GH.TypeParam t)) => (GH.HasVariant "nothing" GH.Slot (Maybe t) ()) where
+    variantByLabel  = (GH.Variant GH.voidField 0)
+instance ((GH.TypeParam t)) => (GH.HasVariant "just" GH.Slot (Maybe t) t) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 1)
+data instance C.Parsed (GH.Which (Maybe t))
+    = Maybe'nothing 
+    | Maybe'just (RP.Parsed t)
+    | Maybe'unknown' Std_.Word16
+    deriving(Generics.Generic)
+deriving instance ((Std_.Show (RP.Parsed t))) => (Std_.Show (C.Parsed (GH.Which (Maybe t))))
+deriving instance ((Std_.Eq (RP.Parsed t))) => (Std_.Eq (C.Parsed (GH.Which (Maybe t))))
+instance ((GH.TypeParam t)) => (C.Parse (GH.Which (Maybe t)) (C.Parsed (GH.Which (Maybe t)))) where
+    parse raw_ = (do
+        rawWhich_ <- (GH.unionWhich raw_)
+        case rawWhich_ of
+            (RW_Maybe'nothing _) ->
+                (Std_.pure Maybe'nothing)
+            (RW_Maybe'just rawArg_) ->
+                (Maybe'just <$> (C.parse rawArg_))
+            (RW_Maybe'unknown' tag_) ->
+                (Std_.pure (Maybe'unknown' tag_))
+        )
+instance ((GH.TypeParam t)) => (C.Marshal (GH.Which (Maybe t)) (C.Parsed (GH.Which (Maybe t)))) where
+    marshalInto raw_ parsed_ = case parsed_ of
+        (Maybe'nothing) ->
+            (GH.encodeVariant #nothing () (GH.unionStruct raw_))
+        (Maybe'just arg_) ->
+            (GH.encodeVariant #just arg_ (GH.unionStruct raw_))
+        (Maybe'unknown' tag_) ->
+            (GH.encodeField GH.unionField tag_ (GH.unionStruct raw_))
+data Either a b
+type instance (R.ReprFor (Either a b)) = (R.Ptr (Std_.Just R.Struct))
+instance ((GH.TypeParam a)
+         ,(GH.TypeParam b)) => (C.TypedStruct (Either a b)) where
+    numStructWords  = 1
+    numStructPtrs  = 1
+instance ((GH.TypeParam a)
+         ,(GH.TypeParam b)) => (C.Allocate (Either a b)) where
+    type AllocHint (Either a b) = ()
+    new _ = C.newTypedStruct
+instance ((GH.TypeParam a)
+         ,(GH.TypeParam b)) => (C.EstimateAlloc (Either a b) (C.Parsed (Either a b)))
+instance ((GH.TypeParam a)
+         ,(GH.TypeParam b)) => (C.AllocateList (Either a b)) where
+    type ListAllocHint (Either a b) = Std_.Int
+    newList  = C.newTypedStructList
+instance ((GH.TypeParam a)
+         ,(GH.TypeParam b)) => (C.EstimateListAlloc (Either a b) (C.Parsed (Either a b)))
+data instance C.Parsed (Either a b)
+    = Either 
+        {union' :: (C.Parsed (GH.Which (Either a b)))}
+    deriving(Generics.Generic)
+deriving instance ((Std_.Show (RP.Parsed a))
+                  ,(Std_.Show (RP.Parsed b))) => (Std_.Show (C.Parsed (Either a b)))
+deriving instance ((Std_.Eq (RP.Parsed a))
+                  ,(Std_.Eq (RP.Parsed b))) => (Std_.Eq (C.Parsed (Either a b)))
+instance ((GH.TypeParam a)
+         ,(GH.TypeParam b)) => (C.Parse (Either a b) (C.Parsed (Either a b))) where
+    parse raw_ = (Either <$> (C.parse (GH.structUnion raw_)))
+instance ((GH.TypeParam a)
+         ,(GH.TypeParam b)) => (C.Marshal (Either a b) (C.Parsed (Either a b))) where
+    marshalInto raw_ Either{..} = (do
+        (C.marshalInto (GH.structUnion raw_) union')
+        )
+instance ((GH.TypeParam a)
+         ,(GH.TypeParam b)) => (GH.HasUnion (Either a b)) where
+    unionField  = (GH.dataField 0 0 16 0)
+    data RawWhich mut_ (Either a b)
+        = RW_Either'left (R.Raw mut_ a)
+        | RW_Either'right (R.Raw mut_ b)
+        | RW_Either'unknown' Std_.Word16
+    internalWhich tag_ struct_ = case tag_ of
+        0 ->
+            (RW_Either'left <$> (GH.readVariant #left struct_))
+        1 ->
+            (RW_Either'right <$> (GH.readVariant #right struct_))
+        _ ->
+            (Std_.pure (RW_Either'unknown' tag_))
+    data Which (Either a b)
+instance ((GH.TypeParam a)
+         ,(GH.TypeParam b)) => (GH.HasVariant "left" GH.Slot (Either a b) a) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 0)
+instance ((GH.TypeParam a)
+         ,(GH.TypeParam b)) => (GH.HasVariant "right" GH.Slot (Either a b) b) where
+    variantByLabel  = (GH.Variant (GH.ptrField 0) 1)
+data instance C.Parsed (GH.Which (Either a b))
+    = Either'left (RP.Parsed a)
+    | Either'right (RP.Parsed b)
+    | Either'unknown' Std_.Word16
+    deriving(Generics.Generic)
+deriving instance ((Std_.Show (RP.Parsed a))
+                  ,(Std_.Show (RP.Parsed b))) => (Std_.Show (C.Parsed (GH.Which (Either a b))))
+deriving instance ((Std_.Eq (RP.Parsed a))
+                  ,(Std_.Eq (RP.Parsed b))) => (Std_.Eq (C.Parsed (GH.Which (Either a b))))
+instance ((GH.TypeParam a)
+         ,(GH.TypeParam b)) => (C.Parse (GH.Which (Either a b)) (C.Parsed (GH.Which (Either a b)))) where
+    parse raw_ = (do
+        rawWhich_ <- (GH.unionWhich raw_)
+        case rawWhich_ of
+            (RW_Either'left rawArg_) ->
+                (Either'left <$> (C.parse rawArg_))
+            (RW_Either'right rawArg_) ->
+                (Either'right <$> (C.parse rawArg_))
+            (RW_Either'unknown' tag_) ->
+                (Std_.pure (Either'unknown' tag_))
+        )
+instance ((GH.TypeParam a)
+         ,(GH.TypeParam b)) => (C.Marshal (GH.Which (Either a b)) (C.Parsed (GH.Which (Either a b)))) where
+    marshalInto raw_ parsed_ = case parsed_ of
+        (Either'left arg_) ->
+            (GH.encodeVariant #left arg_ (GH.unionStruct raw_))
+        (Either'right arg_) ->
+            (GH.encodeVariant #right arg_ (GH.unionStruct raw_))
+        (Either'unknown' tag_) ->
+            (GH.encodeField GH.unionField tag_ (GH.unionStruct raw_))
+data Pair a b
+type instance (R.ReprFor (Pair a b)) = (R.Ptr (Std_.Just R.Struct))
+instance ((GH.TypeParam a)
+         ,(GH.TypeParam b)) => (C.TypedStruct (Pair a b)) where
+    numStructWords  = 0
+    numStructPtrs  = 2
+instance ((GH.TypeParam a)
+         ,(GH.TypeParam b)) => (C.Allocate (Pair a b)) where
+    type AllocHint (Pair a b) = ()
+    new _ = C.newTypedStruct
+instance ((GH.TypeParam a)
+         ,(GH.TypeParam b)) => (C.EstimateAlloc (Pair a b) (C.Parsed (Pair a b)))
+instance ((GH.TypeParam a)
+         ,(GH.TypeParam b)) => (C.AllocateList (Pair a b)) where
+    type ListAllocHint (Pair a b) = Std_.Int
+    newList  = C.newTypedStructList
+instance ((GH.TypeParam a)
+         ,(GH.TypeParam b)) => (C.EstimateListAlloc (Pair a b) (C.Parsed (Pair a b)))
+data instance C.Parsed (Pair a b)
+    = Pair 
+        {fst :: (RP.Parsed a)
+        ,snd :: (RP.Parsed b)}
+    deriving(Generics.Generic)
+deriving instance ((Std_.Show (RP.Parsed a))
+                  ,(Std_.Show (RP.Parsed b))) => (Std_.Show (C.Parsed (Pair a b)))
+deriving instance ((Std_.Eq (RP.Parsed a))
+                  ,(Std_.Eq (RP.Parsed b))) => (Std_.Eq (C.Parsed (Pair a b)))
+instance ((GH.TypeParam a)
+         ,(GH.TypeParam b)) => (C.Parse (Pair a b) (C.Parsed (Pair a b))) where
+    parse raw_ = (Pair <$> (GH.parseField #fst raw_)
+                       <*> (GH.parseField #snd raw_))
+instance ((GH.TypeParam a)
+         ,(GH.TypeParam b)) => (C.Marshal (Pair a b) (C.Parsed (Pair a b))) where
+    marshalInto raw_ Pair{..} = (do
+        (GH.encodeField #fst fst raw_)
+        (GH.encodeField #snd snd raw_)
+        (Std_.pure ())
+        )
+instance ((GH.TypeParam a)
+         ,(GH.TypeParam b)) => (GH.HasField "fst" GH.Slot (Pair a b) a) where
+    fieldByLabel  = (GH.ptrField 0)
+instance ((GH.TypeParam a)
+         ,(GH.TypeParam b)) => (GH.HasField "snd" GH.Slot (Pair a b) b) where
+    fieldByLabel  = (GH.ptrField 1)
+data Nested t
+type instance (R.ReprFor (Nested t)) = (R.Ptr (Std_.Just R.Struct))
+instance ((GH.TypeParam t)) => (C.TypedStruct (Nested t)) where
+    numStructWords  = 0
+    numStructPtrs  = 0
+instance ((GH.TypeParam t)) => (C.Allocate (Nested t)) where
+    type AllocHint (Nested t) = ()
+    new _ = C.newTypedStruct
+instance ((GH.TypeParam t)) => (C.EstimateAlloc (Nested t) (C.Parsed (Nested t)))
+instance ((GH.TypeParam t)) => (C.AllocateList (Nested t)) where
+    type ListAllocHint (Nested t) = Std_.Int
+    newList  = C.newTypedStructList
+instance ((GH.TypeParam t)) => (C.EstimateListAlloc (Nested t) (C.Parsed (Nested t)))
+data instance C.Parsed (Nested t)
+    = Nested 
+        {}
+    deriving(Generics.Generic)
+deriving instance ((Std_.Show (RP.Parsed t))) => (Std_.Show (C.Parsed (Nested t)))
+deriving instance ((Std_.Eq (RP.Parsed t))) => (Std_.Eq (C.Parsed (Nested t)))
+instance ((GH.TypeParam t)) => (C.Parse (Nested t) (C.Parsed (Nested t))) where
+    parse raw_ = (Std_.pure Nested)
+instance ((GH.TypeParam t)) => (C.Marshal (Nested t) (C.Parsed (Nested t))) where
+    marshalInto _raw (Nested) = (Std_.pure ())
+data Nested'SomeStruct t
+type instance (R.ReprFor (Nested'SomeStruct t)) = (R.Ptr (Std_.Just R.Struct))
+instance ((GH.TypeParam t)) => (C.TypedStruct (Nested'SomeStruct t)) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance ((GH.TypeParam t)) => (C.Allocate (Nested'SomeStruct t)) where
+    type AllocHint (Nested'SomeStruct t) = ()
+    new _ = C.newTypedStruct
+instance ((GH.TypeParam t)) => (C.EstimateAlloc (Nested'SomeStruct t) (C.Parsed (Nested'SomeStruct t)))
+instance ((GH.TypeParam t)) => (C.AllocateList (Nested'SomeStruct t)) where
+    type ListAllocHint (Nested'SomeStruct t) = Std_.Int
+    newList  = C.newTypedStructList
+instance ((GH.TypeParam t)) => (C.EstimateListAlloc (Nested'SomeStruct t) (C.Parsed (Nested'SomeStruct t)))
+data instance C.Parsed (Nested'SomeStruct t)
+    = Nested'SomeStruct 
+        {value :: (RP.Parsed t)}
+    deriving(Generics.Generic)
+deriving instance ((Std_.Show (RP.Parsed t))) => (Std_.Show (C.Parsed (Nested'SomeStruct t)))
+deriving instance ((Std_.Eq (RP.Parsed t))) => (Std_.Eq (C.Parsed (Nested'SomeStruct t)))
+instance ((GH.TypeParam t)) => (C.Parse (Nested'SomeStruct t) (C.Parsed (Nested'SomeStruct t))) where
+    parse raw_ = (Nested'SomeStruct <$> (GH.parseField #value raw_))
+instance ((GH.TypeParam t)) => (C.Marshal (Nested'SomeStruct t) (C.Parsed (Nested'SomeStruct t))) where
+    marshalInto raw_ Nested'SomeStruct{..} = (do
+        (GH.encodeField #value value raw_)
+        (Std_.pure ())
+        )
+instance ((GH.TypeParam t)) => (GH.HasField "value" GH.Slot (Nested'SomeStruct t) t) where
+    fieldByLabel  = (GH.ptrField 0)
+data Nested'SomeInterface t
+type instance (R.ReprFor (Nested'SomeInterface t)) = (R.Ptr (Std_.Just R.Cap))
+instance ((GH.TypeParam t)) => (C.Parse (Nested'SomeInterface t) (GH.Client (Nested'SomeInterface t))) where
+    parse  = GH.parseCap
+    encode  = GH.encodeCap
+instance ((GH.TypeParam t)) => (GH.HasMethod "method" (Nested'SomeInterface t) (Nested'SomeInterface'method'params t) (Nested'SomeInterface'method'results t)) where
+    methodByLabel  = (GH.Method 17400383877992806407 0)
+data Nested'SomeInterface'method'params t
+type instance (R.ReprFor (Nested'SomeInterface'method'params t)) = (R.Ptr (Std_.Just R.Struct))
+instance ((GH.TypeParam t)) => (C.TypedStruct (Nested'SomeInterface'method'params t)) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance ((GH.TypeParam t)) => (C.Allocate (Nested'SomeInterface'method'params t)) where
+    type AllocHint (Nested'SomeInterface'method'params t) = ()
+    new _ = C.newTypedStruct
+instance ((GH.TypeParam t)) => (C.EstimateAlloc (Nested'SomeInterface'method'params t) (C.Parsed (Nested'SomeInterface'method'params t)))
+instance ((GH.TypeParam t)) => (C.AllocateList (Nested'SomeInterface'method'params t)) where
+    type ListAllocHint (Nested'SomeInterface'method'params t) = Std_.Int
+    newList  = C.newTypedStructList
+instance ((GH.TypeParam t)) => (C.EstimateListAlloc (Nested'SomeInterface'method'params t) (C.Parsed (Nested'SomeInterface'method'params t)))
+data instance C.Parsed (Nested'SomeInterface'method'params t)
+    = Nested'SomeInterface'method'params 
+        {arg :: (RP.Parsed t)}
+    deriving(Generics.Generic)
+deriving instance ((Std_.Show (RP.Parsed t))) => (Std_.Show (C.Parsed (Nested'SomeInterface'method'params t)))
+deriving instance ((Std_.Eq (RP.Parsed t))) => (Std_.Eq (C.Parsed (Nested'SomeInterface'method'params t)))
+instance ((GH.TypeParam t)) => (C.Parse (Nested'SomeInterface'method'params t) (C.Parsed (Nested'SomeInterface'method'params t))) where
+    parse raw_ = (Nested'SomeInterface'method'params <$> (GH.parseField #arg raw_))
+instance ((GH.TypeParam t)) => (C.Marshal (Nested'SomeInterface'method'params t) (C.Parsed (Nested'SomeInterface'method'params t))) where
+    marshalInto raw_ Nested'SomeInterface'method'params{..} = (do
+        (GH.encodeField #arg arg raw_)
+        (Std_.pure ())
+        )
+instance ((GH.TypeParam t)) => (GH.HasField "arg" GH.Slot (Nested'SomeInterface'method'params t) t) where
+    fieldByLabel  = (GH.ptrField 0)
+data Nested'SomeInterface'method'results t
+type instance (R.ReprFor (Nested'SomeInterface'method'results t)) = (R.Ptr (Std_.Just R.Struct))
+instance ((GH.TypeParam t)) => (C.TypedStruct (Nested'SomeInterface'method'results t)) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance ((GH.TypeParam t)) => (C.Allocate (Nested'SomeInterface'method'results t)) where
+    type AllocHint (Nested'SomeInterface'method'results t) = ()
+    new _ = C.newTypedStruct
+instance ((GH.TypeParam t)) => (C.EstimateAlloc (Nested'SomeInterface'method'results t) (C.Parsed (Nested'SomeInterface'method'results t)))
+instance ((GH.TypeParam t)) => (C.AllocateList (Nested'SomeInterface'method'results t)) where
+    type ListAllocHint (Nested'SomeInterface'method'results t) = Std_.Int
+    newList  = C.newTypedStructList
+instance ((GH.TypeParam t)) => (C.EstimateListAlloc (Nested'SomeInterface'method'results t) (C.Parsed (Nested'SomeInterface'method'results t)))
+data instance C.Parsed (Nested'SomeInterface'method'results t)
+    = Nested'SomeInterface'method'results 
+        {result :: (RP.Parsed t)}
+    deriving(Generics.Generic)
+deriving instance ((Std_.Show (RP.Parsed t))) => (Std_.Show (C.Parsed (Nested'SomeInterface'method'results t)))
+deriving instance ((Std_.Eq (RP.Parsed t))) => (Std_.Eq (C.Parsed (Nested'SomeInterface'method'results t)))
+instance ((GH.TypeParam t)) => (C.Parse (Nested'SomeInterface'method'results t) (C.Parsed (Nested'SomeInterface'method'results t))) where
+    parse raw_ = (Nested'SomeInterface'method'results <$> (GH.parseField #result raw_))
+instance ((GH.TypeParam t)) => (C.Marshal (Nested'SomeInterface'method'results t) (C.Parsed (Nested'SomeInterface'method'results t))) where
+    marshalInto raw_ Nested'SomeInterface'method'results{..} = (do
+        (GH.encodeField #result result raw_)
+        (Std_.pure ())
+        )
+instance ((GH.TypeParam t)) => (GH.HasField "result" GH.Slot (Nested'SomeInterface'method'results t) t) where
+    fieldByLabel  = (GH.ptrField 0)
+data Specialized t
+type instance (R.ReprFor (Specialized t)) = (R.Ptr (Std_.Just R.Struct))
+instance ((GH.TypeParam t)) => (C.TypedStruct (Specialized t)) where
+    numStructWords  = 0
+    numStructPtrs  = 2
+instance ((GH.TypeParam t)) => (C.Allocate (Specialized t)) where
+    type AllocHint (Specialized t) = ()
+    new _ = C.newTypedStruct
+instance ((GH.TypeParam t)) => (C.EstimateAlloc (Specialized t) (C.Parsed (Specialized t)))
+instance ((GH.TypeParam t)) => (C.AllocateList (Specialized t)) where
+    type ListAllocHint (Specialized t) = Std_.Int
+    newList  = C.newTypedStructList
+instance ((GH.TypeParam t)) => (C.EstimateListAlloc (Specialized t) (C.Parsed (Specialized t)))
+data instance C.Parsed (Specialized t)
+    = Specialized 
+        {either :: (RP.Parsed (Either Basics.Text t))
+        ,nestedStruct :: (RP.Parsed (Nested'SomeStruct Basics.Data))}
+    deriving(Generics.Generic)
+deriving instance ((Std_.Show (RP.Parsed t))) => (Std_.Show (C.Parsed (Specialized t)))
+deriving instance ((Std_.Eq (RP.Parsed t))) => (Std_.Eq (C.Parsed (Specialized t)))
+instance ((GH.TypeParam t)) => (C.Parse (Specialized t) (C.Parsed (Specialized t))) where
+    parse raw_ = (Specialized <$> (GH.parseField #either raw_)
+                              <*> (GH.parseField #nestedStruct raw_))
+instance ((GH.TypeParam t)) => (C.Marshal (Specialized t) (C.Parsed (Specialized t))) where
+    marshalInto raw_ Specialized{..} = (do
+        (GH.encodeField #either either raw_)
+        (GH.encodeField #nestedStruct nestedStruct raw_)
+        (Std_.pure ())
+        )
+instance ((GH.TypeParam t)) => (GH.HasField "either" GH.Slot (Specialized t) (Either Basics.Text t)) where
+    fieldByLabel  = (GH.ptrField 0)
+instance ((GH.TypeParam t)) => (GH.HasField "nestedStruct" GH.Slot (Specialized t) (Nested'SomeStruct Basics.Data)) where
+    fieldByLabel  = (GH.ptrField 1)
+data HasGroup t
+type instance (R.ReprFor (HasGroup t)) = (R.Ptr (Std_.Just R.Struct))
+instance ((GH.TypeParam t)) => (C.TypedStruct (HasGroup t)) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance ((GH.TypeParam t)) => (C.Allocate (HasGroup t)) where
+    type AllocHint (HasGroup t) = ()
+    new _ = C.newTypedStruct
+instance ((GH.TypeParam t)) => (C.EstimateAlloc (HasGroup t) (C.Parsed (HasGroup t)))
+instance ((GH.TypeParam t)) => (C.AllocateList (HasGroup t)) where
+    type ListAllocHint (HasGroup t) = Std_.Int
+    newList  = C.newTypedStructList
+instance ((GH.TypeParam t)) => (C.EstimateListAlloc (HasGroup t) (C.Parsed (HasGroup t)))
+data instance C.Parsed (HasGroup t)
+    = HasGroup 
+        {theGroup :: (RP.Parsed (HasGroup'theGroup t))}
+    deriving(Generics.Generic)
+deriving instance ((Std_.Show (RP.Parsed t))) => (Std_.Show (C.Parsed (HasGroup t)))
+deriving instance ((Std_.Eq (RP.Parsed t))) => (Std_.Eq (C.Parsed (HasGroup t)))
+instance ((GH.TypeParam t)) => (C.Parse (HasGroup t) (C.Parsed (HasGroup t))) where
+    parse raw_ = (HasGroup <$> (GH.parseField #theGroup raw_))
+instance ((GH.TypeParam t)) => (C.Marshal (HasGroup t) (C.Parsed (HasGroup t))) where
+    marshalInto raw_ HasGroup{..} = (do
+        (do
+            group_ <- (GH.readField #theGroup raw_)
+            (C.marshalInto group_ theGroup)
+            )
+        (Std_.pure ())
+        )
+instance ((GH.TypeParam t)) => (GH.HasField "theGroup" GH.Group (HasGroup t) (HasGroup'theGroup t)) where
+    fieldByLabel  = GH.groupField
+data HasGroup'theGroup t
+type instance (R.ReprFor (HasGroup'theGroup t)) = (R.Ptr (Std_.Just R.Struct))
+instance ((GH.TypeParam t)) => (C.TypedStruct (HasGroup'theGroup t)) where
+    numStructWords  = 0
+    numStructPtrs  = 1
+instance ((GH.TypeParam t)) => (C.Allocate (HasGroup'theGroup t)) where
+    type AllocHint (HasGroup'theGroup t) = ()
+    new _ = C.newTypedStruct
+instance ((GH.TypeParam t)) => (C.EstimateAlloc (HasGroup'theGroup t) (C.Parsed (HasGroup'theGroup t)))
+instance ((GH.TypeParam t)) => (C.AllocateList (HasGroup'theGroup t)) where
+    type ListAllocHint (HasGroup'theGroup t) = Std_.Int
+    newList  = C.newTypedStructList
+instance ((GH.TypeParam t)) => (C.EstimateListAlloc (HasGroup'theGroup t) (C.Parsed (HasGroup'theGroup t)))
+data instance C.Parsed (HasGroup'theGroup t)
+    = HasGroup'theGroup' 
+        {value :: (RP.Parsed t)}
+    deriving(Generics.Generic)
+deriving instance ((Std_.Show (RP.Parsed t))) => (Std_.Show (C.Parsed (HasGroup'theGroup t)))
+deriving instance ((Std_.Eq (RP.Parsed t))) => (Std_.Eq (C.Parsed (HasGroup'theGroup t)))
+instance ((GH.TypeParam t)) => (C.Parse (HasGroup'theGroup t) (C.Parsed (HasGroup'theGroup t))) where
+    parse raw_ = (HasGroup'theGroup' <$> (GH.parseField #value raw_))
+instance ((GH.TypeParam t)) => (C.Marshal (HasGroup'theGroup t) (C.Parsed (HasGroup'theGroup t))) where
+    marshalInto raw_ HasGroup'theGroup'{..} = (do
+        (GH.encodeField #value value raw_)
+        (Std_.pure ())
+        )
+instance ((GH.TypeParam t)) => (GH.HasField "value" GH.Slot (HasGroup'theGroup t) t) where
+    fieldByLabel  = (GH.ptrField 0)
diff --git a/lib/Capnp/Basics/Pure.hs b/lib/Capnp/Basics/Pure.hs
--- a/lib/Capnp/Basics/Pure.hs
+++ b/lib/Capnp/Basics/Pure.hs
@@ -34,7 +34,7 @@
 import Capnp.Classes
 
 import Capnp.Errors  (Error(InvalidUtf8Error))
-import Capnp.Message (Mutability (..))
+import Capnp.Message (Mutability(..))
 import Capnp.Untyped (rawBytes)
 
 import qualified Capnp.Basics  as Basics
diff --git a/lib/Capnp/Bits.hs b/lib/Capnp/Bits.hs
--- a/lib/Capnp/Bits.hs
+++ b/lib/Capnp/Bits.hs
@@ -101,6 +101,7 @@
     (orig .&. mask) .|. (fromIntegral new `shiftL` shift)
   where
     mask = complement $ fromIntegral (maxBound `asTypeOf` new) `shiftL` shift
+{-# INLINE replaceBits #-}
 
 -- | 1 bit datatype, in the tradition of Word8, Word16 et al.
 newtype Word1 = Word1 { word1ToBool :: Bool }
diff --git a/lib/Capnp/Canonicalize.hs b/lib/Capnp/Canonicalize.hs
--- a/lib/Capnp/Canonicalize.hs
+++ b/lib/Capnp/Canonicalize.hs
@@ -30,11 +30,15 @@
 import Data.Foldable    (for_)
 import Data.Maybe       (isNothing)
 import Data.Traversable (for)
+-- import qualified Language.Haskell.TH as TH
 
-import           Capnp.Bits    (WordCount)
-import           Capnp.Message (Mutability (..))
-import qualified Capnp.Message as M
-import qualified Capnp.Untyped as U
+import           Capnp.Bits           (WordCount)
+import           Capnp.Message        (Mutability(..))
+import qualified Capnp.Message        as M
+import           Capnp.TraversalLimit (LimitT)
+import qualified Capnp.Untyped        as U
+import           Control.Monad.ST     (RealWorld)
+-- import           Internal.BuildPure   (PureBuilder)
 
 -- | Return a canonicalized message with a copy of the given struct as its
 -- root. returns a (message, segment) pair, where the segment is the first
@@ -44,8 +48,10 @@
 -- malformed messages), this can fail if the message does not fit in a single segment,
 -- as the canonical form requires single-segment messages.
 canonicalize
-    :: (U.RWCtx m s, M.MonadReadMessage mutIn m)
-    => U.Struct mutIn -> m (M.Message ('Mut s), M.Segment ('Mut s))
+   :: (U.RWCtx m s, M.MonadReadMessage mutIn m)
+   => U.Struct mutIn -> m (M.Message ('Mut s), M.Segment ('Mut s))
+{-# SPECIALIZE canonicalize :: U.Struct 'Const -> LimitT IO (M.Message ('Mut RealWorld), M.Segment ('Mut RealWorld)) #-}
+{-# SPECIALIZE canonicalize :: U.Struct ('Mut RealWorld) -> LimitT IO (M.Message ('Mut RealWorld), M.Segment ('Mut RealWorld)) #-}
 canonicalize rootStructIn = do
     let msgIn = U.message rootStructIn
     -- Note [Allocation strategy]
@@ -68,6 +74,8 @@
 cloneCanonicalStruct
     :: (U.RWCtx m s, M.MonadReadMessage mutIn m)
     => U.Struct mutIn -> M.Message ('Mut s) -> m (U.Struct ('Mut s))
+{-# SPECIALIZE cloneCanonicalStruct :: U.Struct 'Const -> M.Message ('Mut RealWorld) -> LimitT IO (U.Struct ('Mut RealWorld)) #-}
+{-# SPECIALIZE cloneCanonicalStruct :: U.Struct ('Mut RealWorld) -> M.Message ('Mut RealWorld) -> LimitT IO (U.Struct ('Mut RealWorld)) #-}
 cloneCanonicalStruct structIn msgOut = do
     (nWords, nPtrs) <- findCanonicalSectionCounts structIn
     structOut <- U.allocStruct msgOut (fromIntegral nWords) (fromIntegral nPtrs)
@@ -77,6 +85,8 @@
 copyCanonicalStruct
     :: (U.RWCtx m s, M.MonadReadMessage mutIn m)
     => U.Struct mutIn -> U.Struct ('Mut s) -> m ()
+{-# SPECIALIZE copyCanonicalStruct :: U.Struct 'Const -> U.Struct ('Mut RealWorld) -> LimitT IO () #-}
+{-# SPECIALIZE copyCanonicalStruct :: U.Struct ('Mut RealWorld) -> U.Struct ('Mut RealWorld) -> LimitT IO () #-}
 copyCanonicalStruct structIn structOut = do
     let nWords = fromIntegral $ U.structWordCount structOut
         nPtrs = fromIntegral $ U.structPtrCount structOut
@@ -88,7 +98,9 @@
         ptrOut <- cloneCanonicalPtr ptrIn (U.message structOut)
         U.setPtr ptrOut i structOut
 
-findCanonicalSectionCounts :: U.ReadCtx m msg => U.Struct msg -> m (Word16, Word16)
+findCanonicalSectionCounts :: U.ReadCtx m mut => U.Struct mut -> m (Word16, Word16)
+{-# SPECIALIZE findCanonicalSectionCounts :: U.Struct 'Const -> LimitT IO (Word16, Word16) #-}
+{-# SPECIALIZE findCanonicalSectionCounts :: U.Struct ('Mut RealWorld) -> LimitT IO (Word16, Word16) #-}
 findCanonicalSectionCounts struct = do
     nWords <- canonicalSectionCount (== 0) (`U.getData` struct) (fromIntegral $ U.structWordCount struct)
     nPtrs <- canonicalSectionCount isNothing (`U.getPtr` struct) (fromIntegral $ U.structPtrCount struct)
@@ -105,6 +117,8 @@
 cloneCanonicalPtr
     :: (U.RWCtx m s, M.MonadReadMessage mutIn m)
     => Maybe (U.Ptr mutIn) -> M.Message ('Mut s) -> m (Maybe (U.Ptr ('Mut s)))
+{-# SPECIALIZE cloneCanonicalPtr :: Maybe (U.Ptr 'Const) -> M.Message ('Mut RealWorld) -> LimitT IO (Maybe (U.Ptr ('Mut RealWorld))) #-}
+{-# SPECIALIZE cloneCanonicalPtr :: Maybe (U.Ptr ('Mut RealWorld)) -> M.Message ('Mut RealWorld) -> LimitT IO (Maybe (U.Ptr ('Mut RealWorld))) #-}
 cloneCanonicalPtr ptrIn msgOut =
     case ptrIn of
         Nothing ->
@@ -120,6 +134,8 @@
 cloneCanonicalList
     :: (U.RWCtx m s, M.MonadReadMessage mutIn m)
     => U.List mutIn -> M.Message ('Mut s) -> m (U.List ('Mut s))
+{-# SPECIALIZE cloneCanonicalList :: U.List 'Const -> M.Message ('Mut RealWorld) -> LimitT IO (U.List ('Mut RealWorld)) #-}
+{-# SPECIALIZE cloneCanonicalList :: U.List ('Mut RealWorld) -> M.Message ('Mut RealWorld) -> LimitT IO (U.List ('Mut RealWorld)) #-}
 cloneCanonicalList listIn msgOut =
     case listIn of
         U.List0 l -> U.List0 <$> U.allocList0 msgOut (U.length l)
@@ -134,6 +150,16 @@
 copyCanonicalDataList
     :: (U.RWCtx m s, M.MonadReadMessage mutIn m)
     => U.ListOf mutIn a -> U.ListOf ('Mut s) a -> m (U.ListOf ('Mut s) a)
+{-# SPECIALIZE copyCanonicalDataList
+    :: U.ListOf 'Const a
+    -> U.ListOf ('Mut RealWorld) a
+    -> LimitT IO (U.ListOf ('Mut RealWorld) a)
+    #-}
+{-# SPECIALIZE copyCanonicalDataList
+    :: U.ListOf ('Mut RealWorld) a
+    -> U.ListOf ('Mut RealWorld) a
+    -> LimitT IO (U.ListOf ('Mut RealWorld) a)
+    #-}
 copyCanonicalDataList listIn listOut = do
     for_ [0..U.length listIn - 1] $ \i -> do
         value <- U.index i listIn
@@ -145,6 +171,16 @@
     => U.ListOf mutIn (Maybe (U.Ptr mutIn))
     -> U.ListOf ('Mut s) (Maybe (U.Ptr ('Mut s)))
     -> m (U.ListOf ('Mut s) (Maybe (U.Ptr ('Mut s))))
+{-# SPECIALIZE copyCanonicalPtrList
+    :: U.ListOf 'Const (Maybe (U.Ptr 'Const))
+    -> U.ListOf ('Mut RealWorld) (Maybe (U.Ptr ('Mut RealWorld)))
+    -> LimitT IO (U.ListOf ('Mut RealWorld) (Maybe (U.Ptr ('Mut RealWorld))))
+    #-}
+{-# SPECIALIZE copyCanonicalPtrList
+    :: U.ListOf ('Mut RealWorld) (Maybe (U.Ptr ('Mut RealWorld)))
+    -> U.ListOf ('Mut RealWorld) (Maybe (U.Ptr ('Mut RealWorld)))
+    -> LimitT IO (U.ListOf ('Mut RealWorld) (Maybe (U.Ptr ('Mut RealWorld))))
+    #-}
 copyCanonicalPtrList listIn listOut = do
     for_ [0..U.length listIn - 1] $ \i -> do
         ptrIn <- U.index i listIn
@@ -157,6 +193,16 @@
     => U.ListOf mutIn (U.Struct mutIn)
     -> M.Message ('Mut s)
     -> m (U.ListOf ('Mut s) (U.Struct ('Mut s)))
+{-# SPECIALIZE cloneCanonicalStructList
+    :: U.ListOf 'Const (U.Struct 'Const)
+    -> M.Message ('Mut RealWorld)
+    -> LimitT IO (U.ListOf ('Mut RealWorld) (U.Struct ('Mut RealWorld)))
+    #-}
+{-# SPECIALIZE cloneCanonicalStructList
+    :: U.ListOf ('Mut RealWorld) (U.Struct ('Mut RealWorld))
+    -> M.Message ('Mut RealWorld)
+    -> LimitT IO (U.ListOf ('Mut RealWorld) (U.Struct ('Mut RealWorld)))
+    #-}
 cloneCanonicalStructList listIn msgOut = do
     (nWords, nPtrs) <- findCanonicalListSectionCounts listIn
     listOut <- U.allocCompositeList msgOut nWords nPtrs (U.length listIn)
@@ -168,6 +214,16 @@
     => U.ListOf mutIn (U.Struct mutIn)
     -> U.ListOf ('Mut s) (U.Struct ('Mut s))
     -> m ()
+{-# SPECIALIZE copyCanonicalStructList
+    :: U.ListOf 'Const (U.Struct 'Const)
+    -> U.ListOf ('Mut RealWorld) (U.Struct ('Mut RealWorld))
+    -> LimitT IO ()
+    #-}
+{-# SPECIALIZE copyCanonicalStructList
+    :: U.ListOf ('Mut RealWorld) (U.Struct ('Mut RealWorld))
+    -> U.ListOf ('Mut RealWorld) (U.Struct ('Mut RealWorld))
+    -> LimitT IO ()
+    #-}
 copyCanonicalStructList listIn listOut =
     for_ [0..U.length listIn - 1] $ \i -> do
         structIn <- U.index i listIn
@@ -177,6 +233,12 @@
 findCanonicalListSectionCounts
     :: U.ReadCtx m mut
     => U.ListOf mut (U.Struct mut) -> m (Word16, Word16)
+{-# SPECIALIZE findCanonicalListSectionCounts
+    :: U.ListOf 'Const (U.Struct 'Const) -> LimitT IO (Word16, Word16)
+    #-}
+{-# SPECIALIZE findCanonicalListSectionCounts
+    :: U.ListOf ('Mut RealWorld) (U.Struct ('Mut RealWorld)) -> LimitT IO (Word16, Word16)
+    #-}
 findCanonicalListSectionCounts list = go 0 0 0 where
     go i !nWords !nPtrs
         | i >= U.length list =
@@ -185,3 +247,70 @@
             struct <- U.index i list
             (nWords', nPtrs') <- findCanonicalSectionCounts struct
             go (i+1) (max nWords nWords') (max nPtrs nPtrs')
+
+
+{-
+do
+    -- Generate specializations for various functions above.
+    --
+    -- TODO: Figure out why this version doesn't seem to be taking
+    -- effect; having the explicit SPECIALIZE pragmas written out
+    -- literally results in a 15-20% speedup vs. trying to generate
+    -- them with template haskell. But ew.
+    --
+    -- TODO(cleanup): find some way to group the signature & the specialization together
+    -- without duplicating everything.
+    let specializations :: [(TH.Name, [TH.TypeQ])]
+        specializations =
+            [ ( 'copyCanonicalStructList
+              , each $ \mutIn mutOut m ->
+                    [t| U.ListOf $mutIn (U.Struct $mutIn)
+                        -> U.ListOf $mutOut (U.Struct $mutOut) -> $m ()
+                    |]
+              )
+            , ( 'copyCanonicalDataList
+              , each $ \mutIn mutOut m -> do
+                    a <- pure . TH.VarT <$> TH.newName "a"
+                    [t| U.ListOf $mutIn $a -> U.ListOf $mutOut $a -> $m (U.ListOf $mutOut $a) |]
+              )
+            , ( 'copyCanonicalPtrList
+              , each $ \mutIn mutOut m ->
+                    [t| U.ListOf $mutIn (Maybe (U.Ptr $mutIn))
+                        -> U.ListOf $mutOut (Maybe (U.Ptr $mutOut))
+                        -> $m (U.ListOf $mutOut (Maybe (U.Ptr $mutOut)))
+                    |]
+              )
+            , ( 'cloneCanonicalPtr
+              , each $ \mutIn mutOut m ->
+                    [t| Maybe (U.Ptr $mutIn) -> M.Message $mutOut -> $m (Maybe (U.Ptr $mutOut)) |]
+              )
+            , ( 'cloneCanonicalList
+              , each $ \mutIn mutOut m ->
+                    [t| U.List $mutIn -> M.Message $mutOut -> $m (U.List $mutOut) |]
+              )
+            , ( 'cloneCanonicalStruct
+              , each $ \mutIn mutOut m ->
+                    [t| U.Struct $mutIn -> M.Message $mutOut -> $m (U.Struct $mutOut) |]
+              )
+            , ( 'copyCanonicalStruct
+              , each $ \mutIn mutOut m ->
+                    [t| U.Struct $mutIn -> U.Struct $mutOut -> $m () |]
+              )
+            ]
+        each f = do
+            let s = pure $ TH.VarT (TH.mkName "s")
+            (m, s) <- [ ( [t| LimitT IO |], [t| RealWorld |] )
+                      , ( [t| PureBuilder $s |], s )
+                      ]
+            mutIn <- [ [t| 'Const |], [t| 'Mut $s |] ]
+            pure $ f mutIn [t| 'Mut $s |] m
+{-
+            map
+                (\t -> f t [t| 'Mut RealWorld |] [t| LimitT IO |])
+                [ [t| 'Const |], [t| 'Mut RealWorld |] ]
+-}
+    concat <$> for specializations (\(name, types) -> do
+        for types $ \mkType -> do
+            t <- mkType
+            pure $ TH.PragmaD $ TH.SpecialiseP name t Nothing TH.AllPhases)
+-}
diff --git a/lib/Capnp/Classes.hs b/lib/Capnp/Classes.hs
--- a/lib/Capnp/Classes.hs
+++ b/lib/Capnp/Classes.hs
@@ -54,10 +54,10 @@
     , castWord64ToDouble
     )
 
-import Capnp.Bits    (Word1 (..))
+import Capnp.Bits    (Word1(..))
 import Capnp.Errors  (Error(SchemaViolationError))
-import Capnp.Message (Mutability (..))
-import Capnp.Untyped (Cap, ListOf, Ptr (..), ReadCtx, Struct, messageDefault)
+import Capnp.Message (Mutability(..))
+import Capnp.Untyped (Cap, ListOf, Ptr(..), ReadCtx, Struct, messageDefault)
 
 import qualified Capnp.Message as M
 import qualified Capnp.Untyped as U
diff --git a/lib/Capnp/Convert.hs b/lib/Capnp/Convert.hs
--- a/lib/Capnp/Convert.hs
+++ b/lib/Capnp/Convert.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE DataKinds        #-}
+{-# LANGUAGE ExplicitForAll   #-}
 {-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE TypeFamilies     #-}
 {-|
@@ -28,6 +29,15 @@
     , valueToBS
     , valueToLBS
     , valueToMsg
+
+    -- new API
+    , msgToRaw
+    , msgToParsed
+    , parsedToRaw
+    , parsedToMsg
+    , parsedToBuilder
+    , parsedToBS
+    , parsedToLBS
     ) where
 
 import Control.Monad       ((>=>))
@@ -41,12 +51,15 @@
 import Capnp.Classes
 
 import Capnp.Bits           (WordCount)
-import Capnp.Message        (Mutability (..))
+import Capnp.Message        (Mutability(..))
+import Capnp.New.Classes    (Parse(encode, parse))
 import Capnp.TraversalLimit (LimitT, MonadLimit, evalLimitT)
 import Codec.Capnp          (getRoot, setRoot)
 import Data.Mutable         (freeze)
 
 import qualified Capnp.Message as M
+import qualified Capnp.Repr    as R
+import qualified Capnp.Untyped as U
 
 -- | Compute a reasonable limit based on the size of a message. The limit
 -- is the total number of words in all of the message's segments, multiplied
@@ -122,3 +135,39 @@
     ret <- cerialize msg val
     setRoot ret
     pure msg
+
+-- | Get the root pointer of a message, wrapped as a 'R.Raw'.
+msgToRaw :: forall a m mut. (U.ReadCtx m mut, R.IsStruct a) => M.Message mut -> m (R.Raw mut a)
+msgToRaw = fmap R.Raw . U.rootPtr
+
+-- | Get the root pointer of a message, as a parsed ADT.
+msgToParsed :: forall a m pa. (U.ReadCtx m 'Const, R.IsStruct a, Parse a pa) => M.Message 'Const -> m pa
+msgToParsed msg = msgToRaw msg >>= parse
+
+-- | Serialize the parsed form of a struct into its 'R.Raw' form, and make it the root
+-- of its message.
+parsedToRaw :: forall a m pa s. (U.RWCtx m s, R.IsStruct a, Parse a pa) => pa -> m (R.Raw ('Mut s) a)
+parsedToRaw p = do
+    msg <- M.newMessage Nothing
+    value@(R.Raw struct) <- encode msg p
+    U.setRoot struct
+    pure value
+
+-- | Serialize the parsed form of a struct into a message with that value as its
+-- root, returning the message.
+parsedToMsg :: forall a m pa s. (U.RWCtx m s, R.IsStruct a, Parse a pa) => pa -> m (M.Message ('Mut s))
+parsedToMsg p = do
+    root <- parsedToRaw p
+    pure $ U.message root
+
+-- | Serialize the parsed form of a struct and return it as a 'BB.Builder'
+parsedToBuilder :: forall a m pa s. (U.RWCtx m s, R.IsStruct a, Parse a pa) => pa -> m BB.Builder
+parsedToBuilder p = msgToBuilder <$> (parsedToMsg p >>= freeze)
+
+-- | Serialize the parsed form of a struct and return it as a lazy 'LBS.ByteString'
+parsedToLBS :: forall a m pa s. (U.RWCtx m s, R.IsStruct a, Parse a pa) => pa -> m LBS.ByteString
+parsedToLBS = fmap BB.toLazyByteString . parsedToBuilder
+
+-- | Serialize the parsed form of a struct and return it as a strict 'BS.ByteString'
+parsedToBS :: forall a m pa s. (U.RWCtx m s, R.IsStruct a, Parse a pa) => pa -> m BS.ByteString
+parsedToBS = fmap LBS.toStrict . parsedToLBS
diff --git a/lib/Capnp/Fields.hs b/lib/Capnp/Fields.hs
new file mode 100644
--- /dev/null
+++ b/lib/Capnp/Fields.hs
@@ -0,0 +1,128 @@
+{-# LANGUAGE AllowAmbiguousTypes    #-}
+{-# LANGUAGE DataKinds              #-}
+{-# LANGUAGE FlexibleContexts       #-}
+{-# LANGUAGE FlexibleInstances      #-}
+{-# LANGUAGE FunctionalDependencies #-}
+{-# LANGUAGE GADTs                  #-}
+{-# LANGUAGE ScopedTypeVariables    #-}
+{-# LANGUAGE TypeApplications       #-}
+{-# LANGUAGE TypeFamilies           #-}
+{-# LANGUAGE UndecidableInstances   #-}
+-- | Module: Capnp.Fields
+-- Description: Support for working with struct fields
+module Capnp.Fields
+    ( HasField(..)
+    , Field(..)
+    , FieldLoc(..)
+    , DataFieldLoc(..)
+    , FieldKind(..)
+    , HasUnion(..)
+    , Variant(..)
+    , HasVariant(..)
+    ) where
+
+
+import Capnp.Bits
+import Data.Word
+
+import GHC.OverloadedLabels (IsLabel(..))
+import GHC.TypeLits         (Symbol)
+
+import qualified Capnp.Classes     as C
+import qualified Capnp.Message     as M
+import qualified Capnp.New.Classes as NC
+import qualified Capnp.Repr        as R
+import qualified Capnp.Untyped     as U
+
+-- | What sort of field is this? This corresponds to the slot/group variants
+-- in the @Field@ type in schema.capnp. Mostly used at the type level with
+-- the @DataKinds@ extension.
+--
+-- (Note that this has nothing to do with kinds in the usual type system sense
+-- of the word).
+data FieldKind
+    = Slot
+    -- ^ The field is a normal slot; it can be read and written as an
+    -- individual value.
+    | Group
+    -- ^ The field is a group. Since this shares space with its parent struct
+    -- access patterns are a bit different.
+    deriving(Show, Read, Eq)
+
+-- | @'Field' k a b@ is a first-class representation of a field of type @b@ within
+-- an @a@, where @a@ must be a struct type.
+newtype Field (k :: FieldKind) a b = Field (FieldLoc k (R.ReprFor b))
+
+-- | The location of a field within a message.
+data FieldLoc (k :: FieldKind) (r :: R.Repr) where
+    GroupField :: FieldLoc 'Group ('R.Ptr ('Just 'R.Struct))
+    PtrField :: R.IsPtrRepr a => Word16 -> FieldLoc 'Slot ('R.Ptr a)
+    DataField :: C.IsWord (R.UntypedData a) => DataFieldLoc a -> FieldLoc 'Slot ('R.Data a)
+    VoidField :: FieldLoc 'Slot ('R.Data 'R.Sz0)
+
+-- | The location of a data (non-pointer) field.
+data DataFieldLoc (sz :: R.DataSz) = DataFieldLoc
+    { shift        :: !BitCount
+    , index        :: !Word16
+    , mask         :: !Word64
+    , defaultValue :: !Word64
+    }
+
+-- | An instance of 'HasUnion' indicates that the given type is a capnproto struct
+-- (or group) with an anonymous union.
+class R.IsStruct a => HasUnion a where
+    -- | 'unionField' is a field holding the union's tag.
+    unionField :: Field 'Slot a Word16
+
+    -- | 'Which' is the abstract capnproto type of the union itself. Like
+    -- generated struct types (in this case @a@), this is typically
+    -- uninhabitied, and used to define instances and/or act as a phantom type.
+    data Which a
+
+    -- | Concrete view into a union embedded in a message. This will be a sum
+    -- type with other 'Raw' values as arguments.
+    data RawWhich (mut :: M.Mutability) a
+
+    -- | Helper used in generated code to extract a 'RawWhich' from its
+    -- surrounding struct.
+    internalWhich :: U.ReadCtx m mut => Word16 -> R.Raw mut a -> m (RawWhich mut a)
+
+type instance R.ReprFor (Which a) = 'R.Ptr ('Just 'R.Struct)
+
+instance (NC.Allocate a, HasUnion a, R.IsStruct (Which a)) => NC.Allocate (Which a) where
+    type AllocHint (Which a) = NC.AllocHint a
+    new hint msg = do
+        R.Raw struct <- NC.new @a hint msg
+        pure (R.Raw struct)
+
+instance
+    ( NC.Allocate (Which a)
+    , NC.AllocHint (Which a) ~ ()
+    , NC.Parse (Which a) p
+    ) => NC.EstimateAlloc (Which a) p
+
+-- | @'Variant' k a b@ is a first-class representation of a variant of @a@'s
+-- anonymous union, whose argument is of type @b@.
+data Variant (k :: FieldKind) a b = Variant
+    { field    :: !(Field k a b)
+    , tagValue :: !Word16
+    }
+
+-- | An instance @'HasField' name k a b@ indicates that the struct type @a@
+-- has a field named @name@ with type @b@ (with @k@ being the 'FieldKind' for
+-- the field). The generated code includes instances of this for each field
+-- in the schema.
+class R.IsStruct a => HasField (name :: Symbol) k a b | a name -> k b where
+    fieldByLabel :: Field k a b
+
+instance HasField name k a b => IsLabel name (Field k a b) where
+    fromLabel = fieldByLabel @name @k @a @b
+
+-- | An instance @'HasVariant name k a b@ indicates that the struct type @a@
+-- has an anonymous union with a variant named @name@, whose argument is of type
+-- @b@.
+class HasUnion a => HasVariant (name :: Symbol) k a b | a name -> k b where
+    variantByLabel :: Variant k a b
+
+instance HasVariant name k a b => IsLabel name (Variant k a b) where
+    fromLabel = variantByLabel @name @k @a @b
diff --git a/lib/Capnp/GenHelpers/New.hs b/lib/Capnp/GenHelpers/New.hs
new file mode 100644
--- /dev/null
+++ b/lib/Capnp/GenHelpers/New.hs
@@ -0,0 +1,108 @@
+{-# LANGUAGE ConstraintKinds       #-}
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE FlexibleContexts      #-}
+{-# LANGUAGE NamedFieldPuns        #-}
+{-# LANGUAGE ScopedTypeVariables   #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Capnp.GenHelpers.New
+    ( dataField
+    , ptrField
+    , groupField
+    , voidField
+    , readVariant
+    , Mutability(..)
+    , TypeParam
+    , newStruct
+    , parseField
+    , encodeField
+    , encodeVariant
+    , initVariant
+    , unionWhich
+    , readField
+    , structUnion
+    , unionStruct
+    , parseEnum
+    , encodeEnum
+    , parseCap
+    , encodeCap
+    , getPtrConst
+    , module F
+    , module Capnp.Repr.Methods
+    ) where
+
+import           Capnp.Bits
+import qualified Capnp.Classes      as C
+import           Capnp.Fields       as F
+import           Capnp.GenHelpers   (getPtrConst)
+import           Capnp.Message      (Mutability(..))
+import qualified Capnp.Message      as M
+import           Capnp.New
+    ( TypeParam
+    , encodeField
+    , encodeVariant
+    , initVariant
+    , parseField
+    , readField
+    , structUnion
+    , unionStruct
+    , unionWhich
+    )
+import qualified Capnp.New.Basics   as NB
+import qualified Capnp.New.Classes  as NC
+import qualified Capnp.Repr         as R
+import           Capnp.Repr.Methods
+import qualified Capnp.Untyped      as U
+import           Data.Bits
+import           Data.Word
+
+dataField
+    :: forall b a sz.
+    ( R.ReprFor b ~ 'R.Data sz
+    , C.IsWord (R.UntypedData sz)
+    )
+    => BitCount -> Word16 -> BitCount -> Word64 -> F.Field 'F.Slot a b
+dataField shift index nbits defaultValue = F.Field $ F.DataField @sz F.DataFieldLoc
+    { shift
+    , index
+    , mask = ((1 `shiftL` fromIntegral nbits) - 1) `shiftL` fromIntegral shift
+    , defaultValue
+    }
+
+ptrField :: forall a b. R.IsPtr b => Word16 -> F.Field 'F.Slot a b
+ptrField = F.Field . F.PtrField @(R.PtrReprFor (R.ReprFor b))
+
+groupField :: (R.ReprFor b ~ 'R.Ptr ('Just 'R.Struct)) => F.Field 'F.Group a b
+groupField = F.Field F.GroupField
+
+voidField :: (R.ReprFor b ~ 'R.Data 'R.Sz0) => F.Field 'F.Slot a b
+voidField = F.Field F.VoidField
+
+-- | Like 'readField', but accepts a variant. Warning: *DOES NOT CHECK* that the
+-- variant is the one that is set. This should only be used by generated code.
+readVariant
+    ::  forall k a b mut m.
+        ( R.IsStruct a
+        , U.ReadCtx m mut
+        )
+    => F.Variant k a b -> R.Raw mut a -> m (R.Raw mut b)
+readVariant F.Variant{field} = readField field
+
+newStruct :: forall a m s. (U.RWCtx m s, NC.TypedStruct a) => () -> M.Message ('Mut s) -> m (R.Raw ('Mut s) a)
+newStruct () msg = R.Raw . R.fromRaw <$> NC.new @NB.AnyStruct (NC.numStructWords @a, NC.numStructPtrs @a) msg
+
+
+parseEnum :: (R.ReprFor a ~ 'R.Data 'R.Sz16, Enum a, Applicative m)
+    => R.Raw 'Const a -> m a
+parseEnum (R.Raw n) = pure $ toEnum $ fromIntegral n
+
+encodeEnum :: forall a m s. (R.ReprFor a ~ 'R.Data 'R.Sz16, Enum a, U.RWCtx m s)
+    => M.Message ('Mut s) -> a -> m (R.Raw ('Mut s) a)
+encodeEnum _msg value = pure $ R.Raw $ fromIntegral $ fromEnum @a value
+
+parseCap :: (R.IsCap a, U.ReadCtx m 'Const) => R.Raw 'Const a -> m (Client a)
+parseCap (R.Raw cap) = Client <$> U.getClient cap
+
+encodeCap :: (R.IsCap a, U.RWCtx m s) => M.Message ('Mut s) -> Client a -> m (R.Raw ('Mut s) a)
+encodeCap msg (Client c) = R.Raw <$> U.appendCap msg c
diff --git a/lib/Capnp/GenHelpers/Pure.hs b/lib/Capnp/GenHelpers/Pure.hs
--- a/lib/Capnp/GenHelpers/Pure.hs
+++ b/lib/Capnp/GenHelpers/Pure.hs
@@ -27,7 +27,7 @@
 import Data.Maybe (fromJust)
 
 import Capnp.Classes        (cerializeBasicVec, cerializeCompositeVec)
-import Capnp.Message        (Mutability (..))
+import Capnp.Message        (Mutability(..))
 import Capnp.TraversalLimit (evalLimitT)
 import Codec.Capnp          (getRoot)
 
diff --git a/lib/Capnp/GenHelpers/Rpc.hs b/lib/Capnp/GenHelpers/Rpc.hs
--- a/lib/Capnp/GenHelpers/Rpc.hs
+++ b/lib/Capnp/GenHelpers/Rpc.hs
@@ -12,11 +12,11 @@
 module Capnp.GenHelpers.Rpc where
 
 import Control.Exception.Safe (fromException, tryAny)
-import Control.Monad.Catch    (MonadThrow (..))
+import Control.Monad.Catch    (MonadThrow(..))
 import Data.Default           (def)
 
-import Capnp.Classes        (Decerialize (..), FromPtr (..))
-import Capnp.Message        (Mutability (..))
+import Capnp.Classes        (Decerialize(..), FromPtr(..))
+import Capnp.Message        (Mutability(..))
 import Capnp.TraversalLimit (evalLimitT)
 
 import qualified Capnp.Errors          as E
diff --git a/lib/Capnp/IO.hs b/lib/Capnp/IO.hs
--- a/lib/Capnp/IO.hs
+++ b/lib/Capnp/IO.hs
@@ -5,9 +5,12 @@
 This module provides utilities for reading and writing values to and
 from file 'Handle's.
 -}
-{-# LANGUAGE BangPatterns     #-}
-{-# LANGUAGE DataKinds        #-}
-{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE BangPatterns        #-}
+{-# LANGUAGE DataKinds           #-}
+{-# LANGUAGE FlexibleContexts    #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE TypeApplications    #-}
+{-# LANGUAGE TypeFamilies        #-}
 module Capnp.IO
     ( hGetValue
     , getValue
@@ -21,6 +24,16 @@
     , M.getMsg
     , M.hPutMsg
     , M.putMsg
+
+    , hGetParsed
+    , sGetParsed
+    , getParsed
+    , hPutParsed
+    , sPutParsed
+    , putParsed
+    , hGetRaw
+    , getRaw
+    , sGetRaw
     ) where
 
 import Data.Bits
@@ -32,18 +45,22 @@
 import System.IO                 (Handle, stdin, stdout)
 import System.IO.Error           (eofErrorType, mkIOError)
 
-import qualified Data.ByteString as BS
+import qualified Data.ByteString         as BS
+import qualified Data.ByteString.Builder as BB
 
 import Capnp.Bits           (WordCount, wordsToBytes)
 import Capnp.Classes
-    (Cerialize (..), Decerialize (..), FromStruct (..), ToStruct (..))
-import Capnp.Convert        (msgToLBS, valueToLBS)
-import Capnp.Message        (Mutability (..))
+    (Cerialize(..), Decerialize(..), FromStruct(..), ToStruct(..))
+import Capnp.Convert
+    (msgToLBS, msgToParsed, msgToRaw, parsedToBuilder, parsedToLBS, valueToLBS)
+import Capnp.Message        (Mutability(..))
+import Capnp.New.Classes    (Parse)
 import Capnp.TraversalLimit (evalLimitT)
 import Codec.Capnp          (getRoot, setRoot)
-import Data.Mutable         (Thaw (..))
+import Data.Mutable         (Thaw(..))
 
 import qualified Capnp.Message as M
+import qualified Capnp.Repr    as R
 
 -- | @'hGetValue' limit handle@ reads a message from @handle@, returning its root object.
 -- @limit@ is used as both a cap on the size of a message which may be read and, for types
@@ -123,3 +140,57 @@
 sPutValue socket value = do
     lbs <- evalLimitT maxBound $ valueToLBS value
     sendLazy socket lbs
+
+-- | Read a struct from the handle in its parsed form, using the supplied
+-- read limit.
+hGetParsed :: forall a pa. (R.IsStruct a, Parse a pa) => Handle -> WordCount -> IO pa
+hGetParsed handle limit = do
+    msg <- M.hGetMsg handle limit
+    evalLimitT limit $ msgToParsed @a msg
+
+-- | Read a struct from the socket in its parsed form, using the supplied
+-- read limit.
+sGetParsed :: forall a pa. (R.IsStruct a, Parse a pa) => Socket -> WordCount -> IO pa
+sGetParsed socket limit = do
+    msg <- sGetMsg socket limit
+    evalLimitT limit $ msgToParsed @a msg
+
+-- | Read a struct from stdin in its parsed form, using the supplied
+-- read limit.
+getParsed :: (R.IsStruct a, Parse a pa) => WordCount -> IO pa
+getParsed = hGetParsed stdin
+
+-- | Write the parsed form of a struct to the handle
+hPutParsed :: (R.IsStruct a, Parse a pa) => Handle -> pa -> IO ()
+hPutParsed h value = do
+    bb <- evalLimitT maxBound $ parsedToBuilder value
+    BB.hPutBuilder h bb
+
+-- | Write the parsed form of a struct to stdout
+putParsed :: (R.IsStruct a, Parse a pa) => pa -> IO ()
+putParsed = hPutParsed stdout
+
+-- | Write the parsed form of a struct to the socket.
+sPutParsed :: (R.IsStruct a, Parse a pa) => Socket -> pa -> IO ()
+sPutParsed socket value  = do
+    lbs <- evalLimitT maxBound $ parsedToLBS value
+    sendLazy socket lbs
+
+-- | Read a struct from the handle using the supplied read limit,
+-- and return its root pointer.
+hGetRaw :: R.IsStruct a => Handle -> WordCount -> IO (R.Raw 'Const a)
+hGetRaw h limit = do
+    msg <- M.hGetMsg h limit
+    evalLimitT limit $ msgToRaw msg
+
+-- | Read a struct from stdin using the supplied read limit,
+-- and return its root pointer.
+getRaw :: R.IsStruct a => WordCount -> IO (R.Raw 'Const a)
+getRaw = hGetRaw stdin
+
+-- | Read a struct from the socket using the supplied read limit,
+-- and return its root pointer.
+sGetRaw :: R.IsStruct a => Socket -> WordCount -> IO (R.Raw 'Const a)
+sGetRaw socket limit = do
+    msg <- sGetMsg socket limit
+    evalLimitT limit $ msgToRaw msg
diff --git a/lib/Capnp/Message.hs b/lib/Capnp/Message.hs
--- a/lib/Capnp/Message.hs
+++ b/lib/Capnp/Message.hs
@@ -78,18 +78,18 @@
 import Data.Bits (shiftL)
 
 import Control.Monad             (void, when, (>=>))
-import Control.Monad.Catch       (MonadThrow (..))
+import Control.Monad.Catch       (MonadThrow(..))
 import Control.Monad.Primitive   (PrimMonad, PrimState, stToPrim)
 import Control.Monad.State       (evalStateT, get, put)
 import Control.Monad.Trans.Class (lift)
 import Control.Monad.Writer      (execWriterT, tell)
-import Data.ByteString.Internal  (ByteString (..))
+import Data.ByteString.Internal  (ByteString(..))
 import Data.Bytes.Get            (getWord32le, runGetS)
 import Data.Kind                 (Type)
 import Data.Maybe                (fromJust)
 import Data.Primitive            (MutVar, newMutVar, readMutVar, writeMutVar)
-import Data.Word                 (Word32, Word64)
-import System.Endian             (fromLE64, toLE64)
+import Data.Word                 (Word32, Word64, byteSwap64)
+import GHC.ByteOrder             (ByteOrder(..), targetByteOrder)
 import System.IO                 (Handle, stdin, stdout)
 
 import qualified Data.ByteString              as BS
@@ -100,19 +100,26 @@
 import qualified Data.Vector.Storable         as SV
 import qualified Data.Vector.Storable.Mutable as SMV
 
-import Capnp.Address        (WordAddr (..))
-import Capnp.Bits           (WordCount (..), hi, lo)
+import Capnp.Address        (WordAddr(..))
+import Capnp.Bits           (WordCount(..), hi, lo)
 import Capnp.TraversalLimit (LimitT, MonadLimit(invoice), evalLimitT)
-import Data.Mutable         (Mutable (..))
+import Data.Mutable         (Mutable(..))
 import Internal.AppendVec   (AppendVec)
 
 import qualified Capnp.Errors       as E
 import qualified Internal.AppendVec as AppendVec
 
+swapIfBE64, fromLE64, toLE64 :: Word64 -> Word64
+swapIfBE64 = case targetByteOrder of
+    LittleEndian -> id
+    BigEndian    -> byteSwap64
+fromLE64 = swapIfBE64
+toLE64 = swapIfBE64
 
+
 -- | The maximum size of a segment supported by this libarary, in words.
-maxSegmentSize :: Int
-maxSegmentSize = 1 `shiftL` 28 -- 2 GiB.
+maxSegmentSize :: WordCount
+maxSegmentSize = WordCount $ 1 `shiftL` 28 -- 2 GiB.
 
 -- | The maximum number of segments allowed in a message by this library.
 maxSegments :: Int
@@ -120,9 +127,13 @@
 
 -- | The maximum number of capabilities allowed in a message by this library.
 maxCaps :: Int
-maxCaps = 512
+maxCaps = 16 * 1024
 
 
+-- | 'Mutability' is used as a type parameter (with the DataKinds extension)
+-- to indicate the mutability of some values in this library; 'Const' denotes
+-- an immutable value, while @'Mut' s@ denotes a value that can be mutated
+-- in the scope of the state token @s@.
 data Mutability = Const | Mut Type
 
 -- | A pointer to a location in a message. This encodes the same
@@ -139,6 +150,7 @@
     , pAddr    :: !WordAddr
     }
 
+-- | A Cap'n Proto message, parametrized over its mutability.
 data Message (mut :: Mutability) where
     MsgConst :: !ConstMsg -> Message 'Const
     MsgMut :: !(MutMsg s) -> Message ('Mut s)
@@ -147,6 +159,7 @@
     (MsgConst x) == (MsgConst y) = x == y
     (MsgMut x) == (MsgMut y)     = x == y
 
+-- | A segment in a Cap'n Proto message.
 data Segment (mut :: Mutability) where
     SegConst :: !ConstSegment -> Segment 'Const
     SegMut :: !(MutSegment s) -> Segment ('Mut s)
@@ -455,9 +468,9 @@
     SMV.write vec i (toLE64 val)
 
 -- | @'newSegment' msg sizeHint@ allocates a new, initially empty segment in
--- @msg@ with a capacity of @sizeHint@. It returns the a pair of the segment
--- number and the segment itself. Amortized O(1).
-newSegment :: WriteCtx m s => Message ('Mut s) -> Int -> m (Int, Segment ('Mut s))
+-- @msg@ with a capacity of @sizeHint@ words. It returns the a pair of the
+-- segment number and the segment itself. Amortized O(1).
+newSegment :: WriteCtx m s => Message ('Mut s) -> WordCount -> m (Int, Segment ('Mut s))
 newSegment msg@(MsgMut MutMsg{mutSegs}) sizeHint = do
     when (sizeHint > maxSegmentSize) $ throwM E.SizeError
     -- the next segment number will be equal to the *current* number of
@@ -469,7 +482,7 @@
     segs <- AppendVec.grow segs 1 maxSegments
     writeMutVar mutSegs segs
 
-    vec <- SMV.new sizeHint
+    vec <- SMV.new (fromIntegral sizeHint)
     used <- newMutVar 0
     let newSeg = SegMut MutSegment{vec, used}
     setSegment msg segIndex newSeg
@@ -505,8 +518,8 @@
 -- to the segment. The latter is redundant information, but this is used
 -- in low-level code where this can improve performance.
 alloc :: WriteCtx m s => Message ('Mut s) -> WordCount -> m (WordPtr ('Mut s))
-alloc msg size@(WordCount sizeInt) = do
-    when (sizeInt > maxSegmentSize) $
+alloc msg size = do
+    when (size > maxSegmentSize) $
         throwM E.SizeError
     segIndex <- pred <$> numSegs msg
     existing <- allocInSeg msg segIndex size
@@ -516,9 +529,9 @@
             -- Not enough space in the current segment; allocate a new one.
             -- the new segment's size should match the total size of existing segments
             -- but `maxSegmentSize` bounds how large it can get.
-            WordCount totalAllocation <- sum <$>
+            totalAllocation <- sum <$>
                 traverse (getSegment msg >=> numWords) [0..segIndex]
-            ( newSegIndex, _ ) <- newSegment msg (min (max totalAllocation sizeInt) maxSegmentSize)
+            ( newSegIndex, _ ) <- newSegment msg (min (max totalAllocation size) maxSegmentSize)
             -- This is guaranteed to succeed, since we just made a segment with
             -- at least size available space:
             fromJust <$> allocInSeg msg newSegIndex size
@@ -538,7 +551,7 @@
 newMessage Nothing = newMessage (Just 32)
     -- The default value above is somewhat arbitrary, and just a guess -- we
     -- should do some profiling to figure out what a good value is here.
-newMessage (Just (WordCount sizeHint)) = do
+newMessage (Just sizeHint) = do
     mutSegs <- MV.new 1 >>= newMutVar . AppendVec.makeEmpty
     mutCaps <- MV.new 0 >>= newMutVar . AppendVec.makeEmpty
     let msg = MsgMut MutMsg{mutSegs,mutCaps}
diff --git a/lib/Capnp/New.hs b/lib/Capnp/New.hs
new file mode 100644
--- /dev/null
+++ b/lib/Capnp/New.hs
@@ -0,0 +1,55 @@
+-- | Module: Capnp.New
+-- Description: Re-export commonly used things from elsewhere in the library.
+module Capnp.New
+    ( module X
+    , Parsed
+
+    -- * Working with raw values
+    , R.Raw
+
+    -- ** Working with raw lists
+    , R.List
+    , R.index
+    , R.setIndex
+    , R.length
+
+    -- * Working with fields
+    , F.Field
+    , F.FieldKind
+    , F.HasField(..)
+    , F.HasUnion(..)
+    , F.HasVariant(..)
+
+    -- * Working with messages
+    , Message.Message
+    , Message.Segment
+    , Message.Mutability(..)
+    , Message.MonadReadMessage(..)
+    , Message.newMessage
+    , Message.fromByteString
+    , Message.toByteString
+
+    -- * Building messages in pure code
+    , PureBuilder
+    , createPure
+
+    -- * Re-exported from "Data.Default", for convienence.
+    , def
+    ) where
+
+-- TODO: be more intentional about the ordering of the stuff we're
+-- currently exposing as X, so the haddocks are clearer.
+
+import           Capnp.Convert         as X
+import qualified Capnp.Fields          as F
+import           Capnp.IO              as X
+import qualified Capnp.Message         as Message
+import           Capnp.New.Accessors   as X
+import           Capnp.New.Classes     as X hiding (Parsed)
+import           Capnp.New.Constraints as X
+import qualified Capnp.Repr            as R
+import           Capnp.Repr.Methods    as X
+import           Capnp.Repr.Parsed     (Parsed)
+import           Capnp.TraversalLimit  as X
+import           Data.Default          (def)
+import           Internal.BuildPure    (PureBuilder, createPure)
diff --git a/lib/Capnp/New/Accessors.hs b/lib/Capnp/New/Accessors.hs
new file mode 100644
--- /dev/null
+++ b/lib/Capnp/New/Accessors.hs
@@ -0,0 +1,223 @@
+{-# LANGUAGE ConstraintKinds       #-}
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE FlexibleContexts      #-}
+{-# LANGUAGE NamedFieldPuns        #-}
+{-# LANGUAGE RankNTypes            #-}
+{-# LANGUAGE ScopedTypeVariables   #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+-- | Module: Capnp.New.Accessors
+-- Description: Functions for accessing parts of messaages.
+module Capnp.New.Accessors
+    ( readField
+    , getField
+    , setField
+    , newField
+    , hasField
+    , encodeField
+    , parseField
+    , setVariant
+    , initVariant
+    , encodeVariant
+    , structWhich
+    , unionWhich
+    , structUnion
+    , unionStruct
+    ) where
+
+
+import qualified Capnp.Fields         as F
+import           Capnp.Message        (Mutability(..))
+import qualified Capnp.New.Classes    as C
+import qualified Capnp.Repr           as R
+import           Capnp.TraversalLimit (evalLimitT)
+import qualified Capnp.Untyped        as U
+import           Data.Bits
+import           Data.Maybe           (fromJust, isJust)
+import           Data.Word
+import           GHC.Prim             (coerce)
+
+{-# INLINE readField #-}
+-- | Read the value of a field of a struct.
+readField
+    ::  forall k a b mut m.
+        ( R.IsStruct a
+        , U.ReadCtx m mut
+        )
+    => F.Field k a b
+    -> R.Raw mut a
+    -> m (R.Raw mut b)
+readField (F.Field field) (R.Raw struct) =
+    case field of
+        F.DataField F.DataFieldLoc{ shift, index, mask, defaultValue } -> do
+            word <- U.getData (fromIntegral index) struct
+            pure $ R.Raw $ C.fromWord $ ((word .&. mask) `shiftR` fromIntegral shift) `xor` defaultValue
+        F.PtrField index ->
+            U.getPtr (fromIntegral index) struct >>= readPtrField
+        F.GroupField ->
+            pure $ R.Raw struct
+        F.VoidField ->
+            pure $ R.Raw ()
+  where
+    -- This is broken out because the type checker needs some extra help:
+    readPtrField
+        :: forall pr.
+        ( R.ReprFor b ~ 'R.Ptr pr
+        , R.IsPtrRepr pr
+        ) => Maybe (U.Ptr mut) -> m (R.Raw mut b)
+    readPtrField ptr =
+        R.Raw <$> R.fromPtr @pr (U.message struct) ptr
+
+-- | Return whether the specified field is present. Only applicable for pointer
+-- fields.
+hasField ::
+    ( U.ReadCtx m mut
+    , R.IsStruct a
+    , R.IsPtr b
+    ) => F.Field 'F.Slot a b -> R.Raw mut a -> m Bool
+hasField (F.Field (F.PtrField index)) (R.Raw struct) =
+    isJust <$> U.getPtr (fromIntegral index) struct
+
+{-# INLINE getField #-}
+-- | Like 'readField', but:
+--
+-- * Doesn't need the monadic context; can be used in pure code.
+-- * Only works for immutable values.
+-- * Only works for fields in the struct's data section.
+getField
+    ::  ( R.IsStruct a
+        , R.ReprFor b ~ 'R.Data sz
+        , C.Parse b bp
+        )
+    => F.Field 'F.Slot a b
+    -> R.Raw 'Const a
+    -> bp
+getField field struct =
+    fromJust $ evalLimitT maxBound $
+        readField field struct >>= C.parse
+
+{-# INLINE setField #-}
+-- | Set a struct field to a value. Not usable for group fields.
+setField ::
+    forall a b m s.
+    ( R.IsStruct a
+    , U.RWCtx m s
+    ) => F.Field 'F.Slot a b -> R.Raw ('Mut s) b -> R.Raw ('Mut s) a -> m ()
+setField (F.Field field) (R.Raw value) (R.Raw struct) =
+    case field of
+        F.DataField fieldLoc ->
+            setDataField fieldLoc
+        F.PtrField index ->
+            setPtrField index value struct
+        F.VoidField ->
+            pure ()
+  where
+    -- This was originally broken out because the type checker needs some extra
+    -- help, but it's probably more readable this way anyway.
+    setPtrField
+        :: forall pr.
+        ( R.ReprFor b ~ 'R.Ptr pr
+        , R.IsPtrRepr pr
+        ) => Word16 -> R.UntypedPtr ('Mut s) pr -> U.Struct ('Mut s) -> m ()
+    setPtrField index value struct =
+        U.setPtr (R.toPtr @pr value) (fromIntegral index) struct
+
+    setDataField
+        :: forall sz.
+        ( R.ReprFor b ~ 'R.Data sz
+        , C.IsWord (R.UntypedData sz)
+        ) => F.DataFieldLoc sz -> m ()
+    setDataField F.DataFieldLoc{ shift, index, mask, defaultValue } = do
+        oldWord <- U.getData (fromIntegral index) struct
+        let valueWord = C.toWord value `xor` defaultValue
+            newWord = (oldWord .&. complement mask)
+                  .|. (valueWord `shiftL` fromIntegral shift)
+        U.setData newWord (fromIntegral index) struct
+
+-- | Allocate space for the value of a field, and return it.
+newField ::
+    forall a b m s.
+    ( R.IsStruct a
+    , C.Allocate b
+    , U.RWCtx m s
+    ) => F.Field 'F.Slot a b -> C.AllocHint b -> R.Raw ('Mut s) a -> m (R.Raw ('Mut s) b)
+newField field hint parent = do
+    value <- C.new @b hint (U.message parent)
+    setField field value parent
+    pure value
+
+-- | Marshal a parsed value into a struct's field.
+encodeField ::
+    forall a b m s bp.
+    ( R.IsStruct a
+    , C.Parse b bp
+    , U.RWCtx m s
+    ) => F.Field 'F.Slot a b -> bp -> R.Raw ('Mut s) a -> m ()
+encodeField field parsed struct = do
+    encoded <- C.encode (U.message struct) parsed
+    setField field encoded struct
+
+-- | parse a struct's field and return its parsed form.
+parseField ::
+    ( R.IsStruct a
+    , C.Parse b bp
+    , U.ReadCtx m 'Const
+    ) => F.Field k a b -> R.Raw 'Const a -> m bp
+parseField field raw =
+    readField field raw >>= C.parse
+
+-- | Set the struct's anonymous union to the given variant, with the
+-- supplied value as its argument. Not applicable for variants whose
+-- argument is a group; use 'initVariant' instead.
+setVariant
+    :: forall a b m s.
+    ( F.HasUnion a
+    , U.RWCtx m s
+    ) => F.Variant 'F.Slot a b -> R.Raw ('Mut s) a -> R.Raw ('Mut s) b -> m ()
+setVariant F.Variant{field, tagValue} struct value = do
+    setField (F.unionField @a) (R.Raw tagValue) struct
+    setField field value struct
+
+-- | Set the struct's anonymous union to the given variant, marshalling
+-- the supplied value into the message to be its argument. Not applicable
+-- for variants whose argument is a group; use 'initVariant' instead.
+encodeVariant
+    :: forall a b m s bp.
+    ( F.HasUnion a
+    , C.Parse b bp
+    , U.RWCtx m s
+    ) => F.Variant 'F.Slot a b -> bp -> R.Raw ('Mut s) a -> m ()
+encodeVariant F.Variant{field, tagValue} value struct = do
+    setField (F.unionField @a) (R.Raw tagValue) struct
+    encodeField field value struct
+
+-- | Set the struct's anonymous union to the given variant, returning
+-- the variant's argument, which must be a group (for non-group fields,
+-- use 'setVariant' or 'encodeVariant'.
+initVariant
+    :: forall a b m s. (F.HasUnion a, U.RWCtx m s)
+    => F.Variant 'F.Group a b -> R.Raw ('Mut s) a -> m (R.Raw ('Mut s) b)
+initVariant F.Variant{field, tagValue} struct = do
+    setField (F.unionField @a) (R.Raw tagValue) struct
+    readField field struct
+
+-- | Get the anonymous union for a struct.
+structUnion :: F.HasUnion a => R.Raw mut a -> R.Raw mut (F.Which a)
+structUnion = coerce
+
+-- | Get the struct enclosing an anonymous union.
+unionStruct :: F.HasUnion a => R.Raw mut (F.Which a) -> R.Raw mut a
+unionStruct = coerce
+
+-- | Get a non-opaque view on the struct's anonymous union, which
+-- can be used to pattern match on.
+structWhich :: forall a mut m. (U.ReadCtx m mut, F.HasUnion a) => R.Raw mut a -> m (F.RawWhich mut a)
+structWhich struct = do
+    R.Raw tagValue <- readField (F.unionField @a) struct
+    F.internalWhich tagValue struct
+
+-- | Get a non-opaque view on the anonymous union, which can be
+-- used to pattern match on.
+unionWhich :: forall a mut m. (U.ReadCtx m mut, F.HasUnion a) => R.Raw mut (F.Which a) -> m (F.RawWhich mut a)
+unionWhich = structWhich . unionStruct
diff --git a/lib/Capnp/New/Basics.hs b/lib/Capnp/New/Basics.hs
new file mode 100644
--- /dev/null
+++ b/lib/Capnp/New/Basics.hs
@@ -0,0 +1,224 @@
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE EmptyDataDeriving     #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE OverloadedStrings     #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+{-# LANGUAGE UndecidableInstances  #-}
+-- |
+-- Module: Capnp.New.Basics
+-- Description: Handling of "basic" capnp datatypes.
+--
+-- This module contains phantom types for built-in Cap'n Proto
+-- types, analogous to the phantom types generated for structs
+-- by the code generator. It also defines applicable type class
+-- instances.
+module Capnp.New.Basics where
+
+-- XXX: I(zenhack) don't know how to supply an explicit
+-- export list here, since we have instances of data families
+-- and I don't know what to call the instances to get all of the
+-- constructors.
+
+import qualified Capnp.Errors        as E
+import qualified Capnp.Message       as M
+import qualified Capnp.New.Classes   as C
+import qualified Capnp.Repr          as R
+import qualified Capnp.Untyped       as U
+import           Control.Monad       (when)
+import           Control.Monad.Catch (throwM)
+import qualified Data.ByteString     as BS
+import           Data.Foldable       (for_)
+import qualified Data.Text           as T
+import qualified Data.Text.Encoding  as TE
+import qualified Data.Vector         as V
+import           Data.Word
+
+-- | The Cap'n Proto @Text@ type.
+data Text
+
+-- | The Cap'n Proto @Data@ type.
+data Data
+
+-- | A Cap'n Proto @AnyPointer@, i.e. an arbitrary pointer with unknown schema.
+data AnyPointer
+
+-- | A Cap'n Proto @List@ with unknown element type.
+data AnyList
+
+-- | A Cap'n Proto struct of unknown type.
+data AnyStruct
+
+-- | A Cap'n Proto capability with unknown interfaces.
+data Capability
+
+type instance R.ReprFor Data = R.ReprFor (R.List Word8)
+type instance R.ReprFor Text = R.ReprFor (R.List Word8)
+type instance R.ReprFor AnyPointer = 'R.Ptr 'Nothing
+type instance R.ReprFor AnyList = 'R.Ptr ('Just ('R.List 'Nothing))
+type instance R.ReprFor AnyStruct = 'R.Ptr ('Just 'R.Struct)
+type instance R.ReprFor Capability = 'R.Ptr ('Just 'R.Cap)
+
+data instance C.Parsed AnyPointer
+    = PtrNull
+    | PtrStruct (C.Parsed AnyStruct)
+    | PtrList (C.Parsed AnyList)
+    | PtrCap M.Client
+    deriving(Show, Eq)
+
+instance C.Parse AnyPointer (C.Parsed AnyPointer) where
+    parse (R.Raw ptr) = case ptr of
+        Nothing                   -> pure PtrNull
+        Just (U.PtrCap cap)       -> PtrCap <$> C.parse (R.Raw cap)
+        Just (U.PtrList list)     -> PtrList <$> C.parse (R.Raw list)
+        Just (U.PtrStruct struct) -> PtrStruct <$> C.parse (R.Raw struct)
+
+    encode msg value = R.Raw <$> case value of
+        PtrNull       -> pure Nothing
+        PtrCap cap    -> Just . U.PtrCap . R.fromRaw <$> C.encode msg cap
+        PtrList list -> Just . U.PtrList . R.fromRaw <$> C.encode msg list
+        PtrStruct struct -> Just . U.PtrStruct . R.fromRaw <$> C.encode msg struct
+
+instance C.AllocateList AnyPointer where
+    type ListAllocHint AnyPointer = Int
+
+instance C.EstimateListAlloc AnyPointer (C.Parsed AnyPointer)
+
+data instance C.Parsed AnyStruct = Struct
+    { structData :: V.Vector Word64
+    , structPtrs :: V.Vector (C.Parsed AnyPointer)
+    }
+    deriving(Show, Eq)
+
+instance C.Parse AnyStruct (C.Parsed AnyStruct) where
+    parse (R.Raw s) = Struct
+        <$> V.generateM
+                (fromIntegral $ U.structWordCount s)
+                (`U.getData` s)
+        <*> V.generateM
+                (fromIntegral $ U.structPtrCount s)
+                (\i -> U.getPtr i s >>= C.parse . R.Raw)
+
+instance C.AllocateList AnyStruct where
+    type ListAllocHint AnyStruct = (Int, R.AllocHint 'R.Struct)
+
+instance C.EstimateListAlloc AnyStruct (C.Parsed AnyStruct) where
+    estimateListAlloc structs =
+        let len = V.length structs
+            nWords = maximum $ map (V.length . structData) $ V.toList structs
+            nPtrs = maximum $ map (V.length . structPtrs) $ V.toList structs
+        in
+        (len, (fromIntegral nWords, fromIntegral nPtrs))
+
+instance C.EstimateAlloc AnyStruct (C.Parsed AnyStruct) where
+    estimateAlloc s =
+        ( fromIntegral $ V.length $ structData s
+        , fromIntegral $ V.length $ structPtrs s
+        )
+
+instance C.Marshal AnyStruct (C.Parsed AnyStruct) where
+    marshalInto (R.Raw raw) s = do
+        V.iforM_ (structData s) $ \i value -> do
+            U.setData value i raw
+        V.iforM_ (structPtrs s) $ \i value -> do
+            R.Raw ptr <- C.encode (U.message raw) value
+            U.setPtr ptr i raw
+
+-- TODO(cleanup): It would be nice if we could reuse Capnp.Repr.Parsed.Parsed
+-- here, but that would cause a circular import dependency.
+type ParsedList a = V.Vector a
+
+data instance C.Parsed AnyList
+    = ListPtr (ParsedList (C.Parsed AnyPointer))
+    | ListStruct (ParsedList (C.Parsed AnyStruct))
+    | List0 (ParsedList ())
+    | List1 (ParsedList Bool)
+    | List8 (ParsedList Word8)
+    | List16 (ParsedList Word16)
+    | List32 (ParsedList Word32)
+    | List64 (ParsedList Word64)
+    deriving(Show, Eq)
+
+instance C.Parse AnyList (C.Parsed AnyList) where
+    parse (R.Raw list) = case list of
+        U.List0 l      -> List0 <$> C.parse (R.Raw l)
+        U.List1 l      -> List1 <$> C.parse (R.Raw l)
+        U.List8 l      -> List8 <$> C.parse (R.Raw l)
+        U.List16 l     -> List16 <$> C.parse (R.Raw l)
+        U.List32 l     -> List32 <$> C.parse (R.Raw l)
+        U.List64 l     -> List64 <$> C.parse (R.Raw l)
+        U.ListPtr l    -> ListPtr <$> C.parse (R.Raw l)
+        U.ListStruct l -> ListStruct <$> C.parse (R.Raw l)
+
+    encode msg list = R.Raw <$> case list of
+        List0 l      -> U.List0 . R.fromRaw <$> C.encode msg l
+        List1 l      -> U.List1 . R.fromRaw <$> C.encode msg l
+        List8 l      -> U.List8 . R.fromRaw <$> C.encode msg l
+        List16 l     -> U.List16 . R.fromRaw <$> C.encode msg l
+        List32 l     -> U.List32 . R.fromRaw <$> C.encode msg l
+        List64 l     -> U.List64 . R.fromRaw <$> C.encode msg l
+        ListPtr l    -> U.ListPtr . R.fromRaw <$> C.encode msg l
+        ListStruct l -> U.ListStruct . R.fromRaw <$> C.encode msg l
+
+instance C.Parse Capability M.Client where
+    parse (R.Raw cap) = U.getClient cap
+    encode msg client = R.Raw <$> U.appendCap msg client
+
+instance C.Allocate Text where
+    type AllocHint Text = Int
+    new len msg = R.Raw <$> U.allocList8 msg (len + 1)
+
+instance C.AllocateList Text where
+    type ListAllocHint Text = Int
+instance C.EstimateListAlloc Text T.Text
+
+instance C.Parse Text T.Text where
+    parse (R.Raw list) =
+        let len = U.length list in
+        if len == 0 then
+            -- We are somewhat lenient here; technically this is invalid, as there is
+            -- no null terminator (see logic below, which is dead code because of
+            -- this check. But to avoid this we really need to expose nullability
+            -- in the API, so for now we just fudge it.
+            pure ""
+        else (do
+            when (len == 0) $ throwM $ E.SchemaViolationError
+                "Text is not NUL-terminated (list of bytes has length 0)"
+            lastByte <- U.index (len - 1) list
+            when (lastByte /= 0) $ throwM $ E.SchemaViolationError $
+                "Text is not NUL-terminated (last byte is " ++ show lastByte ++ ")"
+            bytes <- BS.take (len - 1) <$> U.rawBytes list
+            case TE.decodeUtf8' bytes of
+                Left e  -> throwM $ E.InvalidUtf8Error e
+                Right v -> pure v)
+    encode msg value = do
+        let bytes = TE.encodeUtf8 value
+        raw@(R.Raw untyped)  <- C.new @Text (BS.length bytes) msg
+        C.marshalInto @Data (R.Raw untyped) bytes
+        pure raw
+
+-- Instances for Data
+instance C.Parse Data BS.ByteString where
+    parse = U.rawBytes . R.fromRaw
+
+instance C.Allocate Data where
+    type AllocHint Data = Int
+    new len msg = R.Raw <$> U.allocList8 msg len
+
+instance C.EstimateAlloc Data BS.ByteString where
+    estimateAlloc = BS.length
+
+instance C.AllocateList Data where
+    type ListAllocHint Data = Int
+instance C.EstimateListAlloc Data BS.ByteString
+
+instance C.Marshal Data BS.ByteString where
+    marshalInto (R.Raw list) bytes =
+        for_ [0..BS.length bytes - 1] $ \i ->
+            U.setIndex (BS.index bytes i) i list
+
+-- Instances for AnyStruct
+instance C.Allocate AnyStruct where
+    type AllocHint AnyStruct = (Word16, Word16)
+    new (nWords, nPtrs) msg = R.Raw <$> U.allocStruct msg nWords nPtrs
diff --git a/lib/Capnp/New/Classes.hs b/lib/Capnp/New/Classes.hs
new file mode 100644
--- /dev/null
+++ b/lib/Capnp/New/Classes.hs
@@ -0,0 +1,313 @@
+{-# LANGUAGE AllowAmbiguousTypes    #-}
+{-# LANGUAGE ConstraintKinds        #-}
+{-# LANGUAGE DataKinds              #-}
+{-# LANGUAGE DefaultSignatures      #-}
+{-# LANGUAGE FlexibleContexts       #-}
+{-# LANGUAGE FlexibleInstances      #-}
+{-# LANGUAGE FunctionalDependencies #-}
+{-# LANGUAGE ScopedTypeVariables    #-}
+{-# LANGUAGE TemplateHaskell        #-}
+{-# LANGUAGE TypeApplications       #-}
+{-# LANGUAGE TypeFamilies           #-}
+{-# LANGUAGE UndecidableInstances   #-}
+-- | Module: Capnp.New.Classes
+-- Description: Misc. type classes
+--
+-- This module contains several type classes (and related utilities)
+-- useful for operating over Cap'n Proto values.
+module Capnp.New.Classes
+    ( -- * Encoding and decoding parsed forms of values
+      Parse(..)
+    , Parsed
+    , Marshal(..)
+    , MarshalElement
+
+    -- * Allocating values in messages
+    , Allocate(..)
+    , newRoot
+    , AllocateList(..)
+    , EstimateAlloc(..)
+    , EstimateListAlloc(..)
+    , newFromRepr
+
+    -- * Typed Structs
+    , TypedStruct(..)
+    , newTypedStruct
+    , newTypedStructList
+    , structSizes
+
+    -- * Values that go in a struct's data section
+    , IsWord(..)
+    ) where
+
+import           Capnp.Classes        (IsWord(..))
+import           Capnp.Message        (Mutability(..))
+import qualified Capnp.Message        as M
+import qualified Capnp.Repr           as R
+import           Capnp.TraversalLimit (evalLimitT)
+import qualified Capnp.Untyped        as U
+import           Data.Default         (Default(..))
+import           Data.Foldable        (for_)
+import           Data.Int
+import qualified Data.Vector          as V
+import           Data.Word
+import qualified GHC.Float            as F
+import qualified Language.Haskell.TH  as TH
+
+-- | Capnp types that can be parsed into a more "natural" Haskell form.
+--
+-- * @t@ is the capnproto type.
+-- * @p@ is the type of the parsed value.
+class Parse t p | t -> p, p -> t where
+    parse :: U.ReadCtx m 'Const => R.Raw 'Const t -> m p
+    -- ^ Parse a value from a constant message
+    encode :: U.RWCtx m s => M.Message ('Mut s) -> p -> m (R.Raw ('Mut s) t)
+    -- ^ Encode a value into 'R.Raw' form, using the message as storage.
+
+    default encode
+        :: (U.RWCtx m s, EstimateAlloc t p, Marshal t p)
+        => M.Message ('Mut s) -> p -> m (R.Raw ('Mut s) t)
+    encode msg value = do
+        raw <- new (estimateAlloc value) msg
+        marshalInto raw value
+        pure raw
+
+-- | Types where the necessary allocation is inferrable from the parsed form.
+--
+-- ...this is most types.
+class (Parse t p, Allocate t) => EstimateAlloc t p where
+    -- | Determine the appropriate hint needed to allocate space
+    -- for the serialied form of the value.
+    estimateAlloc :: p -> AllocHint t
+
+    default estimateAlloc :: AllocHint t ~ () => p -> AllocHint t
+    estimateAlloc _ = ()
+
+-- | Implementation of 'new' valid for types whose 'AllocHint' is
+-- the same as that of their underlying representation.
+newFromRepr
+    :: forall a r m s.
+    ( R.Allocate r
+    , 'R.Ptr ('Just r) ~ R.ReprFor a
+    , U.RWCtx m s
+    )
+    => R.AllocHint r -> M.Message ('Mut s) -> m (R.Raw ('Mut s) a)
+newFromRepr hint msg = R.Raw <$> R.alloc @r msg hint
+    -- TODO(cleanup): new and alloc really ought to have the same argument order...
+
+
+-- | Types which may be allocated directly inside a message.
+class Allocate a where
+    type AllocHint a
+    -- ^ Extra information needed to allocate a value of this type, e.g. the
+    -- length for a list. May be () if no extra info is needed.
+
+    new :: U.RWCtx m s => AllocHint a -> M.Message ('Mut s) -> m (R.Raw ('Mut s) a)
+    -- ^ @'new' hint msg@ allocates a new value of type @a@ inside @msg@.
+
+    default new ::
+        ( R.ReprFor a ~ 'R.Ptr ('Just pr)
+        , R.Allocate pr
+        , AllocHint a ~ R.AllocHint pr
+        , U.RWCtx m s
+        ) => AllocHint a -> M.Message ('Mut s) -> m (R.Raw ('Mut s) a)
+    -- If the AllocHint is the same as that of the underlying Repr, then
+    -- we can just use that implementation.
+    new = newFromRepr @a
+
+-- | Like 'Allocate', but for allocating *lists* of @a@.
+class AllocateList a where
+    type ListAllocHint a
+    -- ^ Extra information needed to allocate a list of @a@s.
+
+    newList :: U.RWCtx m s => ListAllocHint a -> M.Message ('Mut s) -> m (R.Raw ('Mut s) (R.List a))
+    default newList ::
+        forall m s lr r.
+        ( U.RWCtx m s
+        , lr ~ R.ListReprFor (R.ReprFor a)
+        , r ~ 'R.List ('Just lr)
+        , R.Allocate r
+        , R.AllocHint r ~ ListAllocHint a
+        ) => ListAllocHint a -> M.Message ('Mut s) -> m (R.Raw ('Mut s) (R.List a))
+    newList hint msg = R.Raw <$> R.alloc @r msg hint
+
+instance AllocateList a => Allocate (R.List a) where
+    type AllocHint (R.List a) = ListAllocHint a
+    new = newList @a
+
+instance AllocateList (R.List a) where
+    type ListAllocHint (R.List a) = Int
+
+instance
+    ( Parse (R.List a) (V.Vector ap)
+    , Allocate (R.List a)
+    ) => EstimateListAlloc (R.List a) (V.Vector ap)
+
+-- | Allocate a new typed struct. Mainly used as the value for 'new' for in generated
+-- instances of 'Allocate'.
+newTypedStruct :: forall a m s. (TypedStruct a, U.RWCtx m s) => M.Message ('Mut s) -> m (R.Raw ('Mut s) a)
+newTypedStruct = newFromRepr (structSizes @a)
+
+-- | Like 'newTypedStruct', but for lists.
+newTypedStructList
+    :: forall a m s. (TypedStruct a, U.RWCtx m s)
+    => Int -> M.Message ('Mut s) -> m (R.Raw ('Mut s) (R.List a))
+newTypedStructList i msg = R.Raw <$> R.alloc
+    @('R.List ('Just 'R.ListComposite))
+    msg
+    (i, structSizes @a)
+
+-- | An instance of marshal allows a parsed value to be inserted into
+-- pre-allocated space in a message.
+class Parse t p => Marshal t p where
+    marshalInto :: U.RWCtx m s => R.Raw ('Mut s) t -> p -> m ()
+    -- ^ Marshal a value into the pre-allocated object inside the message.
+    --
+    -- Note that caller must arrange for the object to be of the correct size.
+    -- This is is not necessarily guaranteed; for example, list types must
+    -- coordinate the length of the list.
+
+-- | Get the maximum word and pointer counts needed for a struct type's fields.
+structSizes :: forall a. TypedStruct a => (Word16, Word16)
+structSizes = (numStructWords @a, numStructPtrs @a)
+
+-- | Operations on typed structs.
+class (R.IsStruct a, Allocate a, AllocHint a ~ ()) => TypedStruct a where
+    -- Get the size of  the struct's word and pointer sections, respectively.
+    numStructWords :: Word16
+    numStructPtrs  :: Word16
+
+
+-- | Like 'new', but also sets the value as the root of the message.
+newRoot
+    :: forall a m s. (U.RWCtx m s, R.IsStruct a, Allocate a)
+    => AllocHint a -> M.Message ('Mut s) -> m (R.Raw ('Mut s) a)
+newRoot hint msg = do
+    raw@(R.Raw struct) <- new @a hint msg
+    U.setRoot struct
+    pure raw
+
+
+------ Instances for basic types -------
+
+parseId :: (R.Untyped mut (R.ReprFor a) ~ a, U.ReadCtx m mut) => R.Raw mut a -> m a
+parseId = pure . R.fromRaw
+
+parseInt ::
+    ( Integral a
+    , Integral (R.Untyped mut (R.ReprFor a))
+    , U.ReadCtx m mut
+    ) => R.Raw mut a -> m a
+parseInt = pure . fromIntegral . R.fromRaw
+
+instance Parse Float Float where
+    parse = pure . F.castWord32ToFloat . R.fromRaw
+    encode _ = pure . R.Raw . F.castFloatToWord32
+
+instance Parse Double Double where
+    parse = pure . F.castWord64ToDouble . R.fromRaw
+    encode _ = pure . R.Raw . F.castDoubleToWord64
+
+instance MarshalElement a ap => Marshal (R.List a) (V.Vector ap) where
+    marshalInto raw value =
+        for_ [0..V.length value - 1] $ \i ->
+            marshalElement raw i (value V.! i)
+
+instance MarshalElement a ap => Parse (R.List a) (V.Vector ap) where
+    parse rawV =
+        V.generateM (R.length rawV) $ \i ->
+            R.index i rawV >>= parse
+
+-- | Type alias capturing the constraints on a type needed by
+-- 'marshalElement'
+type MarshalElement a ap =
+    ( Parse a ap
+    , EstimateListAlloc a ap
+    , R.Element (R.ReprFor a)
+    , MarshalElementByRepr (R.ListReprFor (R.ReprFor a))
+    , MarshalElementReprConstraints (R.ListReprFor (R.ReprFor a)) a ap
+    )
+
+-- | Constraints needed by marshalElement that are specific to a list repr.
+type family MarshalElementReprConstraints (lr :: R.ListRepr) a ap where
+    MarshalElementReprConstraints 'R.ListComposite  a ap = Marshal a ap
+    MarshalElementReprConstraints ('R.ListNormal r) a ap = Parse a ap
+
+class MarshalElementByRepr (lr :: R.ListRepr) where
+    marshalElementByRepr ::
+        ( U.RWCtx m s
+        , R.ListReprFor (R.ReprFor a) ~ lr
+        , MarshalElement a ap
+        ) => R.Raw ('Mut s) (R.List a) -> Int -> ap -> m ()
+
+instance MarshalElementByRepr 'R.ListComposite where
+    marshalElementByRepr rawList i parsed = do
+        rawElt <- R.index i rawList
+        marshalInto rawElt parsed
+
+instance MarshalElementByRepr ('R.ListNormal l) where
+    marshalElementByRepr rawList i parsed = do
+        rawElt <- encode (U.message rawList) parsed
+        R.setIndex rawElt i rawList
+
+marshalElement ::
+  forall a ap m s.
+  ( U.RWCtx m s
+  , MarshalElement a ap
+  ) => R.Raw ('Mut s) (R.List a) -> Int -> ap -> m ()
+marshalElement = marshalElementByRepr @(R.ListReprFor (R.ReprFor a))
+
+class (Parse a ap, Allocate (R.List a)) => EstimateListAlloc a ap where
+    estimateListAlloc :: V.Vector ap -> AllocHint (R.List a)
+
+    default estimateListAlloc :: (AllocHint (R.List a) ~ Int) => V.Vector ap -> AllocHint (R.List a)
+    estimateListAlloc = V.length
+
+instance MarshalElement a ap => EstimateAlloc (R.List a) (V.Vector ap) where
+    estimateAlloc = estimateListAlloc @a
+
+-- | If @a@ is a capnproto type, then @Parsed a@ is an ADT representation of that
+-- type. If this is defined for a type @a@ then there should also be an instance
+-- @'Parse' a ('Parsed' a)@, but note that the converse is not true: if there is
+-- an instance @'Parse' a b@, then @'Parsed' a@ needn't be defined, and @b@ can
+-- be something else.
+data family Parsed a
+
+instance (Default (R.Raw 'Const a), Parse a (Parsed a)) => Default (Parsed a) where
+    def = case evalLimitT maxBound (parse @a def) of
+        Just v  -> v
+        Nothing -> error "Parsing default value failed."
+
+do
+    let mkId ty =
+            [d| instance Parse $ty $ty where
+                    parse = parseId
+                    encode _ = pure . R.Raw
+            |]
+        mkInt ty =
+            [d| instance Parse $ty $ty where
+                    parse = parseInt
+                    encode _ = pure . R.Raw . fromIntegral
+            |]
+        mkAll ty =
+            [d| instance AllocateList $ty where
+                    type ListAllocHint $ty = Int
+
+                instance EstimateListAlloc $ty $ty where
+                    estimateListAlloc = V.length
+            |]
+
+        nameTy name = pure (TH.ConT name)
+
+        ids      = [t| () |] : map nameTy [''Bool, ''Word8, ''Word16, ''Word32, ''Word64]
+        ints     = map nameTy [''Int8, ''Int16, ''Int32, ''Int64]
+        floats   = map nameTy [''Float, ''Double]
+        allTys   = ids ++ ints ++ floats
+
+        merge :: [TH.Q [a]] -> TH.Q [a]
+        merge xs = concat <$> sequenceA xs
+    merge
+        [ merge $ map mkId ids
+        , merge $ map mkInt ints
+        , merge $ map mkAll allTys
+        ]
diff --git a/lib/Capnp/New/Constraints.hs b/lib/Capnp/New/Constraints.hs
new file mode 100644
--- /dev/null
+++ b/lib/Capnp/New/Constraints.hs
@@ -0,0 +1,17 @@
+-- | Module: Capnp.New.Constraints
+-- Description: convenience shorthands for various constraints.
+{-# LANGUAGE ConstraintKinds  #-}
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE TypeFamilies     #-}
+module Capnp.New.Constraints where
+
+import qualified Capnp.New.Classes as C
+import qualified Capnp.Repr        as R
+import qualified Capnp.Repr.Parsed as RP
+
+-- | Constraints needed for @a@ to be a capnproto type parameter.
+type TypeParam a =
+    ( R.IsPtr a
+    , C.Parse a (RP.Parsed a)
+    )
+
diff --git a/lib/Capnp/Repr.hs b/lib/Capnp/Repr.hs
new file mode 100644
--- /dev/null
+++ b/lib/Capnp/Repr.hs
@@ -0,0 +1,430 @@
+{-# LANGUAGE AllowAmbiguousTypes        #-}
+{-# LANGUAGE ConstraintKinds            #-}
+{-# LANGUAGE DataKinds                  #-}
+{-# LANGUAGE DeriveGeneric              #-}
+{-# LANGUAGE FlexibleContexts           #-}
+{-# LANGUAGE FlexibleInstances          #-}
+{-# LANGUAGE FunctionalDependencies     #-}
+{-# LANGUAGE GADTs                      #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE ScopedTypeVariables        #-}
+{-# LANGUAGE StandaloneDeriving         #-}
+{-# LANGUAGE TemplateHaskell            #-}
+{-# LANGUAGE TypeApplications           #-}
+{-# LANGUAGE TypeFamilies               #-}
+{-# LANGUAGE UndecidableInstances       #-}
+-- | Module: Capnp.Repr
+-- Description: Type-level plumbing for wire-representations.
+--
+-- This module provides facilities for working with the wire
+-- representations of capnproto objects at the type level. The most
+-- central part of this module is the 'Repr' type.
+--
+-- Recommended reading: https://capnproto.org/encoding.html
+module Capnp.Repr
+    (
+    -- * Type-level descriptions of wire representations.
+      Repr(..)
+    , PtrRepr(..)
+    , ListRepr(..)
+    , NormalListRepr(..)
+    , DataSz(..)
+
+    -- * Mapping representations to value types from "Capnp.Untyped"
+    , Untyped
+    , UntypedData
+    , UntypedPtr
+    , UntypedSomePtr
+    , UntypedList
+    , UntypedSomeList
+
+    -- * Mapping types to their wire representations.
+    , ReprFor
+    , PtrReprFor
+
+    -- * Relating the representations of lists & their elements.
+    , ElemRepr
+    , ListReprFor
+    , Element(..)
+
+    -- * Working with wire-encoded values
+    , Raw(..)
+
+    -- * Working with lists
+    , List
+    , length
+    , index
+    , setIndex
+
+    -- * Working with pointers
+    , IsPtrRepr(..)
+    , IsListPtrRepr(..)
+
+    -- * Allocating values
+    , Allocate(..)
+
+    -- * Shorthands for types
+    , IsStruct
+    , IsCap
+    , IsPtr
+    ) where
+
+import Prelude hiding (length)
+
+import qualified Capnp.Classes        as C
+import qualified Capnp.Errors         as E
+import           Capnp.Message        (Mutability(..))
+import qualified Capnp.Message        as M
+import           Capnp.TraversalLimit (evalLimitT)
+import qualified Capnp.Untyped        as U
+import           Control.Monad.Catch  (MonadThrow(..))
+import           Data.Default         (Default(..))
+import           Data.Int
+import           Data.Kind            (Type)
+import           Data.Maybe           (fromJust)
+import           Data.Word
+import           GHC.Generics         (Generic)
+import qualified Language.Haskell.TH  as TH
+
+-- | A 'Repr' describes a wire representation for a value. This is
+-- mostly used at the type level (using DataKinds); types are
+-- parametrized over representations.
+data Repr
+    = Ptr (Maybe PtrRepr)
+    -- ^ Pointer type. 'Nothing' indicates an AnyPointer, 'Just' describes
+    -- a more specific pointer type.
+    | Data DataSz
+    -- ^ Non-pointer type.
+    deriving(Show)
+
+-- | Information about the representation of a pointer type
+data PtrRepr
+    = Cap
+    -- ^ Capability pointer.
+    | List (Maybe ListRepr)
+    -- ^ List pointer. 'Nothing' describes an AnyList, 'Just' describes
+    -- more specific list types.
+    | Struct
+    -- ^ A struct (or group).
+    deriving(Show)
+
+-- | Information about the representation of a list type.
+data ListRepr where
+    -- | A "normal" list
+    ListNormal :: NormalListRepr -> ListRepr
+    ListComposite :: ListRepr
+    deriving(Show)
+
+-- | Information about the representation of a normal (non-composite) list.
+data NormalListRepr where
+    ListData :: DataSz -> NormalListRepr
+    ListPtr :: NormalListRepr
+    deriving(Show)
+
+-- | The size of a non-pointer type. @SzN@ represents an @N@-bit value.
+data DataSz = Sz0 | Sz1 | Sz8 | Sz16 | Sz32 | Sz64
+    deriving(Show)
+
+-- | @Untyped mut r@ is an untyped value with representation @r@ stored in
+-- a message with mutability @mut@.
+type family Untyped (mut :: Mutability) (r :: Repr) :: Type where
+    Untyped mut ('Data sz) = UntypedData sz
+    Untyped mut ('Ptr ptr) = UntypedPtr mut ptr
+
+-- | @UntypedData sz@ is an untyped value with size @sz@.
+type family UntypedData (sz :: DataSz) :: Type where
+    UntypedData 'Sz0 = ()
+    UntypedData 'Sz1 = Bool
+    UntypedData 'Sz8 = Word8
+    UntypedData 'Sz16 = Word16
+    UntypedData 'Sz32 = Word32
+    UntypedData 'Sz64 = Word64
+
+-- | Like 'Untyped', but for pointers only.
+type family UntypedPtr (mut :: Mutability) (r :: Maybe PtrRepr) :: Type where
+    UntypedPtr mut 'Nothing = Maybe (U.Ptr mut)
+    UntypedPtr mut ('Just r) = UntypedSomePtr mut r
+
+-- | Like 'UntypedPtr', but doesn't allow AnyPointers.
+type family UntypedSomePtr (mut :: Mutability) (r :: PtrRepr) :: Type where
+    UntypedSomePtr mut 'Struct = U.Struct mut
+    UntypedSomePtr mut 'Cap = U.Cap mut
+    UntypedSomePtr mut ('List r) = UntypedList mut r
+
+-- | Like 'Untyped', but for lists only.
+type family UntypedList (mut :: Mutability) (r :: Maybe ListRepr) :: Type where
+    UntypedList mut 'Nothing = U.List mut
+    UntypedList mut ('Just r) = UntypedSomeList mut r
+
+-- | Like 'UntypedList', but doesn't allow AnyLists.
+type family UntypedSomeList (mut :: Mutability) (r :: ListRepr) :: Type where
+    UntypedSomeList mut r = U.ListOf mut (Untyped mut (ElemRepr r))
+
+
+-- | An instace of @'Allocate'@ specifies how to allocate a value with a given representation.
+-- This only makes sense for pointers of course, so it is defined on PtrRepr. Of the well-kinded
+-- types, only @'List 'Nothing@ is missing an instance.
+class Allocate (r :: PtrRepr) where
+    -- | Extra information needed to allocate a value:
+    --
+    -- * For structs, the sizes of the sections.
+    -- * For capabilities, the client to attach to the messages.
+    -- * For lists, the length, and for composite lists, the struct sizes as well.
+    type AllocHint r
+
+    -- | Allocate a value of the given type.
+    alloc :: U.RWCtx m s => M.Message ('Mut s) -> AllocHint r -> m (UntypedSomePtr ('Mut s) r)
+
+-- | @'ReprFor' a@ denotes the Cap'n Proto wire represent of the type @a@.
+type family ReprFor (a :: Type) :: Repr
+
+type instance ReprFor () = 'Data 'Sz0
+type instance ReprFor Bool = 'Data 'Sz1
+type instance ReprFor Word8 = 'Data 'Sz8
+type instance ReprFor Word16 = 'Data 'Sz16
+type instance ReprFor Word32 = 'Data 'Sz32
+type instance ReprFor Word64 = 'Data 'Sz64
+type instance ReprFor Int8 = 'Data 'Sz8
+type instance ReprFor Int16 = 'Data 'Sz16
+type instance ReprFor Int32 = 'Data 'Sz32
+type instance ReprFor Int64 = 'Data 'Sz64
+type instance ReprFor Float = 'Data 'Sz32
+type instance ReprFor Double = 'Data 'Sz64
+
+type instance ReprFor (U.ListOf mut a) = ReprFor (List a)
+type instance ReprFor (U.Struct mut) = 'Ptr ('Just 'Struct)
+type instance ReprFor (U.Cap mut) = 'Ptr ('Just 'Cap)
+type instance ReprFor (U.Ptr mut) = 'Ptr 'Nothing
+type instance ReprFor (U.List mut) = 'Ptr ('Just ('List 'Nothing))
+
+type instance ReprFor (List a) = 'Ptr ('Just ('List ('Just (ListReprFor (ReprFor a)))))
+
+-- | @PtrReprFor r@ extracts the pointer represnetation in r; undefined if
+-- r is not a pointer representation.
+type family PtrReprFor (r :: Repr) :: Maybe PtrRepr where
+    PtrReprFor ('Ptr pr) = pr
+
+-- | @ElemRepr r@ is the representation of elements of lists with
+-- representation @r@.
+type family ElemRepr (rl :: ListRepr) :: Repr where
+    ElemRepr 'ListComposite = 'Ptr ('Just 'Struct)
+    ElemRepr ('ListNormal 'ListPtr) = 'Ptr 'Nothing
+    ElemRepr ('ListNormal ('ListData sz)) = 'Data sz
+
+-- | @ListReprFor e@ is the representation of lists with elements
+-- whose representation is @e@.
+type family ListReprFor (e :: Repr) :: ListRepr where
+    ListReprFor ('Data sz) = 'ListNormal ('ListData sz)
+    ListReprFor ('Ptr ('Just 'Struct)) = 'ListComposite
+    ListReprFor ('Ptr a) = 'ListNormal 'ListPtr
+
+-- | 'Element' supports converting between values of representation
+-- @'ElemRepr' ('ListReprFor' r)@ and values of representation @r@.
+--
+-- At a glance, you might expect this to just be a no-op, but it is actually
+-- *not* always the case that @'ElemRepr' ('ListReprFor' r) ~ r@; in the
+-- case of pointer types, @'ListReprFor' r@ can contain arbitrary pointers,
+-- so information is lost, and it is possible for the list to contain pointers
+-- of the incorrect type. In this case, 'fromElement' will throw an error.
+--
+-- 'toElement' is more trivial.
+class Element (r :: Repr) where
+    fromElement
+        :: forall m mut. U.ReadCtx m mut
+        => M.Message mut
+        -> Untyped mut (ElemRepr (ListReprFor r))
+        -> m (Untyped mut r)
+    toElement :: Untyped mut r -> Untyped mut (ElemRepr (ListReprFor r))
+
+instance Element ('Data sz) where
+    fromElement _ = pure
+    toElement = id
+instance Element ('Ptr ('Just 'Struct)) where
+    fromElement _ = pure
+    toElement = id
+instance Element ('Ptr 'Nothing) where
+    fromElement _ = pure
+    toElement = id
+instance Element ('Ptr ('Just 'Cap)) where
+    fromElement = fromPtr @('Just 'Cap)
+    toElement = Just . U.PtrCap
+instance IsPtrRepr ('Just ('List a)) => Element ('Ptr ('Just ('List a))) where
+    fromElement = fromPtr @('Just ('List a))
+    toElement = toPtr @('Just ('List a))
+
+-- | A @'Raw' mut a@ is an @a@ embedded in a capnproto message with mutability
+-- @mut@.
+newtype Raw (mut :: Mutability) (a :: Type)
+    = Raw { fromRaw :: Untyped mut (ReprFor a) }
+
+deriving instance Show (Untyped mut (ReprFor a)) => Show (Raw mut a)
+deriving instance Read (Untyped mut (ReprFor a)) => Read (Raw mut a)
+deriving instance Eq (Untyped mut (ReprFor a)) => Eq (Raw mut a)
+deriving instance Generic (Untyped mut (ReprFor a)) => Generic (Raw mut a)
+
+-- | A phantom type denoting capnproto lists of type @a@.
+data List a
+
+-- | Get the length of a capnproto list.
+length :: Raw mut (List a) -> Int
+length (Raw l) = U.length l
+
+-- | @'index' i list@ gets the @i@th element of the list.
+index :: forall a m mut.
+    ( U.ReadCtx m mut
+    , Element (ReprFor a)
+    ) => Int -> Raw mut (List a) -> m (Raw mut a)
+index i (Raw l) =
+    Raw <$> (U.index i l >>= fromElement @(ReprFor a) @m @mut (U.message l))
+
+-- | @'setIndex' value i list@ sets the @i@th element of @list@ to @value@.
+setIndex :: forall a m s.
+    ( U.RWCtx m s
+    , Element (ReprFor a)
+    ) => Raw ('Mut s) a -> Int -> Raw ('Mut s) (List a) -> m ()
+setIndex (Raw v) i (Raw l) = U.setIndex (toElement @(ReprFor a) @('Mut s) v) i l
+
+instance (ReprFor a ~ 'Ptr ('Just 'Struct)) => C.ToStruct mut (Raw mut a) where
+    toStruct = fromRaw
+instance (ReprFor a ~ 'Ptr ('Just 'Struct)) => C.FromStruct mut (Raw mut a) where
+    fromStruct = pure . Raw
+
+instance U.HasMessage (Untyped mut (ReprFor a)) mut => U.HasMessage (Raw mut a) mut where
+    message (Raw r) = U.message r
+instance U.MessageDefault (Untyped mut (ReprFor a)) mut => U.MessageDefault (Raw mut a) mut where
+    messageDefault msg = Raw <$> U.messageDefault msg
+
+instance U.MessageDefault (Raw 'Const a) 'Const => Default (Raw 'Const a) where
+    def = fromJust $ evalLimitT maxBound $ U.messageDefault M.empty
+
+-- | Operations on types with pointer representations.
+class IsPtrRepr (r :: Maybe PtrRepr) where
+    toPtr :: Untyped mut ('Ptr r) -> Maybe (U.Ptr mut)
+    -- ^ Convert an untyped value of this representation to an AnyPointer.
+    fromPtr :: U.ReadCtx m mut => M.Message mut -> Maybe (U.Ptr mut) -> m (Untyped mut ('Ptr r))
+    -- ^ Extract a value with this representation from an AnyPointer, failing
+    -- if the pointer is the wrong type for this representation.
+
+instance IsPtrRepr 'Nothing where
+    toPtr p = p
+    fromPtr _ p = pure p
+
+instance IsPtrRepr ('Just 'Struct) where
+    toPtr s = Just (U.PtrStruct s)
+    fromPtr msg Nothing              = U.messageDefault msg
+    fromPtr _ (Just (U.PtrStruct s)) = pure s
+    fromPtr _ _                      = expected "pointer to struct"
+instance IsPtrRepr ('Just 'Cap) where
+    toPtr c = Just (U.PtrCap c)
+    fromPtr _ Nothing             = expected "pointer to capability"
+    fromPtr _ (Just (U.PtrCap c)) = pure c
+    fromPtr _ _                   = expected "pointer to capability"
+instance IsPtrRepr ('Just ('List 'Nothing)) where
+    toPtr l = Just (U.PtrList l)
+    fromPtr _ Nothing              = expected "pointer to list"
+    fromPtr _ (Just (U.PtrList l)) = pure l
+    fromPtr _ (Just _)             = expected "pointer to list"
+instance IsListPtrRepr r => IsPtrRepr ('Just ('List ('Just r))) where
+    toPtr l = Just (U.PtrList (rToList @r l))
+    fromPtr msg Nothing            = rFromListMsg @r msg
+    fromPtr _ (Just (U.PtrList l)) = rFromList @r l
+    fromPtr _ (Just _)             = expected "pointer to list"
+
+-- | Operations on types with list representations.
+class IsListPtrRepr (r :: ListRepr) where
+    rToList :: UntypedSomeList mut r -> U.List mut
+    -- ^ Convert an untyped value of this representation to an AnyList.
+    rFromList :: U.ReadCtx m mut => U.List mut -> m (UntypedSomeList mut r)
+    -- ^ Extract a value with this representation from an AnyList, failing
+    -- if the list is the wrong type for this representation.
+    rFromListMsg :: U.ReadCtx m mut => M.Message mut -> m (UntypedSomeList mut r)
+    -- ^ Create a zero-length value with this representation, living in the
+    -- provided message.
+
+-- helper function for throwing SchemaViolationError "expected ..."
+expected :: MonadThrow m => String -> m a
+expected msg = throwM $ E.SchemaViolationError $ "expected " ++ msg
+
+do
+    let mkIsListPtrRepr (r, listC, str) =
+            [d| instance IsListPtrRepr $r where
+                    rToList = $(pure $ TH.ConE listC)
+                    rFromList $(pure $ TH.ConP listC [TH.VarP (TH.mkName "l")]) = pure l
+                    rFromList _ = expected $(pure $ TH.LitE $ TH.StringL $ "pointer to " ++ str)
+                    rFromListMsg = U.messageDefault
+            |]
+    concat <$> traverse mkIsListPtrRepr
+        [ ( [t| 'ListNormal ('ListData 'Sz0) |]
+          , 'U.List0
+          , "List(Void)"
+          )
+        , ( [t| 'ListNormal ('ListData 'Sz1) |]
+          , 'U.List1
+          , "List(Bool)"
+          )
+        , ( [t| 'ListNormal ('ListData 'Sz8) |]
+          , 'U.List8
+          , "List(UInt8)"
+          )
+        , ( [t| 'ListNormal ('ListData 'Sz16) |]
+          , 'U.List16
+          , "List(UInt16)"
+          )
+        , ( [t| 'ListNormal ('ListData 'Sz32) |]
+          , 'U.List32
+          , "List(UInt32)"
+          )
+        , ( [t| 'ListNormal ('ListData 'Sz64) |]
+          , 'U.List64
+          , "List(UInt64)"
+          )
+        , ( [t| 'ListNormal 'ListPtr |]
+          , 'U.ListPtr
+          , "List(AnyPointer)"
+          )
+        , ( [t| 'ListComposite |]
+          , 'U.ListStruct
+          , "composite list"
+          )
+        ]
+
+instance (IsPtrRepr r, ReprFor a ~ 'Ptr r) => C.ToPtr s (Raw ('Mut s) a) where
+    toPtr _msg (Raw p) = pure $ toPtr @r p
+instance (IsPtrRepr r, ReprFor a ~ 'Ptr r) => C.FromPtr mut (Raw mut a) where
+    fromPtr msg p = Raw <$> fromPtr @r msg p
+
+instance Allocate 'Struct where
+    type AllocHint 'Struct = (Word16, Word16)
+    alloc msg = uncurry (U.allocStruct msg)
+instance Allocate 'Cap where
+    type AllocHint 'Cap = M.Client
+    alloc = U.appendCap
+instance Allocate ('List ('Just 'ListComposite)) where
+    type AllocHint ('List ('Just 'ListComposite)) = (Int, AllocHint 'Struct)
+    alloc msg (len, (nWords, nPtrs)) = U.allocCompositeList msg nWords nPtrs len
+instance AllocateNormalList r => Allocate ('List ('Just ('ListNormal r))) where
+    type AllocHint ('List ('Just ('ListNormal r))) = Int
+    alloc = allocNormalList @r
+
+class AllocateNormalList (r :: NormalListRepr) where
+    allocNormalList :: U.RWCtx m s => M.Message ('Mut s) -> Int -> m (UntypedSomeList ('Mut s) ('ListNormal r))
+instance AllocateNormalList ('ListData 'Sz0) where allocNormalList = U.allocList0
+instance AllocateNormalList ('ListData 'Sz1) where allocNormalList = U.allocList1
+instance AllocateNormalList ('ListData 'Sz8) where allocNormalList = U.allocList8
+instance AllocateNormalList ('ListData 'Sz16) where allocNormalList = U.allocList16
+instance AllocateNormalList ('ListData 'Sz32) where allocNormalList = U.allocList32
+instance AllocateNormalList ('ListData 'Sz64) where allocNormalList = U.allocList64
+instance AllocateNormalList 'ListPtr where allocNormalList = U.allocListPtr
+
+
+-- | Constraint that @a@ is a struct type.
+type IsStruct a = ReprFor a ~ 'Ptr ('Just 'Struct)
+
+-- | Constraint that @a@ is a capability type.
+type IsCap a = ReprFor a ~ 'Ptr ('Just 'Cap)
+
+-- | Constraint that @a@ is a pointer type.
+type IsPtr a =
+    ( ReprFor a ~ 'Ptr (PtrReprFor (ReprFor a))
+    , IsPtrRepr (PtrReprFor (ReprFor a))
+    )
diff --git a/lib/Capnp/Repr/Methods.hs b/lib/Capnp/Repr/Methods.hs
new file mode 100644
--- /dev/null
+++ b/lib/Capnp/Repr/Methods.hs
@@ -0,0 +1,160 @@
+{-# LANGUAGE AllowAmbiguousTypes    #-}
+{-# LANGUAGE DataKinds              #-}
+{-# LANGUAGE DuplicateRecordFields  #-}
+{-# LANGUAGE FlexibleContexts       #-}
+{-# LANGUAGE FlexibleInstances      #-}
+{-# LANGUAGE FunctionalDependencies #-}
+{-# LANGUAGE NamedFieldPuns         #-}
+{-# LANGUAGE RankNTypes             #-}
+{-# LANGUAGE ScopedTypeVariables    #-}
+{-# LANGUAGE TypeApplications       #-}
+{-# LANGUAGE TypeFamilies           #-}
+-- | Module: Capnp.Repr.Methods
+-- Description: Support for working with methods
+module Capnp.Repr.Methods
+    ( Method(..)
+    , HasMethod(..)
+
+    , Pipeline(..)
+    , Client(..)
+    , pipe
+    , pipelineClient
+    , waitPipeline
+
+    , AsClient(..)
+
+    -- * Calling methods.
+    , callB
+    , callR
+    , callP
+    ) where
+
+import qualified Capnp.Fields            as F
+import           Capnp.Message           (Mutability(..), newMessage)
+import qualified Capnp.Message           as M
+import qualified Capnp.New.Classes       as NC
+import qualified Capnp.Repr              as R
+import           Capnp.Rpc.Promise       (newPromise)
+import qualified Capnp.Rpc.Server        as Server
+import qualified Capnp.Rpc.Untyped       as Rpc
+import           Capnp.TraversalLimit    (evalLimitT)
+import qualified Capnp.Untyped           as U
+import           Control.Monad.Catch     (MonadThrow)
+import           Control.Monad.STM.Class (MonadSTM(..))
+import           Data.Word
+import           GHC.OverloadedLabels    (IsLabel(..))
+import           GHC.TypeLits            (Symbol)
+import           Internal.BuildPure      (PureBuilder, createPure)
+
+-- | Represents a method on the interface type @c@ with parameter
+-- type @p@ and return type @r@.
+data Method c p r = Method
+    { interfaceId :: !Word64
+    , methodId    :: !Word16
+    }
+
+-- | An instance @'HasMethod' name c p r@ indicates that the interface
+-- type @c@ has a method named @name@ with parameter type @p@ and
+-- return type @r@. The generated code includes instances of this
+-- for each method in the schema.
+class (R.IsCap c, R.IsStruct p, R.IsStruct r) => HasMethod (name :: Symbol) c p r | name c -> p r where
+    methodByLabel :: Method c p r
+
+instance HasMethod name c p r => IsLabel name (Method c p r) where
+    fromLabel = methodByLabel @name @c @p @r
+
+-- | A @'Pipeline' a@ is a reference to possibly-not-resolved result from
+-- a method call.
+newtype Pipeline a = Pipeline Rpc.Pipeline
+
+newtype Client a = Client Rpc.Client
+    deriving(Show, Eq)
+
+-- | The 'AsClient' class allows callers of rpc methods to abstract over 'Client's
+-- and 'Pipeline's. @'asClient'@ converts either of those to a client so that
+-- methods can be invoked on it.
+class AsClient f where
+    asClient :: MonadSTM m => R.IsCap c => f c -> m (Client c)
+
+instance AsClient Pipeline where
+    asClient = pipelineClient
+
+instance AsClient Client where
+    asClient = liftSTM . pure
+
+-- | Call a method. Use the provided 'PureBuilder' to construct the parameters.
+callB
+    :: (AsClient f, R.IsCap c, R.IsStruct p, MonadSTM m)
+    => Method c p r
+    -> (forall s. PureBuilder s (R.Raw ('Mut s) p))
+    -> f c
+    -> m (Pipeline r)
+callB method buildRaw c = liftSTM $ do
+    (params :: R.Raw 'Const a) <- R.Raw <$> createPure maxBound (R.fromRaw <$> buildRaw)
+    callR method params c
+
+-- | Call a method, supplying the parameters as a 'Raw' struct.
+callR
+    :: (AsClient f, R.IsCap c, R.IsStruct p, MonadSTM m)
+    => Method c p r -> R.Raw 'Const p -> f c -> m (Pipeline r)
+callR Method{interfaceId, methodId} (R.Raw arg) c = liftSTM $ do
+    Client client <- asClient c
+    (_, f) <- newPromise
+    Pipeline <$> Rpc.call
+        Server.CallInfo
+            { interfaceId
+            , methodId
+            , arguments = Just (U.PtrStruct arg)
+            , response = f
+            }
+            client
+
+-- | Call a method, supplying the parmaeters in parsed form.
+callP
+    :: forall c p r f m pp.
+        ( AsClient f
+        , R.IsCap c
+        , R.IsStruct p
+        , NC.Parse p pp
+        , MonadSTM m
+        , MonadThrow m
+        )
+    => Method c p r -> pp -> f c -> m (Pipeline r)
+callP method parsed client = do
+    struct <- createPure maxBound $ do
+        msg <- newMessage Nothing
+        R.fromRaw <$> NC.encode msg parsed
+    callR method (R.Raw struct) client
+
+-- | Project a pipeline to a struct onto one of its pointer fields.
+pipe :: ( R.IsStruct a
+        , R.ReprFor b ~ 'R.Ptr pr
+        ) => F.Field k a b -> Pipeline a -> Pipeline b
+pipe (F.Field field) (Pipeline p) =
+    case field of
+        F.GroupField   -> Pipeline p
+        F.PtrField idx -> Pipeline (Rpc.walkPipelinePtr p idx)
+
+-- | Convert a 'Pipeline' for a capability into a 'Client'.
+pipelineClient :: (R.IsCap a, MonadSTM m) => Pipeline a -> m (Client a)
+pipelineClient (Pipeline p) =
+    liftSTM $ Client <$> Rpc.pipelineClient p
+
+-- | Wait for the result of a pipeline, and return its value.
+waitPipeline ::
+    forall a m pr.
+    ( 'R.Ptr pr ~ R.ReprFor a
+    , R.IsPtrRepr pr
+    , MonadSTM m
+    ) => Pipeline a -> m (R.Raw 'Const a)
+waitPipeline (Pipeline p) =
+    -- We need an instance of MonadLimit for IsPtrRepr's ReadCtx requirement,
+    -- but none of the relevant instances do a lot of reading, so we just
+    -- supply a low-ish arbitrary bound.
+    liftSTM $ evalLimitT 100 $ do
+        ptr <- Rpc.waitPipeline p
+        R.Raw <$> R.fromPtr @pr M.empty ptr
+
+instance R.ReprFor a ~ 'R.Ptr ('Just 'R.Cap) => Rpc.IsClient (Client a) where
+    toClient (Client c) = c
+    fromClient = Client
diff --git a/lib/Capnp/Repr/Parsed.hs b/lib/Capnp/Repr/Parsed.hs
new file mode 100644
--- /dev/null
+++ b/lib/Capnp/Repr/Parsed.hs
@@ -0,0 +1,30 @@
+{-# LANGUAGE DataKinds            #-}
+{-# LANGUAGE TypeFamilies         #-}
+{-# LANGUAGE UndecidableInstances #-}
+module Capnp.Repr.Parsed (Parsed) where
+
+import qualified Data.ByteString as BS
+import           Data.Kind       (Type)
+import qualified Data.Text       as T
+import qualified Data.Vector     as V
+
+import qualified Capnp.New.Basics  as B
+import qualified Capnp.New.Classes as C
+
+import Capnp.Repr         (List, PtrRepr(..), Repr(..), ReprFor)
+import Capnp.Repr.Methods (Client)
+
+-- | @'Parsed' a@ is the high-level/ADT representation of the capnproto
+-- type @a@. For struct types this is equivalent to @'C.Parsed' a@, but
+-- we special case other types, such that e.g.
+-- @'Parsed' 'B.Data'@ = 'BS.ByteString'.
+type Parsed a = ParsedByRepr (ReprFor a) a
+
+-- Helper for 'Parsed'
+type family ParsedByRepr (r :: Repr) (a :: Type) where
+    ParsedByRepr ('Data _) a = a
+    ParsedByRepr ('Ptr ('Just 'Cap)) a = Client a
+    ParsedByRepr _ B.Data = BS.ByteString
+    ParsedByRepr _ B.Text = T.Text
+    ParsedByRepr _ (List a) = V.Vector (Parsed a)
+    ParsedByRepr _ a = C.Parsed a
diff --git a/lib/Capnp/Rpc.hs b/lib/Capnp/Rpc.hs
--- a/lib/Capnp/Rpc.hs
+++ b/lib/Capnp/Rpc.hs
@@ -50,12 +50,12 @@
 
 import Supervisors
 
-import Capnp.Rpc.Errors  (throwFailed)
-import Capnp.Rpc.Invoke  ((?))
+import Capnp.Rpc.Errors    (throwFailed)
+import Capnp.Rpc.Invoke    ((?))
 import Capnp.Rpc.Promise
 import Capnp.Rpc.Server
     ( MethodHandler
-    , Server (..)
+    , Server(..)
     , methodThrow
     , methodUnimplemented
     , pureHandler
@@ -63,11 +63,11 @@
     , rawHandler
     )
 import Capnp.Rpc.Transport
-    (Transport (..), handleTransport, socketTransport, tracingTransport)
+    (Transport(..), handleTransport, socketTransport, tracingTransport)
 import Capnp.Rpc.Untyped
     ( Client
-    , ConnConfig (..)
-    , IsClient (..)
+    , ConnConfig(..)
+    , IsClient(..)
     , handleConn
     , newPromiseClient
     , waitClient
diff --git a/lib/Capnp/Rpc/Errors.hs b/lib/Capnp/Rpc/Errors.hs
--- a/lib/Capnp/Rpc/Errors.hs
+++ b/lib/Capnp/Rpc/Errors.hs
@@ -26,7 +26,7 @@
 
 import qualified Control.Exception.Safe as E
 
-import Capnp.Gen.Capnp.Rpc.Pure (Exception (..), Exception'Type (..))
+import Capnp.Gen.Capnp.Rpc.Pure (Exception(..), Exception'Type(..))
 
 -- | Construct an exception with a type field of failed and the
 -- given text as its reason.
diff --git a/lib/Capnp/Rpc/Invoke.hs b/lib/Capnp/Rpc/Invoke.hs
--- a/lib/Capnp/Rpc/Invoke.hs
+++ b/lib/Capnp/Rpc/Invoke.hs
@@ -31,7 +31,7 @@
     , FromPtr(fromPtr)
     , ToStruct(toStruct)
     )
-import Capnp.Message        (Mutability (..))
+import Capnp.Message        (Mutability(..))
 import Capnp.TraversalLimit (defaultLimit, evalLimitT)
 import Data.Mutable         (freeze)
 
@@ -89,7 +89,7 @@
 invokePure method params pureFulfiller = do
     struct <- evalLimitT defaultLimit $ do
         msg <- M.newMessage Nothing
-        (toStruct <$> cerialize msg params) >>= freeze
+        cerialize msg params >>= freeze . toStruct
     (_, untypedFulfiller) <- liftSTM $ Promise.newPromiseWithCallback $ \case
         Left e -> Promise.breakPromise pureFulfiller e
         Right v ->
diff --git a/lib/Capnp/Rpc/Promise.hs b/lib/Capnp/Rpc/Promise.hs
--- a/lib/Capnp/Rpc/Promise.hs
+++ b/lib/Capnp/Rpc/Promise.hs
@@ -12,6 +12,7 @@
 
     -- * Creating promises
     , newPromise
+    , newReadyPromise
     , newPromiseWithCallback
     , newCallback
 
@@ -72,6 +73,10 @@
             pure result
         Just (Left exn) ->
             throwSTM exn
+
+-- | Create a promise that is already fulfilled, with the given value.
+newReadyPromise :: MonadSTM m => a -> m (Promise a)
+newReadyPromise value = liftSTM $ Promise <$> newTVar (Just (Right value))
 
 -- | Create a new promise and an associated fulfiller.
 newPromise :: MonadSTM m => m (Promise a, Fulfiller a)
diff --git a/lib/Capnp/Rpc/Server.hs b/lib/Capnp/Rpc/Server.hs
--- a/lib/Capnp/Rpc/Server.hs
+++ b/lib/Capnp/Rpc/Server.hs
@@ -44,7 +44,7 @@
 import Control.Monad.STM.Class
 import Data.Word
 
-import Control.Exception.Safe  (MonadCatch, finally, try)
+import Control.Exception.Safe  (MonadCatch, try)
 import Control.Monad.IO.Class  (MonadIO, liftIO)
 import Control.Monad.Primitive (PrimMonad, PrimState)
 import Data.Typeable           (Typeable)
@@ -56,7 +56,7 @@
     , ToStruct(toStruct)
     )
 import Capnp.Convert        (valueToMsg)
-import Capnp.Message        (Mutability (..))
+import Capnp.Message        (Mutability(..))
 import Capnp.Rpc.Errors     (eMethodUnimplemented, wrapException)
 import Capnp.Rpc.Promise    (Fulfiller, breakPromise, fulfill, newCallback)
 import Capnp.TraversalLimit (defaultLimit, evalLimitT)
@@ -262,7 +262,7 @@
 -- Accepts a queue of messages to handle, and 'ServerOps' used to handle them.
 -- returns when it receives a 'Stop' message.
 runServer :: TCloseQ.Q CallInfo -> ServerOps IO -> IO ()
-runServer q ops = go `finally` handleStop ops
+runServer q ops = go
   where
     go = atomically (TCloseQ.read q) >>= \case
         Nothing ->
diff --git a/lib/Capnp/Rpc/Untyped.hs b/lib/Capnp/Rpc/Untyped.hs
--- a/lib/Capnp/Rpc/Untyped.hs
+++ b/lib/Capnp/Rpc/Untyped.hs
@@ -36,6 +36,7 @@
     , Pipeline
     , walkPipelinePtr
     , pipelineClient
+    , waitPipeline
 
     -- * Exporting local objects
     , export
@@ -68,6 +69,7 @@
     , MonadThrow
     , SomeException
     , bracket
+    , finally
     , fromException
     , throwIO
     , throwM
@@ -93,7 +95,7 @@
 
 import Capnp.Classes        (cerialize, decerialize, fromStruct, new, toStruct)
 import Capnp.Convert        (valueToMsg)
-import Capnp.Message        (Message, Mutability (..))
+import Capnp.Message        (Message, Mutability(..))
 import Capnp.Rpc.Errors
     ( eDisconnected
     , eFailed
@@ -116,10 +118,10 @@
 import qualified Capnp.Rpc.Server         as Server
 import qualified Capnp.Untyped            as UntypedRaw
 import qualified Capnp.Untyped.Pure       as Untyped
-import qualified Internal.Finalizer       as Fin
 import qualified Internal.Rc              as Rc
 import qualified Internal.SnocList        as SnocList
 import qualified Internal.TCloseQ         as TCloseQ
+import qualified Lifetimes.Gc             as Fin
 
 -- Note [Organization]
 -- ===================
@@ -681,6 +683,19 @@
                         breakPromise f (wrapException False e)
                         pure p)
 
+-- | Wait for the pipeline's target to resolve, and return the corresponding
+-- pointer.
+waitPipeline :: MonadSTM m => Pipeline -> m RawMPtr
+waitPipeline Pipeline{state, steps} = liftSTM $ do
+    s <- readTVar state
+    case s of
+        ReadyPipeline (Left e) ->
+            throwM e
+        ReadyPipeline (Right v) ->
+            evalLimitT defaultLimit $ followPtrs (toList steps) v
+        _ ->
+            retry
+
 promisedAnswerClient :: Conn -> PromisedAnswer -> STM Client
 promisedAnswerClient conn answer@PromisedAnswer{answerId, transform} = do
     let tmpDest = RemoteDest AnswerDest { conn, answer }
@@ -868,7 +883,7 @@
                     callRemote conn info $ AnswerTgt answer
 
                 RemoteDest (ImportDest cell) -> do
-                    ImportRef { conn, importId } <- Fin.get cell
+                    ImportRef { conn, importId } <- Fin.readCell cell
                     callRemote conn info $ ImportTgt importId
 
             Error exn -> do
@@ -876,7 +891,7 @@
                 pure localPipeline
 
         ImportClient cell -> do
-            ImportRef { conn, importId } <- Fin.get cell
+            ImportRef { conn, importId } <- Fin.readCell cell
             callRemote conn info (ImportTgt importId)
 
 makeLocalPipeline :: Fulfiller RawMPtr -> STM (Pipeline, Fulfiller RawMPtr)
@@ -981,7 +996,7 @@
             abortConn conn' $ eUnimplemented
                 "This vat does not support level 3."
     -- Defer this until after any other callbacks run, in case disembargos
-    -- need to be send due to promise resolutions that we triggered:
+    -- need to be sent due to promise resolutions that we triggered:
     queueSTM conn' $ finishQuestion conn' def
         { R.questionId = qaWord answerId
         , R.releaseResultCaps = False
@@ -1101,9 +1116,10 @@
             , finalizerKey
             , unwrapper = Server.handleCast ops
             }
-    superviseSTM sup $ do
-        Fin.addFinalizer finalizerKey $ Rc.release qCall
-        Server.runServer q ops
+    superviseSTM sup ((do
+        Fin.addFinalizer finalizerKey $ atomically $ Rc.release qCall
+        Server.runServer q ops)
+      `finally` Server.handleStop ops)
     pure $ Client (Just client')
 
 clientMethodHandler :: Word64 -> Word16 -> Client -> Server.MethodHandler IO p r
@@ -1597,7 +1613,7 @@
             abortDisembargo "targets something that is not a promise."
 
         disembargoClient (ImportClient cell) = do
-            client <- Fin.get cell
+            client <- Fin.readCell cell
             case client of
                 ImportRef {conn=targetConn, importId}
                     | conn == targetConn ->
@@ -1709,7 +1725,6 @@
 updateQAReturn conn table tableName ret@Return{answerId} =
     lookupAbort tableName conn table answerId $ \case
         NewQA{onFinish, onReturn} -> do
-            mapQueueSTM conn onReturn ret
             M.insert
                 HaveReturn
                     { returnMsg = ret
@@ -1717,9 +1732,10 @@
                     }
                 answerId
                 table
+            traverse_ ($ ret) onReturn
         HaveFinish{onReturn} -> do
-            mapQueueSTM conn onReturn ret
             M.delete answerId table
+            traverse_ ($ ret) onReturn
         HaveReturn{} ->
             abortConn conn $ eFailed $
                 "Duplicate return message for " <> tableName <> " #"
@@ -1729,7 +1745,7 @@
 updateQAFinish conn table tableName finish@R.Finish{questionId} =
     lookupAbort tableName conn table (QAId questionId) $ \case
         NewQA{onFinish, onReturn} -> do
-            mapQueueSTM conn onFinish finish
+            traverse_ ($ finish) onFinish
             M.insert
                 HaveFinish
                     { finishMsg = finish
@@ -1738,7 +1754,7 @@
                 (QAId questionId)
                 table
         HaveReturn{onFinish} -> do
-            mapQueueSTM conn onFinish finish
+            traverse_ ($ finish) onFinish
             M.delete (QAId questionId) table
         HaveFinish{} ->
             abortConn conn $ eFailed $
@@ -1813,8 +1829,13 @@
             R.Message'bootstrap def { R.questionId = qaWord qid }
         M.insert
             NewQA
-                { onReturn = SnocList.singleton $
-                    resolveClientReturn tmpDest (writeTVar pState) conn' []
+                { onReturn = SnocList.fromList
+                    [ resolveClientReturn tmpDest (writeTVar pState) conn' []
+                    , \_ -> finishQuestion conn' R.Finish
+                        { questionId = qaWord qid
+                        , releaseResultCaps = False
+                        }
+                    ]
                 , onFinish = SnocList.empty
                 }
             qid
@@ -1913,26 +1934,25 @@
             newConn <- destConn newDest
             oldConn <- destConn oldDest
             if newConn == oldConn
-                then releaseAndResolve
+                then resolveNow
                 else disembargoAndResolve oldDest
         ( Just (ImportClient cell), RemoteDest oldDest ) -> do
-            ImportRef { conn=newConn } <- Fin.get cell
+            ImportRef { conn=newConn } <- Fin.readCell cell
             oldConn <- destConn oldDest
             if newConn == oldConn
-                then releaseAndResolve
+                then resolveNow
                 else disembargoAndResolve oldDest
   where
     destConn AnswerDest { conn } = pure conn
     destConn (ImportDest cell) = do
-        ImportRef { conn } <- Fin.get cell
+        ImportRef { conn } <- Fin.readCell cell
         pure conn
     destTarget AnswerDest { answer } = pure $ AnswerTgt answer
     destTarget (ImportDest cell) = do
-        ImportRef { importId } <- Fin.get cell
+        ImportRef { importId } <- Fin.readCell cell
         pure $ ImportTgt importId
 
-    releaseAndResolve = do
-        releaseTmpDest tmpDest
+    resolveNow = do
         resolve $ Ready (Client client)
 
     -- Flush the call buffer into the client's queue, and then pass the client
@@ -1974,18 +1994,6 @@
         , context = R.Disembargo'context'senderLoopback (embargoWord eid)
         }
 
--- Do any cleanup of a TmpDest; this should be called after resolving a
--- pending promise.
-releaseTmpDest :: TmpDest -> STM ()
-releaseTmpDest (LocalDest LocalBuffer{}) = pure ()
-releaseTmpDest (RemoteDest AnswerDest { conn, answer=PromisedAnswer{ answerId } }) =
-    whenLive conn $ \conn' ->
-        finishQuestion conn' def
-            { R.questionId = qaWord answerId
-            , R.releaseResultCaps = False
-            }
-releaseTmpDest (RemoteDest (ImportDest _)) = pure ()
-
 -- | Resolve a promised client to the result of a return. See Note [resolveClient]
 --
 -- The [Word16] is a list of pointer indexes to follow from the result.
@@ -2061,7 +2069,7 @@
 clientExportMap LocalClient{exportMap}   = pure exportMap
 clientExportMap PromiseClient{exportMap} = pure exportMap
 clientExportMap (ImportClient cell) = do
-    ImportRef{proxies} <- Fin.get cell
+    ImportRef{proxies} <- Fin.readCell cell
     pure proxies
 
 -- | insert the client into the exports table, bumping the refcount if it is
@@ -2080,7 +2088,7 @@
         | otherwise =
             Just EntryE { client, refCount = refCount + 1 }
 
--- | Generate a CapDescriptor', which we can sent to the connection's remote
+-- | Generate a CapDescriptor', which we can send to the connection's remote
 -- vat to identify client. In the process, this may allocate export ids, update
 -- reference counts, and so forth.
 emitCap :: Conn -> Client -> STM R.CapDescriptor'
@@ -2094,14 +2102,14 @@
             | conn == targetConn ->
                 pure $ R.CapDescriptor'receiverAnswer (marshalPromisedAnswer answer)
         Pending { tmpDest = RemoteDest (ImportDest cell) } -> do
-            ImportRef { conn, importId = IEId iid } <- Fin.get cell
+            ImportRef { conn, importId = IEId iid } <- Fin.readCell cell
             if conn == targetConn
                 then pure (R.CapDescriptor'receiverHosted iid)
                 else newSenderPromise
         _ ->
             newSenderPromise
     ImportClient cell -> do
-        ImportRef { conn=hostConn, importId } <- Fin.get cell
+        ImportRef { conn=hostConn, importId } <- Fin.readCell cell
         if hostConn == targetConn
             then pure (R.CapDescriptor'receiverHosted (ieWord importId))
             else R.CapDescriptor'senderHosted . ieWord <$> getConnExport targetConn client'
@@ -2138,7 +2146,7 @@
                     , importId
                     , proxies
                     }
-                queueIO conn' $ Fin.addFinalizer cell $ Rc.decr localRc
+                queueIO conn' $ Fin.addFinalizer cell $ atomically $ Rc.decr localRc
                 pure $ Client $ Just $ ImportClient cell
 
             Nothing ->
@@ -2160,7 +2168,7 @@
                     }
             Nothing -> do
                 rec imp <- newImport importId conn (Just (pState, tmpDest))
-                    ImportRef{proxies} <- Fin.get imp
+                    ImportRef{proxies} <- Fin.readCell imp
                     let tmpDest = RemoteDest (ImportDest imp)
                     pState <- newTVar Pending { tmpDest }
                 pure $ Client $ Just PromiseClient
@@ -2204,7 +2212,7 @@
         importId
         imports
     cell <- Fin.newCell importRef
-    queueIO conn' $ Fin.addFinalizer cell $ Rc.decr localRc
+    queueIO conn' $ Fin.addFinalizer cell $ atomically $ Rc.decr localRc
     pure cell
 
 -- | Release the identified import. Removes it from the table and sends a release
diff --git a/lib/Capnp/TraversalLimit.hs b/lib/Capnp/TraversalLimit.hs
--- a/lib/Capnp/TraversalLimit.hs
+++ b/lib/Capnp/TraversalLimit.hs
@@ -35,13 +35,13 @@
 import Prelude hiding (fail)
 
 import Control.Monad              (when)
-import Control.Monad.Catch        (MonadThrow(throwM))
+import Control.Monad.Catch        (MonadCatch(catch), MonadThrow(throwM))
 import Control.Monad.Fail         (MonadFail (..))
 import Control.Monad.IO.Class     (MonadIO (..))
 import Control.Monad.Primitive    (PrimMonad(primitive), PrimState)
 import Control.Monad.State.Strict
     (MonadState, StateT, evalStateT, execStateT, get, put, runStateT)
-import Control.Monad.Trans.Class (MonadTrans(lift))
+import Control.Monad.Trans.Class  (MonadTrans(lift))
 
 -- Just to define 'MonadLimit' instances:
 import Control.Monad.RWS    (RWST)
@@ -87,6 +87,12 @@
 
 instance MonadThrow m => MonadThrow (LimitT m) where
     throwM = lift . throwM
+
+instance MonadCatch m => MonadCatch (LimitT m) where
+    catch (LimitT m) f = LimitT $ do
+        catch m $ \e ->
+            let LimitT m' = f e in
+            m'
 
 instance MonadThrow m => MonadLimit (LimitT m) where
     invoice deduct = LimitT $ do
diff --git a/lib/Capnp/Tutorial.hs b/lib/Capnp/Tutorial.hs
--- a/lib/Capnp/Tutorial.hs
+++ b/lib/Capnp/Tutorial.hs
@@ -16,6 +16,9 @@
     -- * Setup
     -- $setup
 
+    -- * API Transition
+    -- $api-transition
+
     -- * Serialization
     -- $serialization
 
@@ -63,11 +66,30 @@
 -- <https://capnproto.org/install.html>. The latter is included with this
 -- library; to install it you can run the command:
 --
--- > cabal v2-install capnp --installdir=$DIR
+-- > cabal install capnp --installdir=$DIR
 --
 -- which will compile the package and create the @capnpc-haskell@ executable
 -- at @$DIR/capnpc-haskell@.
 
+-- $api-transition
+--
+-- This package is in them midst of transitioning many existing APIs over
+-- to a new design. As such, in this tuotrial we refer to the new api and the
+-- old API.
+--
+-- The old API will eventually be removed, but not before there is at least
+-- one release where both APIs are present and the new API has reached feature
+-- pairty. Right now, the primary missing functionality is in implementing
+-- RPC servers (clients work fine, better even).
+--
+-- This tutorial only covers the new API, but the tutorial for the old APIs
+-- is still available (and still correct) in the documentation for version
+-- 0.10 of this package: https://hackage.haskell.org/package/capnp-0.10.0.1
+--
+-- For more information about the reasons behind the new API, see:
+-- <http://zenhack.net/TODO>. TODO: link to blog post.
+
+
 -- $serialization
 --
 -- The serialization API is roughly divided into two parts: a low level API
@@ -93,8 +115,8 @@
 -- The downside is that you can't take advantage of some of the novel
 -- properties of the wire format. In particular:
 --
--- * It is theoretically slower, as there is a marshalling step involved
---   (actual performance has not been measured).
+-- * It is slower, as there is a marshalling step involved, and it uses more
+--   memory.
 -- * You can't mmap a file and read in only part of it.
 -- * You can't modify a message in-place.
 
@@ -146,72 +168,132 @@
 --
 -- * Capnp\/Gen\/Addressbook.hs
 -- * Capnp\/Gen\/Addressbook\/Pure.hs
+-- * Capnp\/Gen\/Addressbook\/New.hs
 -- * Capnp\/Gen\/ById\/Xcd6db6afb4a0cf5c/Pure.hs
+-- * Capnp\/Gen\/ById\/Xcd6db6afb4a0cf5c/New.hs
 -- * Capnp\/Gen\/ById\/Xcd6db6afb4a0cf5c.hs
 --
 -- The modules under @ById@ are an implementation detail.
--- @Capnp\/Gen\/Addressbook.hs@ is generated code for use with the low level API.
--- @Capnp\/Gen\/Addressbook\/Pure.hs@ is generated code for use with the high
--- level API. The latter will export the following data declarations (cleaned up
--- for readability).
+-- @Capnp\/Gen\/Addressbook\.New.hs@ is generated code for use with the new API.
+-- Other files are for use with the old API, and not covered here.
 --
--- > module Capnp.Gen.Addressbook.Pure where
+-- The generated moule will export declarations like the following (cleaned up
+-- and abbreviated for readability):
+--
+-- > import qualified Capnp.Repr as R
+-- > import qualified Capnp.Classes.New as C
+-- > import qualified Capnp.Repr.Parsed as RP
+-- > import GHC.Generics (Generic)
 -- >
--- > import Data.Int
--- > import Data.Text   (Text)
--- > import Data.Vector (Vector)
--- > import Data.Word
+-- > data Person
 -- >
--- > data AddressBook = AddressBook
--- >     { people :: Vector Person
--- >     }
+-- > type instance (R.ReprFor Person) = R.Ptr (Just R.Struct)
 -- >
--- > data Person = Person
--- >     { id         :: Word32
--- >     , name       :: Text
--- >     , email      :: Text
--- >     , phones     :: Vector Person'PhoneNumber
--- >     , employment :: Person'employment
--- >     }
+-- > instance (C.TypedStruct Person) where { ... }
+-- > instance (C.Allocate Person) where { ... }
 -- >
--- > data Person'PhoneNumber = Person'PhoneNumber
--- >     { number :: Text
--- >     , type_  :: Person'PhoneNumber'Type
--- >     }
+-- > data instance C.Parsed Person
+-- >     = Person
+-- >         { id :: Word32
+-- >         , name :: RP.Parsed Basics.Text
+-- >         , email :: RP.Parsed Basics.Text
+-- >         , phones :: RP.Parsed (R.List Person'PhoneNumber)
+-- >         , employment :: RP.Parsed Person'employment
+-- >         }
+-- >     deriving(Generic, Show, EQ)
 -- >
+-- > instance HasField "id" Slot Person Std_.Word32 where { ... }
+-- > instance HasField "name" Slot Person Basics.Text where { ... }
+-- > instance HasField "email" Slot Person Basics.Text where { ... }
+-- > instance HasField "phones" Slot Person (R.List Person'PhoneNumber) where { ... }
+-- > instance HasField "employment" Group Person Person'employment where { ... }
+--
 -- > data Person'employment
+-- >
+-- > type instance R.ReprFor Person'employment = R.Ptr (Std_.Just R.Struct)
+-- > instance C.TypedStruct Person'employment where { ... }
+-- > instance C.Allocate Person'employment where { ... }
+--
+-- > data instance C.Parsed Person'employment
+-- >     = Person'employment'
+-- >         { union' :: C.Parsed (GH.Which Person'employment)
+-- >         }
+-- >     deriving(Generic, Show, Eq)
+-- >
+-- > instance (GH.HasUnion Person'employment) where
+-- >     unionField = ...
+-- >     data RawWhich mut_ Person'employment
+-- >         = RW_Person'employment'unemployed (R.Raw mut_ ())
+-- >         | RW_Person'employment'employer (R.Raw mut_ Basics.Text)
+-- >         | RW_Person'employment'school (R.Raw mut_ Basics.Text)
+-- >         | RW_Person'employment'selfEmployed (R.Raw mut_ ())
+-- >         | RW_Person'employment'unknown' Word16
+-- >     data Which Person'employment
+-- >
+-- > instance GH.HasVariant "unemployed" GH.Slot Person'employment () where { ... }
+-- > instance GH.HasVariant "employer" GH.Slot Person'employment Basics.Text where { ... }
+-- > instance GH.HasVariant "school" GH.Slot Person'employment Basics.Text where { ... }
+-- > instance GH.HasVariant "selfEmployed" GH.Slot Person'employment () where { ... }
+-- >
+-- > data instance C.Parsed (Which Person'employment)
 -- >     = Person'employment'unemployed
--- >     | Person'employment'employer Text
--- >     | Person'employment'school Text
+-- >     | Person'employment'employer (RP.Parsed Basics.Text)
+-- >     | Person'employment'school (RP.Parsed Basics.Text)
 -- >     | Person'employment'selfEmployed
--- >     | Person'employment'unknown' Word16
+-- >     | Person'employment'unknown' Std_.Word16
+-- >     deriving(Generic, Show, Eq)
 -- >
+-- > instance C.Parse (GH.Which Person'employment) (C.Parsed (GH.Which Person'employment)) where
+-- >     ...
+-- >
+-- > data Person'PhoneNumber
+-- >
+-- > type instance R.ReprFor Person'PhoneNumber = R.Ptr (Std_.Just R.Struct)
+-- >
+-- > ...
+-- >
 -- > data Person'PhoneNumber'Type
 -- >     = Person'PhoneNumber'Type'mobile
 -- >     | Person'PhoneNumber'Type'home
 -- >     | Person'PhoneNumber'Type'work
--- >     | Person'PhoneNumber'Type'unknown' Word16
+-- >     | Person'PhoneNumber'Type'unknown' Std_.Word16
+-- >     deriving(Generic, Eq, Show)
+-- >
+-- > type instance R.ReprFor Person'PhoneNumber'Type = R.Data R.Sz16
+-- >
+-- > instance Enum Person'PhoneNumber'Type where { ... }
+-- >
+-- > ...
 --
 -- Note that we use the single quote character as a namespace separator for
 -- namespaces within a single capnproto schema.
 --
--- The module also exports instances of several type classes:
+-- So, we see that capnpc-haskell generates:
 --
--- * 'Show'
--- * 'Read'
--- * 'Eq'
--- * 'Generic' from "GHC.Generics"
--- * 'Default' from the @data-default@ package.
--- * A number of type classes defined by the @capnp@ package.
--- * Capnproto enums additionally implement the 'Enum' type class.
+-- * For each struct type or group:
+--   * An uninhabited type corresponding to that type
+--   * An instance of the 'R.ReprFor' type family, marking the type as having
+--     a struct as its representation.
+--   * An instance of 'HasField' for each field in the struct.
+--   * An instance of the 'C.Parsed' data family, which is an idiomatic Haskell
+--     ADT corresponding to the structure of the capnproto type.
+--     * If the struct has an anonymous union, some instances related to this,
+--       including a data family instance for @'Parsed' ('Which' a)@, which
+--       is an ADT representation of the union. Note that there is an @unknown'@
+--       variant, which is used for variants found on the wire that are not known
+--       to the schema (usually because the value was constructed using a newer
+--       version of the schema).
+-- * For each enum:
+--   * An ADT corresponding to that enum. There is no uninhabited type, and no
+--     'C.Parsed' data family instance; the type itself serves as both. As with
+--     unions, there is an @unknown'@ variant for unrecognized variants.
+--   * An instance of 'R.ReprFor', recording the wire representation of the enum
+--     (always 16-bit).
 --
--- Using the @Default@ instance to construct values means that your
--- existing code will continue to work if new fields are added in the
--- schema, but it also makes it easier to forget to set a field if you had
--- intended to. The instance maps @'def'@ to the default value as defined by
--- capnproto, so leaving out newly-added fields will do The Right Thing.
+-- Some additional things are generated for interfaces, but we cover those
+-- in the RPC section below.
 --
--- The module "Capnp" exposes the most frequently used
+-- The module "Capnp.New" exposes the most frequently used
 -- functionality from the capnp package. We can write an address book
 -- message to standard output using the high-level API like so:
 --
@@ -220,14 +302,14 @@
 -- > -- code relys on it to resolve collisions in capnproto struct field
 -- > -- names:
 -- > {-# LANGUAGE DuplicateRecordFields #-}
--- > import Capnp.Gen.Addressbook.Pure
+-- > import Capnp.Gen.Addressbook.New
 -- >
--- > -- Note that Capnp re-exports `def`, as a convienence
--- > import Capnp (putValue, def)
+-- > -- Note that Capnp.New re-exports `def`, as a convienence
+-- > import Capnp.New (putParsed, def)
 -- >
 -- > import qualified Data.Vector as V
 -- >
--- > main = putValue AddressBook
+-- > main = putParsed AddressBook
 -- >     { people = V.fromList
 -- >         [ Person
 -- >             { id = 123
@@ -239,7 +321,7 @@
 -- >                     , type_ =  Person'PhoneNumber'Type'mobile
 -- >                     }
 -- >                 ]
--- >             , employment = Person'employment'school "MIT"
+-- >             , employment = Person'employment $ Person'employment'school "MIT"
 -- >             }
 -- >         , Person
 -- >             { id = 456
@@ -255,7 +337,7 @@
 -- >                     , type_ = Person'PhoneNumber'Type'work
 -- >                     }
 -- >                 ]
--- >             , employment = Person'employment'selfEmployed
+-- >             , employment = Person'employment $ Person'employment'selfEmployed
 -- >             }
 -- >         ]
 -- >     }
@@ -263,25 +345,27 @@
 -- 'putValue' is equivalent to @'hPutValue' 'stdout'@; 'hPutValue' may be used
 -- to write to an arbitrary handle.
 --
--- We can use 'getValue' (or alternately 'hGetValue') to read in a message:
+-- We can use 'getParsed' (or alternately 'hGetParsed') to read in a message:
 --
 -- > -- ...
 -- >
--- > import Capnp (getValue, defaultLimit)
+-- > {-# LANGUAGE TypeApplications #-}
+-- > import Capnp.New (getParsed, defaultLimit)
 -- >
 -- > -- ...
 -- >
 -- > main = do
--- >     value <- getValue defaultLimit
--- >     print (value :: AddressBook)
+-- >     value <- getParsed @AddressBook defaultLimit
+-- >     print value
 --
--- Note the type annotation; there are a number of interfaces in the
+-- Note the use of @TypeApplications@; there are a number of interfaces in the
 -- library which dispatch on return types, and depending on how they are
 -- used you may have to give GHC a hint for type inference to succeed.
--- The type of 'getValue' is:
 --
--- @'getValue' :: 'FromStruct' 'ConstMsg' a => 'Int' -> 'IO' a@
+-- The type of 'getParsed' is:
 --
+-- @'getParsed' :: (R.IsStruct a, Parse a pa) => WordCount -> IO pa
+--
 -- ...and so it may be used to read in any struct type.
 --
 -- 'defaultLimit' is a default value for the traversal limit, which acts to
@@ -294,67 +378,23 @@
 -- If an error occurs, an exception will be thrown of type 'Error' from the
 -- "Capnp.Errors" module.
 
--- $highlevel-codegen-rules
---
--- The complete rules for how capnproto types map to Haskell are as follows:
---
--- * Integer types and booleans map to the obvious corresponding Haskell
---   types.
--- * @Float32@ and @Float64@ map to 'Float' and 'Double', respectively.
--- * @Void@ maps to the unit type, @()@.
--- * Lists map to 'Vector's from the Haskell vector package. Note that
---   right now we use boxed vectors for everything; at some point this will
---   likely change for performance reasons. Using the functions from
---   "Data.Vector.Generic" will probably decrease the amount of code you
---   will need to modify when upgrading.
--- * @Text@ maps to (strict) 'T.Text' from the Haskell `text` package.
--- * @Data@ maps to (strict) 'BS.ByteString's
--- * Type constructor names are the fully qualified (within the schema file)
---   capnproto name, using the single quote character as a namespace
---   separator.
--- * Structs map to record types. The name of the data constructor is the
---   same as the name of the type constructor.
--- * Groups are treated mostly like structs, except that the data constructor
---   (but not the type constructor) has an extra trailing single-quote. This
---   is to avoid name collisions that would otherwise be possible.
--- * Field names map to record fields with the same names. Names that are
---   Haskell keywords have an underscore appended to them, e.g. @type_@ in
---   the above example. These names are not qualified; we use the
---   @DuplicateRecordFields@ extension to disambiguate them.
--- * Union fields result in an auxiliary type definition named
---   @\<containing type's name>'\<union field name>@. For an example, see the
---   mapping of the `employment` field above.
--- * Unions and enums map to sum types, each of which has a special
---   `unknown'` variant (note the trailing single quote). This variant will
---   be returned when parsing a message which contains a union tag greater
---   than what was defined in the schema. This is most likely to happen
---   when dealing with data generated by software using a newer version
---   of the same schema. The argument to the data constructor is the value
---   of the tag.
--- * Union variants with arguments of type `Void` map to data constructors
---   with no arguments.
--- * The type for an anonymous union has the same name as its containing
---   struct with an extra single quote on the end. You can think of this as
---   being like a field with the empty string as its name. The Haskell
---   record accessor for this field is named `union'` (note the trailing
---   single quote).
--- * As a special case, if a struct consists entirely of one anonymous
---   union, the type for the struct itself is omitted, and the name of the
---   type for the union does not have the trailing single quote (so its
---   name is what the name of the struct type would be).
--- * Fields of type `AnyPointer` map to the types defined in
---   @Capnp.Untyped.Pure@.
--- * Interfaces generate associated type classes and client types; see
---   the section on RPC.
-
 -- $lowlevel
 --
 -- The low level API exposes a much more imperative interface than the
--- high-level API. Instead of algebraic data types, types are exposed as
--- opaque wrappers around references into a message, and accessors are
--- generated for the fields. This API is much closer in spirit to that of
--- the C++ reference implementation.
+-- high-level API. Instead of algebraic data types, There is an opaque
+-- wrapper type 'R.Raw':
 --
+-- @
+-- newtype Raw (mut :: Mutability) a = ...
+-- @
+--
+-- which accepts as type parameters the mutability of the underlying message,
+-- and a phantom type indicating the capnproto type. This second type parameter
+-- will be instantiated with the (for structs, uninhabited) type generated by
+-- the schema compiler plugin. The accessors in "Capnp.New.Accessors"
+-- (re-exported by "Capnp.New") are used to read and write the fields.
+-- This API is much closer in spirit to that of the C++ reference implementation.
+--
 -- Because the low level interfaces do not parse and validate the message
 -- up front, accesses to the message can result in errors. Furthermore, the
 -- traversal limit needs to be tracked to avoid denial of service attacks.
@@ -366,152 +406,116 @@
 
 -- $lowlevel-example
 --
--- We'll use the same schema as above for our example. Instead of standard
--- algebraic data types, the module `Capnp.Addressbook` primarily defines
--- newtype wrappers, which should be treated as opaque, and accessor
--- functions for the various fields.
---
--- @
--- newtype AddressBook msg = ...
---
--- get_Addressbook'people :: ReadCtx m msg => AddressBook msg -> m (List msg (Person msg))
---
--- newtype Person msg = ...
---
--- get_Person'id   :: ReadCtx m msg => Person msg -> m Word32
--- get_Person'name :: ReadCtx m msg => Person msg -> m (Text msg)
--- @
---
--- `ReadCtx` is a type synonym:
---
--- @
--- type ReadCtx m msg = (Message m msg, MonadThrow m, MonadLimit m)
--- @
---
--- Note the following:
---
--- * The generated data types are parametrized over a `msg` type. This is
---   the type of the message in which the value is contained. This can be
---   either 'ConstMsg' in the case of an immutable message, or @'MutMsg' s@
---   for a mutable message (where `s` is the state token for the monad in
---   which the message may be mutated).
--- * The `Text` and `List` types mentioned in the type signatures are types
---   defined within the capnp library, and are similarly views into the
---   underlying message.
--- * Access to the message happens in a monad which affords throwing
---   exceptions, tracking the traversal limit, and of course reading the
---   message.
---
--- The snippet below prints the names of each person in the address book:
+-- We'll use the same schema as above for our example. The snippet below prints
+-- the names of each person in the address book:
 --
--- > {-# LANGUAGE ScopedTypeVariables #-}
--- > import Prelude hiding (length)
--- >
--- > import Capnp.Gen.Addressbook
--- > import Capnp
--- >     (ConstMsg, defaultLimit, evalLimitT, getValue, index, length, textBytes)
+-- > {-# LANGUAGE OverloadedLabels #-}
+-- > {-# LANGUAGE TypeApplications #-}
 -- >
--- > import           Control.Monad         (forM_)
--- > import           Control.Monad.Trans   (lift)
--- > import qualified Data.ByteString.Char8 as BS8
+-- > import           Capnp.Gen.Addressbook.New
+-- > import qualified Capnp.New                 as C
+-- > import           Control.Monad             (forM_)
+-- > import           Control.Monad.Trans       (lift)
+-- > import           Data.Function             ((&))
+-- > import qualified Data.Text                 as T
 -- >
+-- > main :: IO ()
 -- > main = do
--- >     addressbook :: AddressBook ConstMsg <- getValue defaultLimit
--- >     evalLimitT defaultLimit $ do
--- >         people <- get_AddressBook'people addressbook
--- >         forM_ [0..length people - 1] $ \i -> do
--- >             name <- index i people >>= get_Person'name >>= textBytes
--- >             lift $ BS8.putStrLn name
---
--- Note that we use the same `getValue` function as in the high-level
--- example above.
+-- >     addressbook <- C.getRaw @AddressBook C.defaultLimit
+-- >     C.evalLimitT C.defaultLimit $ do
+-- >         people <- C.readField #people addressbook
+-- >         forM_ [0..C.length people - 1] $ \i -> do
+-- >             people
+-- >                 & C.index i
+-- >                 >>= C.parseField #name
+-- >                 >>= lift . putStrLn . T.unpack
 
 -- $lowlevel-write
 --
 -- Writing messages using the low-level API has a similarly imperative feel.
 -- The below constructs the same message as in our high-level example above:
 --
--- > import Capnp.Gen.Addressbook
+-- > {-# LANGUAGE DataKinds        #-}
+-- > {-# LANGUAGE OverloadedLabels #-}
+-- > {-# LANGUAGE TypeApplications #-}
 -- >
--- > import Capnp
--- >     ( MutMsg
--- >     , PureBuilder
--- >     , cerialize
--- >     , createPure
--- >     , defaultLimit
--- >     , index
--- >     , newMessage
--- >     , newRoot
--- >     , putMsg
--- >     )
+-- > import Data.Function ((&))
 -- >
+-- > import Capnp.Gen.Addressbook.New
+-- >
+-- > import qualified Capnp.New as C
 -- > import qualified Data.Text as T
 -- >
+-- > main :: IO ()
 -- > main =
--- >     let Right msg = createPure defaultLimit buildMsg
--- >     in putMsg msg
+-- >     let Right msg = C.createPure C.defaultLimit buildMsg
+-- >     in C.putMsg msg
 -- >
--- > buildMsg :: PureBuilder s (MutMsg s)
+-- > buildMsg :: C.PureBuilder s (C.Message ('C.Mut s))
 -- > buildMsg = do
--- >     -- newMessage allocates a new, initially empty, mutable message:
--- >     msg <- newMessage
+-- >     -- newMessage allocates a new, initially empty, mutable message. It
+-- >     -- takes an optional size hint:
+-- >     msg <- C.newMessage Nothing
 -- >
 -- >     -- newRoot allocates a new struct as the root object of the message.
--- >     -- In this case the type of the struct can be inferred from our later
--- >     -- use of AddressBook's accessors:
--- >     addressbook <- newRoot msg
+-- >     -- The unit argument is a hint to the allocator to determine the size
+-- >     -- of the object; for types whose size is not fixed (e.g. untyped structs,
+-- >     -- lists), this may be something more meaningful.
+-- >     addressbook <- C.newRoot @AddressBook () msg
 -- >
--- >     -- new_* accessors allocate a new value of the correct type for a
--- >     -- given field. These functions accordingly only exist for types
--- >     -- which are encoded as pointers (structs, lists, bytes...). In
--- >     -- the case of lists, these take an extra argument specifying a
--- >     -- the length of the list:
--- >     people <- new_AddressBook'people 2 addressbook
+-- >     -- newField can be used to allocate the value of a field, for pointer
+-- >     -- types like lists. The number is the allocation hint, as used by newRoot.
+-- >     -- We can use the OverloadedLabels extension to pass in fields by name.
+-- >     people <- C.newField #people 2 addressbook
 -- >
 -- >     -- Index gets an object at a specified location in a list. Cap'N Proto
 -- >     -- lists are flat arrays, and in the case of structs the structs are
 -- >     -- unboxed, so there is no need to allocate each element:
--- >     alice <- index 0 people
+-- >     alice <- C.index 0 people
 -- >
--- >     -- set_* functions set the value of a field. For fields of non-pointer
--- >     -- types (integers, bools...), We can just pass the value we want to set_*,
--- >     -- rather than allocating via new_* first:
--- >     set_Person'id alice 123
+-- >     -- encodeField takes the parsed form of a value and marshals it into
+-- >     -- the specified field. For basic types like integers & booleans, this
+-- >     -- is almost always what you want. For larger values, you may want to
+-- >     -- use newField as above, or separately create the value and use setField,
+-- >     -- as shown below.
+-- >     C.encodeField #id 123 alice
+-- >     C.encodeField #name (T.pack "Alice") alice
+-- >     C.encodeField #email (T.pack "alice@example.com") alice
 -- >
--- >     -- 'cerialize' is used to marshal a value into a message. Below, we copy
--- >     -- the text for Alice's name and email address into the message, and then
--- >     -- use Person's set_* functions to attach the resulting objects to our
--- >     -- Person:
--- >     set_Person'name alice =<< cerialize msg (T.pack "Alice")
--- >     set_Person'email alice =<< cerialize msg (T.pack "alice@example.com")
+-- >     -- We would probably use newField here, but to demonstrate, we can allocate
+-- >     -- the value separately with new, and then set it with setField.
+-- >     phones <- C.new @(C.List Person'PhoneNumber) 1 msg
+-- >     C.setField #phones phones alice
 -- >
--- >     phones <- new_Person'phones 1 alice
--- >     mobilePhone <- index 0 phones
--- >     set_Person'PhoneNumber'number mobilePhone =<< cerialize msg (T.pack "555-1212")
--- >     set_Person'PhoneNumber'type_ mobilePhone Person'PhoneNumber'Type'mobile
+-- >     mobilePhone <- C.index 0 phones
+-- >     -- It is sometimes more ergonomic to use (&) from Data.Function. You might
+-- >     -- ask why not just make the container the first argument, but it works
+-- >     -- out better this way for the read examples.
+-- >     mobilePhone & C.encodeField #number (T.pack "555-1212")
+-- >     mobilePhone & C.encodeField #type_ Person'PhoneNumber'Type'mobile
 -- >
--- >     -- Setting union fields is slightly awkward; we have an auxiliary type
--- >     -- for the union field, which we must get_* first:
--- >     employment <- get_Person'employment alice
+-- >     -- Since named unions act like unnamed unions inside a group, we first have
+-- >     -- to get the group field:
+-- >     employment <- C.readField #employment alice
 -- >
--- >     -- Then, we can use set_* to set both the tag of the union and the
+-- >     -- Then, we can use encodeVariant to set both the tag of the union and the
 -- >     -- value:
--- >     set_Person'employment'school employment =<< cerialize msg (T.pack "MIT")
+-- >     employment & C.encodeVariant #school (T.pack "MIT")
 -- >
--- >     bob <- index 1 people
--- >     set_Person'id bob 456
--- >     set_Person'name bob =<< cerialize msg (T.pack "Bob")
--- >     set_Person'email bob =<< cerialize msg (T.pack "bob@example.com")
+-- >     bob <- C.index 1 people
+-- >     bob & C.encodeField #id 456
+-- >     bob & C.encodeField #name (T.pack "Bob")
+-- >     bob & C.encodeField #email (T.pack "bob@example.com")
 -- >
--- >     phones <- new_Person'phones 2 bob
--- >     homePhone <- index 0 phones
--- >     set_Person'PhoneNumber'number homePhone =<< cerialize msg (T.pack "555-4567")
--- >     set_Person'PhoneNumber'type_ homePhone Person'PhoneNumber'Type'home
--- >     workPhone <- index 1 phones
--- >     set_Person'PhoneNumber'number workPhone =<< cerialize msg (T.pack "555-7654")
--- >     set_Person'PhoneNumber'type_ workPhone Person'PhoneNumber'Type'work
--- >     employment <- get_Person'employment bob
--- >     set_Person'employment'selfEmployed employment
+-- >     phones <- bob & C.newField #phones 2
+-- >     homePhone <- phones & C.index 0
+-- >     homePhone & C.encodeField #number (T.pack "555-4567")
+-- >     homePhone & C.encodeField #type_ Person'PhoneNumber'Type'home
+-- >     workPhone <- phones & C.index 1
+-- >     workPhone & C.encodeField #number (T.pack "555-7654")
+-- >     workPhone & C.encodeField #type_ Person'PhoneNumber'Type'work
+-- >     employment <- bob & C.readField #employment
+-- >     employment & C.encodeVariant #selfEmployed () -- Note the (), since selfEmploy is Void.
 -- >
 -- >     pure msg
 
@@ -522,6 +526,16 @@
 -- example which demos more of the protocol's capabilities, see the calculator example
 -- in the source repository's @examples/@ directory.
 --
+-- Note: for now, we only show the client here, as the new API does not yet support
+-- implementing rpc servers -- for that you can use the old API, see old docs for
+-- more info.
+--
+-- Note that capnproto does not have a notion of "clients" and "servers" in the
+-- traditional networking sense; the two sides of a connection are symmetric. In
+-- capnproto terminology, a "client" is a handle for calling methods, and a "server"
+-- is an object that handles methods -- but there may be many of either or both of
+-- these on each side of a connection.
+--
 -- Given the schema:
 --
 -- > @0xd0a87f36fa0182f5;
@@ -530,112 +544,48 @@
 -- >   echo @0 (query :Text) -> (reply :Text);
 -- > }
 --
--- In the low level module, the code generator generates a newtype wrapper called @Echo@
--- around a capability.
---
--- Most of the interesting stuff is in the high-level module (but note that you can still
--- do RPC using low-level serialization APIs). The code generator will create an API like
--- (after a bit of cleanup):
---
--- > newtype Echo = Echo Client
--- >
--- > class MonadIO m => Echo'server_ m cap where
--- >     echo'echo :: cap -> Server.MethodHandler m Echo'echo'params Echo'echo'results
--- >
--- > instance Echo'server_ IO Echo
--- >
--- > export_Echo :: Echo'server_ IO a => Supervisors -> a -> STM Echo
---
--- The type @Echo@ is a handle to an object (possibly remote), which can be used to
--- make method calls. It is a newtype wrapper around a 'Client', which provides
--- similar facilities, but doesn't know about the schema.
---
--- To provide an implementation of the @Echo@ interface, you need an instance of the
--- @Echo'server_@ type class. The @export_Echo@ function is used to convert such an
--- instance into a handle to the object that can be passed around.
---
--- Each time you call @export_Function@, it creates a thread that handles incoming
--- messages in sequence.
+-- In the low level module, the code generator generates an unihabited type @Echo@,
+-- with its @'R.ReprFor'@ instance indicating that it is a capability.
 --
--- Note that capnproto does not have a notion of "clients" and "servers" in the
--- traditional networking sense; the two sides of a connection are symmetric. In
--- capnproto terminology, a "client" is a handle for calling methods, and a "server"
--- is an object that handles methods -- but there may be many of either or both of
--- these on each side of a connection.
+-- There is a 'Client' type exported by "Capnp.New", which is parametrized over
+-- a phantom type indicating the type of the remote capability. So a @'Client'
+-- Echo@ allows you to call methods on an @Echo@ interface.
 --
--- Here is an an echo (networking) server using this interface:
+-- Actually invoking methods uses the functions in "Capnp.Repr.Methods",
+-- re-exported by "Capnp.New". 'callP', 'callB', and 'callR' provide different
+-- ways of supplying arguments to a call, but all are intended to be used with
+-- the OverloadedLabels extension for specifying the method name.
 --
--- > {-# LANGUAGE MultiParamTypeClasses #-}
--- > {-# LANGUAGE OverloadedStrings     #-}
--- > import Network.Simple.TCP (serve)
--- >
--- > import Capnp     (def, defaultLimit)
--- > -- 'Capnp.Rpc' exposes the most commonly used parts of the RPC system:
--- > import Capnp.Rpc
--- >     (ConnConfig(..), handleConn, pureHandler, socketTransport, toClient)
--- >
--- > import Capnp.Gen.Echo.Pure
--- >
--- > -- | A type to declare an instance on:
--- > data MyEchoServer = MyEchoServer
--- >
--- > -- The main logic of an echo server:
--- > instance Echo'server_ IO MyEchoServer where
--- >     -- Each method of an interface generates a corresponding
--- >     -- method in its type class. The name of the method is prefixed
--- >     -- with the name of the interface, so method bar on interface
--- >     -- Foo will be called foo'bar.
--- >     --
--- >     -- The type of a method is left abstract, and functions like
--- >     -- 'pureHandler' are used to construct method handlers; see the
--- >     -- "Handling method calls" section in the docs for 'Capnp.Rpc'.
--- >     echo'echo = pureHandler $ \MyEchoServer params ->
--- >         pure def { reply = query params }
--- >
--- > main :: IO ()
--- > main = serve "localhost" "4000" $ \(sock, _addr) ->
--- >     -- once we get a network connection, we use 'handleConn' to start
--- >     -- the rpc subsystem on that connection. It takes a transport with
--- >     -- which to send messages, and a config.
--- >     handleConn (socketTransport sock defaultLimit) def
--- >         { getBootstrap = \sup ->
--- >            -- The only setting we override in this example is our
--- >            -- bootstrap interface. The bootstrap interface is a "default"
--- >            -- object that clients can request on startup. By default
--- >            -- there is none, here we provide a client for our echo server.
--- >            Just . toClient <$> export_Echo sup MyEchoServer
--- >         }
+-- Pipelining onto a field can be done with the 'pipe' function.
+-- 'waitPipeline' blocks until the result is available.
 --
--- The echo client looks like:
+-- Here is an an echo (networking) client using this interface:
 --
+-- > {-# LANGUAGE OverloadedLabels  #-}
 -- > {-# LANGUAGE OverloadedStrings #-}
--- > module Examples.Rpc.EchoClient (main) where
 -- >
+-- > import Data.Function      ((&))
+-- > import Data.Functor       ((<&>))
 -- > import Network.Simple.TCP (connect)
 -- >
--- > import Capnp     (def, defaultLimit)
--- > import Capnp.Rpc (ConnConfig(..), handleConn, socketTransport, wait, (?))
+-- > import qualified Capnp.New as C
+-- > import           Capnp.Rpc
+-- >     (ConnConfig(..), fromClient, handleConn, socketTransport)
 -- >
--- > import Capnp.Gen.Echo.Pure
+-- > import Capnp.Gen.Echo.New
 -- >
 -- > main :: IO ()
 -- > main = connect "localhost" "4000" $ \(sock, _addr) ->
--- >     handleConn (socketTransport sock defaultLimit) def
--- >         -- In this case, we leave 'getBootstrap' empty and set
--- >         -- 'withBootstrap', which will request the other side's
--- >         -- bootstrap interface. If a non-Nothing value is supplied for
--- >         -- 'withBootstrap', 'handleConn' will exit (and disconnect)
--- >         -- when it completes.
--- >         { withBootstrap = Just $ \_sup client ->
--- >             -- Clients also have instances of their server_ classes, so
--- >             -- can use these instances to call methods on the remote
--- >             -- object. The '?' is the message send operator.
--- >             --
--- >             -- The method call _immediately_ returns, yielding a promise
--- >             -- that will be fulfilled when the results of the call actually
--- >             -- arive. We use 'wait' to wait for the promise to resolve,
--- >             -- display the result to the user, and then exit.
--- >             echo'echo (Echo client) ? def { query = "Hello, World!" }
--- >                 >>= wait
+-- >     handleConn (socketTransport sock C.defaultLimit) C.def
+-- >         { debugMode = True
+-- >         , withBootstrap = Just $ \_sup client ->
+-- >             let echoClient :: C.Client Echo
+-- >                 echoClient = fromClient client
+-- >             in
+-- >             echoClient
+-- >                 & C.callP #echo C.def { query = "Hello, World!" }
+-- >                 <&> C.pipe #reply
+-- >                 >>= C.waitPipeline
+-- >                 >>= C.evalLimitT C.defaultLimit . C.parse
 -- >                 >>= print
 -- >         }
diff --git a/lib/Capnp/Untyped.hs b/lib/Capnp/Untyped.hs
--- a/lib/Capnp/Untyped.hs
+++ b/lib/Capnp/Untyped.hs
@@ -19,8 +19,8 @@
 The types and functions in this module know about things like structs and
 lists, but are not schema aware.
 
-Each of the data types exported by this module is parametrized over a Message
-type (see "Capnp.Message"), used as the underlying storage.
+Each of the data types exported by this module is parametrized over the
+mutability of the message it contains (see "Capnp.Message").
 -}
 module Capnp.Untyped
     ( Ptr(..), List(..), Struct, ListOf, Cap
@@ -33,6 +33,10 @@
     , getData, getPtr
     , setData, setPtr
     , copyStruct
+    , copyPtr
+    , copyList
+    , copyCap
+    , copyListOf
     , getClient
     , get, index, length
     , setIndex
@@ -64,30 +68,31 @@
 import Data.Word
 
 import Control.Exception.Safe    (impureThrow)
-import Control.Monad             (forM_)
+import Control.Monad             (forM_, unless)
 import Control.Monad.Catch       (MonadCatch, MonadThrow(throwM))
 import Control.Monad.Catch.Pure  (CatchT(runCatchT))
-import Control.Monad.Primitive   (PrimMonad (..))
+import Control.Monad.Primitive   (PrimMonad(..))
+import Control.Monad.ST          (RealWorld)
 import Control.Monad.Trans.Class (MonadTrans(lift))
 
 import qualified Data.ByteString     as BS
 import qualified Language.Haskell.TH as TH
 
-import Capnp.Address        (OffsetError (..), WordAddr (..), pointerFrom)
+import Capnp.Address        (OffsetError(..), WordAddr(..), pointerFrom)
 import Capnp.Bits
-    ( BitCount (..)
-    , ByteCount (..)
-    , Word1 (..)
-    , WordCount (..)
+    ( BitCount(..)
+    , ByteCount(..)
+    , Word1(..)
+    , WordCount(..)
     , bitsToBytesCeil
     , bytesToWordsCeil
     , replaceBits
     , wordsToBytes
     )
-import Capnp.Message        (Mutability (..))
-import Capnp.Pointer        (ElementSize (..))
-import Capnp.TraversalLimit (MonadLimit(invoice))
-import Data.Mutable         (Thaw (..))
+import Capnp.Message        (Mutability(..))
+import Capnp.Pointer        (ElementSize(..))
+import Capnp.TraversalLimit (LimitT, MonadLimit(invoice))
+import Data.Mutable         (Thaw(..))
 
 import qualified Capnp.Errors  as E
 import qualified Capnp.Message as M
@@ -454,6 +459,7 @@
             , nLen = 0
             }
 
+-- | Extract a client (indepedent of the messsage) from the capability.
 getClient :: ReadCtx m mut => Cap mut -> m M.Client
 getClient (Cap msg idx) = M.getCap msg (fromIntegral idx)
 
@@ -461,6 +467,7 @@
 -- Deducts 1 from the quota for each word read (which may be multiple in the
 -- case of far pointers).
 get :: ReadCtx m mut => M.WordPtr mut -> m (Maybe (Ptr mut))
+{-# SPECIALIZE get :: M.WordPtr ('Mut RealWorld) -> LimitT IO (Maybe (Ptr ('Mut RealWorld))) #-}
 get ptr@M.WordPtr{pMessage, pAddr} = do
     word <- getWord ptr
     case P.parsePtr word of
@@ -482,7 +489,15 @@
                         , pAddr = addr'
                         }
                 if not twoWords
-                    then get landingPtr
+                    then do
+                        -- XXX: invoice so we don't open ourselves up to DoS
+                        -- in the case of a chain of far pointers -- but a
+                        -- better solution would be to just reject after the
+                        -- first chain since this isn't actually legal. TODO
+                        -- refactor (and then get rid of the MonadLimit
+                        -- constraint).
+                        invoice 1
+                        get landingPtr
                     else do
                         landingPad <- getWord landingPtr
                         case P.parsePtr landingPad of
@@ -528,7 +543,7 @@
 
   where
     getWord M.WordPtr{pSegment, pAddr=WordAt{wordIndex}} =
-        invoice 1 *> M.read pSegment wordIndex
+        M.read pSegment wordIndex
     resolveOffset addr@WordAt{..} off =
         addr { wordIndex = wordIndex + fromIntegral off + 1 }
     getList ptr@M.WordPtr{pAddr=addr@WordAt{wordIndex}} eltSpec = PtrList <$>
@@ -591,7 +606,8 @@
 
 -- | @'setIndex value i list@ Set the @i@th element of @list@ to @value@.
 setIndex :: RWCtx m s => a -> Int -> ListOf ('Mut s) a -> m ()
-setIndex _ i list | length list <= i =
+{-# SPECIALIZE setIndex :: a -> Int -> ListOf ('Mut RealWorld) a -> LimitT IO () #-}
+setIndex _ i list | i < 0 || length list <= i =
     throwM E.BoundsError { E.index = i, E.maxIndex = length list }
 setIndex value i list = case list of
     ListOfVoid _       -> pure ()
@@ -614,13 +630,13 @@
         dest <- index i list
         copyStruct dest value
   where
-    setNIndex :: (ReadCtx m ('Mut s), M.WriteCtx m s, Bounded a, Integral a) => NormalList ('Mut s) -> Int -> a -> m ()
+    setNIndex :: (RWCtx m s, Bounded a, Integral a) => NormalList ('Mut s) -> Int -> a -> m ()
     setNIndex NormalList{nPtr=M.WordPtr{pSegment, pAddr=WordAt{wordIndex}}} eltsPerWord value = do
         let eltWordIndex = wordIndex + WordCount (i `div` eltsPerWord)
         word <- M.read pSegment eltWordIndex
         let shift = (i `mod` eltsPerWord) * (64 `div` eltsPerWord)
         M.write pSegment eltWordIndex $ replaceBits value word shift
-    setPtrIndex :: (ReadCtx m ('Mut s), M.WriteCtx m s) => NormalList ('Mut s) -> Ptr ('Mut s) -> P.Ptr -> m ()
+    setPtrIndex :: RWCtx m s => NormalList ('Mut s) -> Ptr ('Mut s) -> P.Ptr -> m ()
     setPtrIndex NormalList{nPtr=nPtr@M.WordPtr{pAddr=addr@WordAt{wordIndex}}} absPtr relPtr =
         let srcPtr = nPtr { M.pAddr = addr { wordIndex = wordIndex + WordCount i } }
         in setPointerTo srcPtr (ptrAddr absPtr) relPtr
@@ -630,6 +646,7 @@
 -- If the two addresses are in different segments, a landing pad will be allocated and
 -- @srcLoc@ will contain a far pointer.
 setPointerTo :: M.WriteCtx m s => M.WordPtr ('Mut s) -> WordAddr -> P.Ptr -> m ()
+{-# SPECIALIZE setPointerTo :: M.WordPtr ('Mut RealWorld) -> WordAddr -> P.Ptr -> LimitT IO () #-}
 setPointerTo
         M.WordPtr
             { pMessage = msg
@@ -701,10 +718,13 @@
                             P.ListPtr _ eltSpec -> P.ListPtr 0 eltSpec
                             _ -> relPtr
 
+-- | Make a copy of a capability inside the target message.
 copyCap :: RWCtx m s => M.Message ('Mut s) -> Cap ('Mut s) -> m (Cap ('Mut s))
 copyCap dest cap = getClient cap >>= appendCap dest
 
+-- | Make a copy of the value at the pointer, in the target message.
 copyPtr :: RWCtx m s => M.Message ('Mut s) -> Maybe (Ptr ('Mut s)) -> m (Maybe (Ptr ('Mut s)))
+{-# SPECIALIZE copyPtr :: M.Message ('Mut RealWorld) -> Maybe (Ptr ('Mut RealWorld)) -> LimitT IO (Maybe (Ptr ('Mut RealWorld))) #-}
 copyPtr _ Nothing                = pure Nothing
 copyPtr dest (Just (PtrCap cap))    = Just . PtrCap <$> copyCap dest cap
 copyPtr dest (Just (PtrList src))   = Just . PtrList <$> copyList dest src
@@ -716,7 +736,9 @@
     copyStruct destStruct src
     pure destStruct
 
+-- | Make a copy of the list, in the target message.
 copyList :: RWCtx m s => M.Message ('Mut s) -> List ('Mut s) -> m (List ('Mut s))
+{-# SPECIALIZE copyList :: M.Message ('Mut RealWorld) -> List ('Mut RealWorld) -> LimitT IO (List ('Mut RealWorld)) #-}
 copyList dest src = case src of
     List0 src      -> List0 <$> allocList0 dest (length src)
     List1 src      -> List1 <$> copyNewListOf dest src allocList1
@@ -740,13 +762,16 @@
     -> ListOf ('Mut s) a
     -> (M.Message ('Mut s) -> Int -> m (ListOf ('Mut s) a))
     -> m (ListOf ('Mut s) a)
+{-# INLINE copyNewListOf #-}
 copyNewListOf destMsg src new = do
     dest <- new destMsg (length src)
     copyListOf dest src
     pure dest
 
 
+-- | Make a copy of the list, in the target message.
 copyListOf :: RWCtx m s => ListOf ('Mut s) a -> ListOf ('Mut s) a -> m ()
+{-# SPECIALIZE copyListOf :: ListOf ('Mut RealWorld) a -> ListOf ('Mut RealWorld) a -> LimitT IO () #-}
 copyListOf dest src =
     forM_ [0..length src - 1] $ \i -> do
         value <- index i src
@@ -754,6 +779,7 @@
 
 -- | @'copyStruct' dest src@ copies the source struct to the destination struct.
 copyStruct :: RWCtx m s => Struct ('Mut s) -> Struct ('Mut s) -> m ()
+{-# SPECIALIZE copyStruct :: Struct ('Mut RealWorld) -> Struct ('Mut RealWorld) -> LimitT IO () #-}
 copyStruct dest src = do
     -- We copy both the data and pointer sections from src to dest,
     -- padding the tail of the destination section with zeros/null
@@ -776,38 +802,35 @@
 
 -- | @index i list@ returns the ith element in @list@. Deducts 1 from the quota
 index :: ReadCtx m mut => Int -> ListOf mut a -> m a
-index i list = invoice 1 >> index' list
+{-# SPECIALIZE index :: Int -> ListOf 'Const a -> LimitT IO a #-}
+{-# SPECIALIZE index :: Int -> ListOf ('Mut RealWorld) a -> LimitT IO a #-}
+index i list
+    | i < 0 || i >= length list =
+        throwM E.BoundsError { E.index = i, E.maxIndex = length list - 1 }
+    | otherwise = index' list
   where
     index' :: ReadCtx m mut => ListOf mut a -> m a
-    index' (ListOfVoid nlist)
-        | i < nLen nlist = pure ()
-        | otherwise = throwM E.BoundsError { E.index = i, E.maxIndex = nLen nlist - 1 }
-    index' (ListOfStruct (Struct ptr@M.WordPtr{pAddr=addr@WordAt{..}} dataSz ptrSz) len)
-        | i < len = do
-            let offset = WordCount $ i * (fromIntegral dataSz + fromIntegral ptrSz)
-            let addr' = addr { wordIndex = wordIndex + offset }
-            return $ Struct ptr { M.pAddr = addr' } dataSz ptrSz
-        | otherwise = throwM E.BoundsError { E.index = i, E.maxIndex = len - 1}
+    index' (ListOfVoid _) = pure ()
+    index' (ListOfStruct (Struct ptr@M.WordPtr{pAddr=addr@WordAt{..}} dataSz ptrSz) _) = do
+        let offset = WordCount $ i * (fromIntegral dataSz + fromIntegral ptrSz)
+        let addr' = addr { wordIndex = wordIndex + offset }
+        return $ Struct ptr { M.pAddr = addr' } dataSz ptrSz
     index' (ListOfBool   nlist) = do
         Word1 val <- indexNList nlist 64
         pure val
     index' (ListOfWord8  nlist) = indexNList nlist 8
     index' (ListOfWord16 nlist) = indexNList nlist 4
     index' (ListOfWord32 nlist) = indexNList nlist 2
-    index' (ListOfWord64 (NormalList M.WordPtr{pSegment, pAddr=WordAt{wordIndex}} len))
-        | i < len = M.read pSegment $ wordIndex + WordCount i
-        | otherwise = throwM E.BoundsError { E.index = i, E.maxIndex = len - 1}
-    index' (ListOfPtr (NormalList ptr@M.WordPtr{pAddr=addr@WordAt{..}} len))
-        | i < len = get ptr { M.pAddr = addr { wordIndex = wordIndex + WordCount i } }
-        | otherwise = throwM E.BoundsError { E.index = i, E.maxIndex = len - 1}
+    index' (ListOfWord64 (NormalList M.WordPtr{pSegment, pAddr=WordAt{wordIndex}} _)) =
+        M.read pSegment $ wordIndex + WordCount i
+    index' (ListOfPtr (NormalList ptr@M.WordPtr{pAddr=addr@WordAt{..}} _)) =
+        get ptr { M.pAddr = addr { wordIndex = wordIndex + WordCount i } }
     indexNList :: (ReadCtx m mut, Integral a) => NormalList mut -> Int -> m a
-    indexNList (NormalList M.WordPtr{pSegment, pAddr=WordAt{..}} len) eltsPerWord
-        | i < len = do
-            let wordIndex' = wordIndex + WordCount (i `div` eltsPerWord)
-            word <- M.read pSegment wordIndex'
-            let shift = (i `mod` eltsPerWord) * (64 `div` eltsPerWord)
-            pure $ fromIntegral $ word `shiftR` shift
-        | otherwise = throwM E.BoundsError { E.index = i, E.maxIndex = len - 1 }
+    indexNList (NormalList M.WordPtr{pSegment, pAddr=WordAt{..}} _) eltsPerWord = do
+        let wordIndex' = wordIndex + WordCount (i `div` eltsPerWord)
+        word <- M.read pSegment wordIndex'
+        let shift = (i `mod` eltsPerWord) * (64 `div` eltsPerWord)
+        pure $ fromIntegral $ word `shiftR` shift
 
 -- | Returns the length of a list
 length :: ListOf msg a -> Int
@@ -841,11 +864,13 @@
 
 -- | The data section of a struct, as a list of Word64
 dataSection :: Struct msg -> ListOf msg Word64
+{-# INLINE dataSection #-}
 dataSection (Struct ptr dataSz _) =
     ListOfWord64 $ NormalList ptr (fromIntegral dataSz)
 
 -- | The pointer section of a struct, as a list of Ptr
 ptrSection :: Struct msg -> ListOf msg (Maybe (Ptr msg))
+{-# INLINE ptrSection #-}
 ptrSection (Struct ptr@M.WordPtr{pAddr=addr@WordAt{wordIndex}} dataSz ptrSz) =
     ListOfPtr $ NormalList
         { nPtr = ptr { M.pAddr = addr { wordIndex = wordIndex + fromIntegral dataSz } }
@@ -879,19 +904,116 @@
 -- | @'getData' i struct@ gets the @i@th word from the struct's data section,
 -- returning 0 if it is absent.
 getData :: ReadCtx m msg => Int -> Struct msg -> m Word64
+{-# INLINE getData #-}
 getData i struct
-    | fromIntegral (structWordCount struct) <= i = 0 <$ invoice 1
+    | fromIntegral (structWordCount struct) <= i = pure 0
     | otherwise = index i (dataSection struct)
 
 -- | @'getPtr' i struct@ gets the @i@th word from the struct's pointer section,
 -- returning Nothing if it is absent.
 getPtr :: ReadCtx m msg => Int -> Struct msg -> m (Maybe (Ptr msg))
+{-# INLINE getPtr #-}
 getPtr i struct
-    | fromIntegral (structPtrCount struct) <= i = Nothing <$ invoice 1
-    | otherwise = index i (ptrSection struct)
+    | fromIntegral (structPtrCount struct) <= i = do
+        invoice 1
+        pure Nothing
+    | otherwise = do
+        ptr <- index i (ptrSection struct)
+        checkPtr ptr
+        invoicePtr ptr
+        pure ptr
 
+checkPtr :: ReadCtx m mut => Maybe (Ptr mut) -> m ()
+checkPtr Nothing              = pure ()
+checkPtr (Just (PtrCap c))    = checkCap c
+checkPtr (Just (PtrList l))   = checkList l
+checkPtr (Just (PtrStruct s)) = checkStruct s
+
+checkCap :: ReadCtx m mut => Cap mut -> m ()
+checkCap (Cap _ _ ) = pure ()
+    -- No need to do anything here; an out of bounds index is just treated
+    -- as null.
+
+checkList :: ReadCtx m mut => List mut -> m ()
+checkList (List0 l)      = checkListOf l
+checkList (List1 l)      = checkListOf l
+checkList (List8 l)      = checkListOf l
+checkList (List16 l)     = checkListOf l
+checkList (List32 l)     = checkListOf l
+checkList (List64 l)     = checkListOf l
+checkList (ListPtr l)    = checkListOf l
+checkList (ListStruct l) = checkListOf l
+
+checkListOf :: ReadCtx m mut => ListOf mut a -> m ()
+checkListOf (ListOfStruct s@(Struct ptr _ _) len) =
+    checkPtrOffset ptr (fromIntegral len * structSize s)
+checkListOf (ListOfVoid _) = pure ()
+checkListOf (ListOfBool l) = checkNormalList l 1
+checkListOf (ListOfWord8 l) = checkNormalList l 8
+checkListOf (ListOfWord16 l) = checkNormalList l 16
+checkListOf (ListOfWord32 l) = checkNormalList l 32
+checkListOf (ListOfWord64 l) = checkNormalList l 64
+checkListOf (ListOfPtr l) = checkNormalList l 64
+
+checkNormalList :: ReadCtx m mut => NormalList mut -> BitCount -> m ()
+checkNormalList NormalList{nPtr, nLen} eltSize =
+    let nBits = fromIntegral nLen * eltSize
+        nWords = bytesToWordsCeil $ bitsToBytesCeil nBits
+    in
+    checkPtrOffset nPtr nWords
+
+checkStruct :: ReadCtx m mut => Struct mut -> m ()
+checkStruct s@(Struct ptr _ _) =
+    checkPtrOffset ptr (structSize s)
+
+checkPtrOffset :: ReadCtx m mut => M.WordPtr mut -> WordCount -> m ()
+checkPtrOffset M.WordPtr{pSegment, pAddr=WordAt{wordIndex}} size = do
+    segWords <- M.numWords pSegment
+    let maxIndex = fromIntegral segWords - 1
+    unless (wordIndex >= 0) $
+        throwM E.BoundsError { index = fromIntegral wordIndex, maxIndex }
+    unless (wordIndex + size <= segWords) $
+        throwM E.BoundsError
+            { index = fromIntegral (wordIndex + size) - 1
+            , maxIndex
+            }
+
+structSize :: Struct mut -> WordCount
+structSize s = structWordCount s + fromIntegral (structPtrCount s)
+
+-- | Invoice the traversal limit for all data reachable via the pointer
+-- directly, i.e. without following further pointers.
+--
+-- The minimum possible cost is 1, and for lists will always be proportional
+-- to the length of the list, even if the size of the elements is zero.
+invoicePtr :: MonadLimit m => Maybe (Ptr mut) -> m ()
+{-# SPECIALIZE invoicePtr :: Maybe (Ptr ('Mut RealWorld)) -> LimitT IO () #-}
+invoicePtr p = invoice $! ptrInvoiceSize p
+
+ptrInvoiceSize :: Maybe (Ptr mut) -> WordCount
+ptrInvoiceSize = \case
+    Nothing            -> 1
+    Just (PtrCap _)    -> 1
+    Just (PtrStruct s) -> structInvoiceSize s
+    Just (PtrList l)   -> listInvoiceSize l
+listInvoiceSize :: List mut -> WordCount
+listInvoiceSize l = max 1 $! case l of
+    List0 l   -> fromIntegral $! length l
+    List1 l   -> fromIntegral $! length l `div` 64
+    List8 l   -> fromIntegral $! length l `div`  8
+    List16 l  -> fromIntegral $! length l `div`  4
+    List32 l  -> fromIntegral $! length l `div`  2
+    List64 l  -> fromIntegral $! length l
+    ListPtr l -> fromIntegral $! length l
+    ListStruct (ListOfStruct s len) ->
+        structInvoiceSize s * fromIntegral len
+structInvoiceSize :: Struct mut -> WordCount
+structInvoiceSize (Struct _ dataSz ptrSz) =
+    max 1 (fromIntegral dataSz + fromIntegral ptrSz)
+
 -- | @'setData' value i struct@ sets the @i@th word in the struct's data section
 -- to @value@.
+{-# INLINE setData #-}
 setData :: (ReadCtx m ('Mut s), M.WriteCtx m s)
     => Word64 -> Int -> Struct ('Mut s) -> m ()
 setData value i = setIndex value i . dataSection
@@ -899,6 +1021,7 @@
 -- | @'setData' value i struct@ sets the @i@th pointer in the struct's pointer
 -- section to @value@.
 setPtr :: (ReadCtx m ('Mut s), M.WriteCtx m s) => Maybe (Ptr ('Mut s)) -> Int -> Struct ('Mut s) -> m ()
+{-# INLINE setPtr #-}
 setPtr value i = setIndex value i . ptrSection
 
 -- | 'rawBytes' returns the raw bytes corresponding to the list.
@@ -906,7 +1029,6 @@
 -- TODO: we can get away with a more lax context than ReadCtx, maybe even make
 -- this non-monadic.
 rawBytes (ListOfWord8 (NormalList M.WordPtr{pSegment, pAddr=WordAt{wordIndex}} len)) = do
-    invoice $ fromIntegral $ bytesToWordsCeil (ByteCount len)
     let bytes = M.toByteString pSegment
     let ByteCount byteOffset = wordsToBytes wordIndex
     pure $ BS.take len $ BS.drop byteOffset bytes
@@ -921,6 +1043,8 @@
         , pSegment = seg
         , pAddr = WordAt 0 0
         }
+    checkPtr root
+    invoicePtr root
     case root of
         Just (PtrStruct struct) -> pure struct
         Nothing -> messageDefault msg
diff --git a/lib/Internal/Finalizer.hs b/lib/Internal/Finalizer.hs
deleted file mode 100644
--- a/lib/Internal/Finalizer.hs
+++ /dev/null
@@ -1,78 +0,0 @@
-{-|
-Module: Internal.Finalizer
-Description: Make resource-safe wrappers for values, with finalizers
-
-This module wrappers for values to which finalizers can safely be
-attached, without worrying that they may be collected early. It is
-useful when the natural thing to attach a finalizer to is a simple
-datatype.
-
-From the docs for the 'Weak' type:
-
-> WARNING: weak pointers to ordinary non-primitive Haskell types
-> are particularly fragile, because the compiler is free to optimise
-> away or duplicate the underlying data structure. Therefore
-> attempting to place a finalizer on an ordinary Haskell type may
-> well result in the finalizer running earlier than you expected.
->
-> [...]
->
-> Finalizers can be used reliably for types that are created
-> explicitly and have identity, such as IORef and MVar. [...]
-
-So instead, we provide a 'Cell' type, which:
-
-* Wraps simple value
-* Can be created and read inside STM, and
-* May safely have finalizers, using the 'addFinalizer' function in
-  this module.
-* Ensures that the finalizers will not be run before any transaction that
-  reads data is complete.
-
-Note that it is *not* safe to use the primitives from "Sys.Mem.Weak" to
-add finalizers.
-
--}
-{-# LANGUAGE NamedFieldPuns #-}
-module Internal.Finalizer (Cell, get, newCell, addFinalizer) where
-
-import Control.Concurrent.MVar (MVar, mkWeakMVar, newEmptyMVar)
-import Control.Concurrent.STM
-    (STM, TVar, atomically, modifyTVar', newTVar, readTVar)
-
--- | A cell, containing a value and possibly finalizers.
-newtype Cell a
-    = Cell (TVar (CellData a))
-    deriving(Eq)
-
--- The actual contents of a cell. This is wrapped in a 'TVar' to force accesses
--- to add the a reference the transaction log from which the finalizers are
--- reachable, thus preventing them from running before the completion of any
--- transaction that examines the value.
-data CellData a = CellData
-    { value      :: a
-    -- ^ The value wrapped by the cell.
-
-    , finalizers :: [MVar ()]
-    -- ^ Experimentally, TVars appear not to be safe for finalizers, so
-    -- instead we create MVars for the finalizers, and store them this
-    -- list so that we maintain a reference to them.
-    }
-    deriving(Eq)
-
--- | Get the value from a cell
-get :: Cell a -> STM a
-get (Cell state) = value <$> readTVar state
-
--- Create  a new cell, initially with no finalizers.
-newCell :: a -> STM (Cell a)
-newCell value = Cell <$> newTVar CellData { value, finalizers = [] }
-
--- Add a new finalizer to the cell. Cells may have many finalizers
--- attached.
-addFinalizer :: Cell a -> STM () -> IO ()
-addFinalizer (Cell stateVar) fin = do
-    mvar <- newEmptyMVar
-    _ <- mkWeakMVar mvar $ atomically fin
-    atomically $ modifyTVar' stateVar $ \state@CellData{finalizers} ->
-        state { finalizers = mvar : finalizers }
diff --git a/tests/Main.hs b/tests/Main.hs
--- a/tests/Main.hs
+++ b/tests/Main.hs
@@ -17,6 +17,7 @@
 import WalkSchemaCodeGenRequest           (walkSchemaCodeGenRequestTest)
 
 import qualified CalculatorExample
+import qualified PointerOOB
 
 main :: IO ()
 main = hspec $ parallel $ do
@@ -36,4 +37,5 @@
         describe "property tests for schema" schemaCGRQuickCheck
     describe "Regression tests" regressionTests
     CalculatorExample.tests
+    PointerOOB.tests
     describe "Tests for client unwrapping" unwrapTests
diff --git a/tests/Module/Capnp/Gen/Capnp/Schema.hs b/tests/Module/Capnp/Gen/Capnp/Schema.hs
--- a/tests/Module/Capnp/Gen/Capnp/Schema.hs
+++ b/tests/Module/Capnp/Gen/Capnp/Schema.hs
@@ -1,20 +1,26 @@
-{-# LANGUAGE DataKinds       #-}
-{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE DataKinds        #-}
+{-# LANGUAGE OverloadedLabels #-}
+{-# LANGUAGE RecordWildCards  #-}
+{-# LANGUAGE TypeApplications #-}
 module Module.Capnp.Gen.Capnp.Schema (schemaTests) where
 
 import Test.Hspec
 
 import Control.Monad.Primitive (RealWorld)
 import Data.Foldable           (traverse_)
+import Data.Function           ((&))
 
-import Capnp.Gen.Capnp.Schema
+import           Capnp.Gen.Capnp.Schema
+import qualified Capnp.Gen.Capnp.Schema.New as N
 
 import Capnp                (newRoot)
+import Capnp.New            (encodeField, encodeVariant, initVariant, readField)
 import Capnp.TraversalLimit (LimitT, evalLimitT)
-import Data.Mutable         (Thaw (..))
+import Data.Mutable         (Thaw(..))
 import Util                 (decodeValue, schemaSchemaSrc)
 
-import qualified Capnp.Message as M
+import qualified Capnp.Message     as M
+import qualified Capnp.New.Classes as NC
 
 data BuildTest = BuildTest
     { typeName :: String
@@ -40,6 +46,25 @@
             set_Field'group'typeId group 322
             ordinal <- get_Field'ordinal field
             set_Field'ordinal'explicit ordinal 22
+        }
+    , BuildTest -- same test, but with the repr API.
+        { typeName = "Field"
+        , expected = concat
+            [ "( codeOrder = 4,\n"
+            , "  discriminantValue = 6,\n"
+            , "  group = (typeId = 322),\n"
+            , "  ordinal = (explicit = 22) )\n"
+            ]
+        , builder = \msg -> do
+            field <- NC.newRoot @N.Field () msg
+            field & encodeField #codeOrder 4
+            field & encodeField #discriminantValue 6
+            field
+                & initVariant #group
+                >>= encodeField #typeId 322
+            field
+                & readField #ordinal
+                >>= encodeVariant #explicit 22
         }
     ]
   where
diff --git a/tests/Module/Capnp/Untyped.hs b/tests/Module/Capnp/Untyped.hs
--- a/tests/Module/Capnp/Untyped.hs
+++ b/tests/Module/Capnp/Untyped.hs
@@ -107,7 +107,7 @@
             Just (PtrList (List16 homes)) <- getPtr 1 base
             let 0 = length homes
             return ()
-        endQuota `shouldBe` 110
+        endQuota `shouldBe` 117
 
 data ModTest s = ModTest
     { testIn   :: String
diff --git a/tests/Module/Capnp/Untyped/Pure.hs b/tests/Module/Capnp/Untyped/Pure.hs
--- a/tests/Module/Capnp/Untyped/Pure.hs
+++ b/tests/Module/Capnp/Untyped/Pure.hs
@@ -37,7 +37,7 @@
                            capacity = 5173,
                            maxSpeed = 12.0
                         )))|]
-            (actual, 110) <- runLimitT 128 $ U.rootPtr msg >>= readStruct
+            (actual, 117) <- runLimitT 128 $ U.rootPtr msg >>= readStruct
             actual `shouldBe` Struct
                 [3]
                 [ Just $ PtrStruct $ Struct
diff --git a/tests/PointerOOB.hs b/tests/PointerOOB.hs
new file mode 100644
--- /dev/null
+++ b/tests/PointerOOB.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE DataKinds #-}
+module PointerOOB (tests) where
+
+import Test.Hspec
+
+import Control.Category       ((>>>))
+import Control.Exception.Safe (try)
+import Control.Monad.IO.Class (MonadIO(liftIO))
+import Data.Foldable          (for_)
+import Data.Function          ((&))
+
+import qualified Capnp
+import qualified Capnp.Errors  as E
+import qualified Capnp.Message as M
+import qualified Capnp.Pointer as P
+import qualified Capnp.Untyped as U
+
+import qualified Data.ByteString         as BS
+import qualified Data.ByteString.Builder as BB
+import qualified Data.ByteString.Lazy    as LBS
+
+errPtrs :: [(P.Ptr, E.Error)]
+errPtrs =
+    [ ( P.ListPtr 0 (P.EltNormal P.Sz1 1)
+      , E.BoundsError { E.index = 2, E.maxIndex = 1 }
+      )
+    , ( P.ListPtr 0 (P.EltNormal P.Sz32 4)
+      , E.BoundsError { E.index = 3, E.maxIndex = 1 }
+      )
+    , ( P.ListPtr (-3) (P.EltNormal P.Sz1 1)
+      , E.BoundsError { E.index = -1, E.maxIndex = 1 }
+      )
+    , ( P.ListPtr (-4) (P.EltNormal P.Sz1 1)
+      , E.BoundsError { E.index = -2, E.maxIndex = 1 }
+      )
+    , ( P.StructPtr 0 1 0
+      , E.BoundsError { E.index = 2, E.maxIndex = 1 }
+      )
+    , ( P.StructPtr 0 0 1
+      , E.BoundsError { E.index = 2, E.maxIndex = 1 }
+      )
+    , ( P.StructPtr 0 1 1
+      , E.BoundsError { E.index = 3, E.maxIndex = 1 }
+      )
+    ]
+
+wrapPtr :: P.Ptr -> BS.ByteString
+wrapPtr p =
+    [ Just (P.StructPtr 0 0 1), Just p ]
+        & map (P.serializePtr >>> BB.word64LE)
+        & mconcat
+        & BB.toLazyByteString
+        & LBS.toStrict
+
+tests :: Spec
+tests = describe "Test correct handling of out of bound pointers" $ do
+    describe "pointers that go off the end of the message" $ do
+        for_ errPtrs $ \(p, err) -> do
+            it ("Should catch the issue for " <> show p) $ do
+                let testPtrBounds :: P.Ptr -> Capnp.LimitT IO ()
+                    testPtrBounds p = do
+                        let msg = M.singleSegment $ Capnp.fromByteString (wrapPtr p)
+                        root <- U.rootPtr msg
+                        v <- try $ U.getPtr 0 root
+                        case v of
+                            Right _ -> fail "should have signaled an error"
+                            Left e  -> liftIO $ e `shouldBe` err
+                Capnp.evalLimitT maxBound (testPtrBounds p)
diff --git a/tests/WalkSchemaCodeGenRequest.hs b/tests/WalkSchemaCodeGenRequest.hs
--- a/tests/WalkSchemaCodeGenRequest.hs
+++ b/tests/WalkSchemaCodeGenRequest.hs
@@ -17,7 +17,7 @@
 import Control.Monad.Trans.Class (lift)
 
 import qualified Data.ByteString as BS
-import qualified Prelude
+import qualified Data.Vector     as V
 
 import Capnp.Untyped hiding (index, length)
 
@@ -28,13 +28,8 @@
 import qualified Capnp.Gen.Capnp.Schema as Schema
 import qualified Capnp.Message          as M
 
-
--- | TODO: make this an array; we're doing random access to it below.
--- I(@zenhack) am waiting on this, since at the time of writing @taktoa
--- is working on some array utilities that will get merged soonish, so
--- it probably makes sense to just wait for that.
-nodeNames :: [BS.ByteString]
-nodeNames =
+nodeNames :: V.Vector BS.ByteString
+nodeNames = V.fromList
     [ "Import"
     , "annotation"
     , "Value"
@@ -58,7 +53,7 @@
             bytes <- BS.readFile "tests/data/schema-codegenreq"
             msg <- M.decode bytes
             endQuota <- execLimitT 4096 (rootPtr msg >>= reader)
-            endQuota `shouldBe` 3452
+            endQuota `shouldBe` 3372
   where
     reader :: Struct 'M.Const -> LimitT IO ()
     reader root = do
@@ -80,7 +75,7 @@
         prefixLen <- Schema.get_Node'displayNamePrefixLength node
         let baseName = BS.drop (fromIntegral prefixLen) name
 
-        when (i < Prelude.length nodeNames && baseName /= (nodeNames !! i)) $
+        when (i < V.length nodeNames && baseName /= (nodeNames V.! i)) $
             error "Incorrect name."
 
         has <- Schema.has_Node'annotations node
