void OnGUI()
        {
            var pos = new Rect(new Vector2(), position.size);

            pos = pos.Expand(-2f); // 2-pixel margins
            var line = pos.SliceTop();

            EditorGUI.BeginDisabledGroup(Target == null);
            if (GUI.Button(line.SliceRight(60f), RefreshButton))
            {
                Refresh();
            }
            EditorGUI.EndDisabledGroup();
            EditorGUI.LabelField(line.SliceLeft(38f), "Asset");
            Target = (TextAsset)EditorGUI.ObjectField(line, Target, typeof(TextAsset), false);

            if (Target != null && (_containerView == null || _displayedAsset != Target))
            {
                var info = new ContainerEditorInfo(Target);
                _displayedAsset = Target;
                _containerView  = new ContainerEditorView(info, true);
            }
            if (Target == null)
            {
                Refresh();
            }
            var updatedContainer = _containerView.Draw(pos);

            if (updatedContainer != null)
            {
                ContainerAssetUtils.WriteToTextAsset(updatedContainer, _displayedAsset);
                Refresh();
            }
        }
        public override void OnGUI(Rect rect)
        {
            var pos = new Rect(new Vector2(), GetWindowSize());

            pos = pos.Expand(-2f); // 2-pixel margins
            var updatedContainer = _view.Draw(pos);

            if (updatedContainer != null && _asset != null)
            {
                ContainerAssetUtils.WriteToTextAsset(updatedContainer, _asset);
                var container = ContainerRef.FromTextAsset(_asset).Container as BinaryContainer;
                _view = new ContainerEditorView(new ContainerEditorInfo(container), _asset);
            }
        }