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));
        }