functor (Versions : Versions->
  functor (T : T->
    functor (V1 : T_bin->
      functor (V2 : T_bin->
        functor (V3 : T_bin->
          functor (V4 : T_bin->
            functor (V5 : T_bin->
              functor (V1_cvt : V(V1)(T).S->
                functor (V2_cvt : V(V2)(T).S->
                  functor (V3_cvt : V(V3)(T).S->
                    functor (V4_cvt : V(V4)(T).S->
                      functor (V5_cvt : V(V5)(T).S->
                        sig
                          type datum = T.t
                          val low_version : Version.t
                          val prod_version : Version.t
                          val test_version : Version.t
                          val lookup_marshal_fun :
                            Version.t ->
                            (datum marshal_fun, exn) Core.Std.Result.t
                          val lookup_unmarshal_fun :
                            Version.t ->
                            (datum unmarshal_fun, exn) Core.Std.Result.t
                        end