public UIController(EditorWindow window, Assets assets)
        {
            assets.Initialize();
            Assets  = assets;
            _root   = window.rootVisualElement;
            _window = window;

            Assets.UIAssets.TryGetValue(typeof(MainWindow), out var mainWindow);
            mainWindow?.FirstOrDefault()?.Layout.CloneTree(_root);

            ContentFrame = _root.Q("content-frame");

            _root.Q <Toolbar>("navigation").Add(_breadcrumbs);
            Assets.MiniAvatar.CloneTree(_root.Q("header"));
            var miniAvatarObjectField = _root.Q("avatar-mini").Q <ObjectField>("object-field");

            miniAvatarObjectField.RegisterValueChangedCallback(e => miniAvatarObjectField.SetValueWithoutNotify(e.previousValue));

            ExpressionInfo = new ExpressionInfo(UpdateMiniAvatar);

            if (AvatarCache.GetAllAvatarInfo().Count == 1)
            {
                ExpressionInfo.SetInfo(AvatarCache.GetAllAvatarInfo().First());
            }
            AvatarCache.AvatarWasUpdated += OnAvatarWasUpdated;
            UpdateMiniAvatar(ExpressionInfo);
            Messages = new Messages(this, _root.Q("info-box"));

            SetupFooter();
            SetupUpdater();
        }