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