digraph g {
  graph [compound = true];
  //presentation
  splines = true;
  overlap = false;
  rankdir = TB;
  subgraph cluster_generators {
    label="generators";
    style="dotted";
    generators_youtube [label="https://api.youtube.com"]
  }
  subgraph cluster_providers {
    label="providers";
    providers_youtube_channel [label="YoutubeChannelProvider"]
    providers_youtube_video [label="YoutubeUserActivityProvider"]
  }
  subgraph cluster_processors {
    label="processors";
    processors_youtube_activity [label="YoutubeTypeConverter"]
    processors_youtube_activityobject [label="YoutubeTypeConverter"]
  }
  persisters [label="persisters", shape="cylinder"];
  generators_youtube -> providers_youtube_channel
  generators_youtube -> providers_youtube_video
  providers_youtube_channel -> processors_youtube_activityobject [label="o.a.s.y.Channel"]
  providers_youtube_video -> processors_youtube_activity [label="o.a.s.y.Video"]
  processors_youtube_activityobject -> persisters [label="o.a.s.p.j.Page"]
  processors_youtube_activity -> persisters [label="o.a.s.p.j.Video\no.a.s.p.j.Comment"]
}