public static Dictionary <string, object> Build(IExtensionReader extensionReader, IRobotTemplateRelations robotTemplateRelations, EntityDefault ed)
            {
                var info = ed.ToDictionary();

                try
                {
                    Entity entity = null;

                    var robotTemplate = robotTemplateRelations.GetRelatedTemplate(ed);
                    if (robotTemplate != null)
                    {
                        entity = robotTemplate.Build();
                    }

                    if (entity == null)
                    {
                        entity = Entity.Factory.CreateWithRandomEID(ed);
                    }

                    var item = entity as Item;
                    item?.Initialize();

                    var builder = new InfoBuilder(extensionReader, info);
                    entity.AcceptVisitor(builder);
                }
                catch (Exception ex)
                {
                    Logger.Error($"troubled definition: {ed.Definition}  {ex.Message}");
                    Logger.Error($"{ex}\n{ex.Message}\n{ex.Source}\n{ex.InnerException?.Message}\n{ex.StackTrace}\n");
                }

                return(info);
            }