sig
  module Plusoners :
    sig
      type t = { totalItems : int; }
      val totalItems : (GapiPlusV1Model.Comment.Plusoners.t, int) GapiLens.t
      val empty : GapiPlusV1Model.Comment.Plusoners.t
      val render :
        GapiPlusV1Model.Comment.Plusoners.t -> GapiJson.json_data_model list
      val parse :
        GapiPlusV1Model.Comment.Plusoners.t ->
        GapiJson.json_data_model -> GapiPlusV1Model.Comment.Plusoners.t
    end
  module Object :
    sig
      type t = {
        content : string;
        objectType : string;
        originalContent : string;
      }
      val content : (GapiPlusV1Model.Comment.Object.t, string) GapiLens.t
      val objectType : (GapiPlusV1Model.Comment.Object.t, string) GapiLens.t
      val originalContent :
        (GapiPlusV1Model.Comment.Object.t, string) GapiLens.t
      val empty : GapiPlusV1Model.Comment.Object.t
      val render :
        GapiPlusV1Model.Comment.Object.t -> GapiJson.json_data_model list
      val parse :
        GapiPlusV1Model.Comment.Object.t ->
        GapiJson.json_data_model -> GapiPlusV1Model.Comment.Object.t
    end
  module InReplyTo :
    sig
      type t = { id : string; url : string; }
      val id : (GapiPlusV1Model.Comment.InReplyTo.t, string) GapiLens.t
      val url : (GapiPlusV1Model.Comment.InReplyTo.t, string) GapiLens.t
      val empty : GapiPlusV1Model.Comment.InReplyTo.t
      val render :
        GapiPlusV1Model.Comment.InReplyTo.t -> GapiJson.json_data_model list
      val parse :
        GapiPlusV1Model.Comment.InReplyTo.t ->
        GapiJson.json_data_model -> GapiPlusV1Model.Comment.InReplyTo.t
    end
  module Actor :
    sig
      module Verification :
        sig
          type t = { adHocVerified : string; }
          val adHocVerified :
            (GapiPlusV1Model.Comment.Actor.Verification.t, string) GapiLens.t
          val empty : GapiPlusV1Model.Comment.Actor.Verification.t
          val render :
            GapiPlusV1Model.Comment.Actor.Verification.t ->
            GapiJson.json_data_model list
          val parse :
            GapiPlusV1Model.Comment.Actor.Verification.t ->
            GapiJson.json_data_model ->
            GapiPlusV1Model.Comment.Actor.Verification.t
        end
      module Image :
        sig
          type t = { url : string; }
          val url :
            (GapiPlusV1Model.Comment.Actor.Image.t, string) GapiLens.t
          val empty : GapiPlusV1Model.Comment.Actor.Image.t
          val render :
            GapiPlusV1Model.Comment.Actor.Image.t ->
            GapiJson.json_data_model list
          val parse :
            GapiPlusV1Model.Comment.Actor.Image.t ->
            GapiJson.json_data_model -> GapiPlusV1Model.Comment.Actor.Image.t
        end
      module ClientSpecificActorInfo :
        sig
          module YoutubeActorInfo :
            sig
              type t = { channelId : string; }
              val channelId :
                (GapiPlusV1Model.Comment.Actor.ClientSpecificActorInfo.YoutubeActorInfo.t,
                 string)
                GapiLens.t
              val empty :
                GapiPlusV1Model.Comment.Actor.ClientSpecificActorInfo.YoutubeActorInfo.t
              val render :
                GapiPlusV1Model.Comment.Actor.ClientSpecificActorInfo.YoutubeActorInfo.t ->
                GapiJson.json_data_model list
              val parse :
                GapiPlusV1Model.Comment.Actor.ClientSpecificActorInfo.YoutubeActorInfo.t ->
                GapiJson.json_data_model ->
                GapiPlusV1Model.Comment.Actor.ClientSpecificActorInfo.YoutubeActorInfo.t
            end
          type t = {
            youtubeActorInfo :
              GapiPlusV1Model.Comment.Actor.ClientSpecificActorInfo.YoutubeActorInfo.t;
          }
          val youtubeActorInfo :
            (GapiPlusV1Model.Comment.Actor.ClientSpecificActorInfo.t,
             GapiPlusV1Model.Comment.Actor.ClientSpecificActorInfo.YoutubeActorInfo.t)
            GapiLens.t
          val empty : GapiPlusV1Model.Comment.Actor.ClientSpecificActorInfo.t
          val render :
            GapiPlusV1Model.Comment.Actor.ClientSpecificActorInfo.t ->
            GapiJson.json_data_model list
          val parse :
            GapiPlusV1Model.Comment.Actor.ClientSpecificActorInfo.t ->
            GapiJson.json_data_model ->
            GapiPlusV1Model.Comment.Actor.ClientSpecificActorInfo.t
        end
      type t = {
        clientSpecificActorInfo :
          GapiPlusV1Model.Comment.Actor.ClientSpecificActorInfo.t;
        displayName : string;
        id : string;
        image : GapiPlusV1Model.Comment.Actor.Image.t;
        url : string;
        verification : GapiPlusV1Model.Comment.Actor.Verification.t;
      }
      val clientSpecificActorInfo :
        (GapiPlusV1Model.Comment.Actor.t,
         GapiPlusV1Model.Comment.Actor.ClientSpecificActorInfo.t)
        GapiLens.t
      val displayName : (GapiPlusV1Model.Comment.Actor.t, string) GapiLens.t
      val id : (GapiPlusV1Model.Comment.Actor.t, string) GapiLens.t
      val image :
        (GapiPlusV1Model.Comment.Actor.t,
         GapiPlusV1Model.Comment.Actor.Image.t)
        GapiLens.t
      val url : (GapiPlusV1Model.Comment.Actor.t, string) GapiLens.t
      val verification :
        (GapiPlusV1Model.Comment.Actor.t,
         GapiPlusV1Model.Comment.Actor.Verification.t)
        GapiLens.t
      val empty : GapiPlusV1Model.Comment.Actor.t
      val render :
        GapiPlusV1Model.Comment.Actor.t -> GapiJson.json_data_model list
      val parse :
        GapiPlusV1Model.Comment.Actor.t ->
        GapiJson.json_data_model -> GapiPlusV1Model.Comment.Actor.t
    end
  type t = {
    actor : GapiPlusV1Model.Comment.Actor.t;
    etag : string;
    id : string;
    inReplyTo : GapiPlusV1Model.Comment.InReplyTo.t list;
    kind : string;
    _object : GapiPlusV1Model.Comment.Object.t;
    plusoners : GapiPlusV1Model.Comment.Plusoners.t;
    published : GapiDate.t;
    selfLink : string;
    updated : GapiDate.t;
    verb : string;
  }
  val actor :
    (GapiPlusV1Model.Comment.t, GapiPlusV1Model.Comment.Actor.t) GapiLens.t
  val etag : (GapiPlusV1Model.Comment.t, string) GapiLens.t
  val id : (GapiPlusV1Model.Comment.t, string) GapiLens.t
  val inReplyTo :
    (GapiPlusV1Model.Comment.t, GapiPlusV1Model.Comment.InReplyTo.t list)
    GapiLens.t
  val kind : (GapiPlusV1Model.Comment.t, string) GapiLens.t
  val _object :
    (GapiPlusV1Model.Comment.t, GapiPlusV1Model.Comment.Object.t) GapiLens.t
  val plusoners :
    (GapiPlusV1Model.Comment.t, GapiPlusV1Model.Comment.Plusoners.t)
    GapiLens.t
  val published : (GapiPlusV1Model.Comment.t, GapiDate.t) GapiLens.t
  val selfLink : (GapiPlusV1Model.Comment.t, string) GapiLens.t
  val updated : (GapiPlusV1Model.Comment.t, GapiDate.t) GapiLens.t
  val verb : (GapiPlusV1Model.Comment.t, string) GapiLens.t
  val empty : GapiPlusV1Model.Comment.t
  val render : GapiPlusV1Model.Comment.t -> GapiJson.json_data_model list
  val parse :
    GapiPlusV1Model.Comment.t ->
    GapiJson.json_data_model -> GapiPlusV1Model.Comment.t
  val to_data_model : GapiPlusV1Model.Comment.t -> GapiJson.json_data_model
  val of_data_model : GapiJson.json_data_model -> GapiPlusV1Model.Comment.t
end