functor (Link : GdataAtom.AtomData->
  sig
    type link_t = 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 : link_t list;
          title : GdataAtom.Title.t;
          category : GdataAtom.Category.t;
          extensions : GdataCore.xml_data_model list;
        }
        val empty : t
        val of_xml_data_model : t -> GdataCore.xml_data_model -> t
        val to_xml_data_model : 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 : Feed.t;
    }
    val empty : t
    val of_xml_data_model : t -> GdataCore.xml_data_model -> t
    val to_xml_data_model : t -> GdataCore.xml_data_model list
    val parse_comment_entry : GdataCore.xml_data_model -> Entry.t
    val comment_entry_to_data_model : Entry.t -> GdataCore.xml_data_model
  end