public string Generate(IChain <MessageInfo, LinkInfo <T> > map) { var result = new StringBuilder(); result.AppendLine("digraph architecture {\n"); result.AppendLine(GetAbout()); result.AppendLine("\n"); result.AppendLine(SpecialRulesPreProcess(map)); result.AppendLine(GetNodesDescription(map)); foreach (var chain in map.SplitChains()) { result.AppendLine("\n"); result.AppendLine(ProcessChain(chain)); } result.AppendLine(SpecialRulesPostProcess(map)); result.AppendLine(GetFinalData(map)); return(result.ToString().Replace("\n", Environment.NewLine)); }