void EditorUpdateDeclaration(DeclarationUI ui, IStructDeclarer declarer, string newName, string newFields)
        {
            var oldDecl = declarer.Declaration;

            if (oldDecl.Name != newName && FDeclarationFactory.Get(newName) != null)
            {
                ui.AppendError($"Declaration named '{newName}' already exists");
                return;
            }
            else if (!FDeclarationFactory.WellformedDeclarationName(newName))
            {
                ui.AppendError($"Declaration name malformed");
                return;
            }
            var d = FDeclarationFactory.Create(newName, newFields);

            if (!d.Equals(oldDecl))
            {
                FDeclarationFactory.Update(oldDecl.Name, d);
                SetDescriptiveName(declarer, d.Name);
            }
        }
        void EditorCreateDeclaration(DeclarationUI ui, IStructDeclarer declarer, string newName, string newFields)
        {
            if (!FDeclarationFactory.WellformedDeclarationName(newName))
            {
                ui.AppendError($"Declaration name malformed");
                return;
            }
            Declaration d = FDeclarationFactory.Get(newName);

            if (d == null)
            {
                d = FDeclarationFactory.Create(newName, newFields);
                FDeclarationFactory.Add(d);
                declarer.Declaration = d;
                (declarer.IOManager as IOManager).UpdateFromDeclaration(d);
                SetDescriptiveName(declarer, d.Name);
            }
            else
            {
                ui.AppendError($"Declaration named '{newName}' already exists");
            }
        }