sig   module Image :     sig       type t = { height : int; source : string; width : int; }       val height :         (GapiCustomsearchV1Model.Promotion.Image.t, int) GapiLens.t       val source :         (GapiCustomsearchV1Model.Promotion.Image.t, string) GapiLens.t       val width : (GapiCustomsearchV1Model.Promotion.Image.t, int) GapiLens.t       val empty : GapiCustomsearchV1Model.Promotion.Image.t       val render :         GapiCustomsearchV1Model.Promotion.Image.t ->         GapiJson.json_data_model list       val parse :         GapiCustomsearchV1Model.Promotion.Image.t ->         GapiJson.json_data_model -> GapiCustomsearchV1Model.Promotion.Image.t     end   module BodyLines :     sig       type t = {         htmlTitle : string;         link : string;         title : string;         url : string;       }       val htmlTitle :         (GapiCustomsearchV1Model.Promotion.BodyLines.t, string) GapiLens.t       val link :         (GapiCustomsearchV1Model.Promotion.BodyLines.t, string) GapiLens.t       val title :         (GapiCustomsearchV1Model.Promotion.BodyLines.t, string) GapiLens.t       val url :         (GapiCustomsearchV1Model.Promotion.BodyLines.t, string) GapiLens.t       val empty : GapiCustomsearchV1Model.Promotion.BodyLines.t       val render :         GapiCustomsearchV1Model.Promotion.BodyLines.t ->         GapiJson.json_data_model list       val parse :         GapiCustomsearchV1Model.Promotion.BodyLines.t ->         GapiJson.json_data_model ->         GapiCustomsearchV1Model.Promotion.BodyLines.t     end   type t = {     bodyLines : GapiCustomsearchV1Model.Promotion.BodyLines.t list;     displayLink : string;     htmlTitle : string;     image : GapiCustomsearchV1Model.Promotion.Image.t;     link : string;     title : string;   }   val bodyLines :     (GapiCustomsearchV1Model.Promotion.t,      GapiCustomsearchV1Model.Promotion.BodyLines.t list)     GapiLens.t   val displayLink : (GapiCustomsearchV1Model.Promotion.t, string) GapiLens.t   val htmlTitle : (GapiCustomsearchV1Model.Promotion.t, string) GapiLens.t   val image :     (GapiCustomsearchV1Model.Promotion.t,      GapiCustomsearchV1Model.Promotion.Image.t)     GapiLens.t   val link : (GapiCustomsearchV1Model.Promotion.t, string) GapiLens.t   val title : (GapiCustomsearchV1Model.Promotion.t, string) GapiLens.t   val empty : GapiCustomsearchV1Model.Promotion.t   val render :     GapiCustomsearchV1Model.Promotion.t -> GapiJson.json_data_model list   val parse :     GapiCustomsearchV1Model.Promotion.t ->     GapiJson.json_data_model -> GapiCustomsearchV1Model.Promotion.t   val to_data_model :     GapiCustomsearchV1Model.Promotion.t -> GapiJson.json_data_model   val of_data_model :     GapiJson.json_data_model -> GapiCustomsearchV1Model.Promotion.t end