/// <inheritdoc/>
        public IInspector LastSelectedActiveOrDefaultInspector(InspectorSplittability splittability)
        {
            if (splittability == InspectorSplittability.Any)
            {
                return(LastSelectedActiveOrDefaultInspector());
            }

            bool splittable = splittability == InspectorSplittability.IsSplittable;

            if (LastSelectedInspector != null && LastSelectedInspector.InspectorDrawer is ISplittableInspectorDrawer == splittable)
            {
                return(LastSelectedInspector);
            }

            if (activeInspector != null && activeInspector.InspectorDrawer is ISplittableInspectorDrawer == splittable)
            {
                return(activeInspector);
            }

            for (int n = activeInstances.Count - 1; n >= 0; n--)
            {
                if (activeInstances[n].InspectorDrawer is ISplittableInspectorDrawer == splittable)
                {
                    return(activeInstances[n]);
                }
            }

            return(null);
        }
        /// <inheritdoc/>
        public IInspector LastSelectedActiveOrDefaultInspector(InspectorTargetingMode targetingMode, InspectorSplittability splittability)
        {
            if (targetingMode == InspectorTargetingMode.All)
            {
                return(LastSelectedActiveOrDefaultInspector(splittability));
            }

            if (splittability == InspectorSplittability.Any)
            {
                return(LastSelectedActiveOrDefaultInspector(targetingMode));
            }

            var  wrongTargetingMode = targetingMode == InspectorTargetingMode.Hierarchy ? InspectorTargetingMode.Project : InspectorTargetingMode.Hierarchy;
            bool splittable         = splittability == InspectorSplittability.IsSplittable;

            if (LastSelectedInspector != null && LastSelectedInspector.InspectorDrawer.InspectorTargetingMode != wrongTargetingMode && LastSelectedInspector.InspectorDrawer is ISplittableInspectorDrawer == splittable)
            {
                return(LastSelectedInspector);
            }

            if (activeInspector != null && activeInspector.InspectorDrawer.InspectorTargetingMode != wrongTargetingMode && activeInspector.InspectorDrawer is ISplittableInspectorDrawer == splittable)
            {
                return(activeInspector);
            }

            for (int n = activeInstances.Count - 1; n >= 0; n--)
            {
                if (activeInstances[n].InspectorDrawer.InspectorTargetingMode != wrongTargetingMode && activeInstances[n].InspectorDrawer is ISplittableInspectorDrawer == splittable)
                {
                    return(activeInstances[n]);
                }
            }

            return(null);
        }