sig
  type link_t
  module Entry :
    sig
      type t = {
        etag : string;
        kind : string;
        authors : GdataAtom.Author.t list;
        content : GdataAtom.Content.t;
        contributors : GdataAtom.Contributor.t list;
        id : GdataAtom.atom_id;
        published : GdataAtom.atom_published;
        updated : GdataAtom.atom_updated;
        links : GdataComments.Comments.link_t list;
        title : GdataAtom.Title.t;
        category : GdataAtom.Category.t;
        extensions : GdataCore.xml_data_model list;
      }
      val empty : GdataComments.Comments.Entry.t
      val of_xml_data_model :
        GdataComments.Comments.Entry.t ->
        GdataCore.xml_data_model -> GdataComments.Comments.Entry.t
      val to_xml_data_model :
        GdataComments.Comments.Entry.t -> GdataCore.xml_data_model list
    end
  module Feed :
    sig
      type entry_t = Entry.t
      type link_t = link_t
      type extensions_t
      type t = {
        etag : string;
        kind : string;
        authors : GdataAtom.Author.t list;
        categories : GdataAtom.Category.t list;
        contributors : GdataAtom.Contributor.t list;
        generator : GdataAtom.Generator.t;
        icon : GdataAtom.atom_icon;
        id : GdataAtom.atom_id;
        updated : GdataAtom.atom_updated;
        entries : entry_t list;
        links : link_t list;
        logo : GdataAtom.atom_logo;
        rights : GdataAtom.Rights.t;
        subtitle : GdataAtom.Subtitle.t;
        title : GdataAtom.Title.t;
        totalResults : GdataAtom.opensearch_totalResults;
        itemsPerPage : GdataAtom.opensearch_itemsPerPage;
        startIndex : GdataAtom.opensearch_startIndex;
        extensions : extensions_t;
      }
      val etag : (t, string) GapiLens.t
      val kind : (t, string) GapiLens.t
      val authors : (t, GdataAtom.Author.t list) GapiLens.t
      val categories : (t, GdataAtom.Category.t list) GapiLens.t
      val contributors : (t, GdataAtom.Contributor.t list) GapiLens.t
      val generator : (t, GdataAtom.Generator.t) GapiLens.t
      val icon : (t, GdataAtom.atom_icon) GapiLens.t
      val id : (t, GdataAtom.atom_id) GapiLens.t
      val updated : (t, GdataAtom.atom_updated) GapiLens.t
      val entries : (t, entry_t list) GapiLens.t
      val links : (t, link_t list) GapiLens.t
      val logo : (t, GdataAtom.atom_logo) GapiLens.t
      val rights : (t, GdataAtom.Rights.t) GapiLens.t
      val subtitle : (t, GdataAtom.Subtitle.t) GapiLens.t
      val title : (t, GdataAtom.Title.t) GapiLens.t
      val totalResults : (t, GdataAtom.opensearch_totalResults) GapiLens.t
      val itemsPerPage : (t, GdataAtom.opensearch_itemsPerPage) GapiLens.t
      val startIndex : (t, GdataAtom.opensearch_startIndex) GapiLens.t
      val extensions : (t, extensions_t) GapiLens.t
      val empty : t
      val to_xml_data_model : t -> GdataCore.xml_data_model list
      val of_xml_data_model : t -> GdataCore.xml_data_model -> t
      val parse_feed : GdataCore.xml_data_model -> t
    end
  type t = {
    countHint : int;
    href : string;
    readOnly : bool;
    rel : string;
    commentFeed : GdataComments.Comments.Feed.t;
  }
  val empty : GdataComments.Comments.t
  val of_xml_data_model :
    GdataComments.Comments.t ->
    GdataCore.xml_data_model -> GdataComments.Comments.t
  val to_xml_data_model :
    GdataComments.Comments.t -> GdataCore.xml_data_model list
  val parse_comment_entry :
    GdataCore.xml_data_model -> GdataComments.Comments.Entry.t
  val comment_entry_to_data_model :
    GdataComments.Comments.Entry.t -> GdataCore.xml_data_model
end