public virtual Rect GetSafeArea()
        {
            Rect nsa = new Rect(0, 0, Screen.width, Screen.height);

            if (!IsRootSafeArea())
            {
                return(nsa);
            }
            else
            {
                Rect safeArea = Screen.safeArea;
                if (Application.isEditor)
                {
#if UNITY_EDITOR
                    nsa      = EditorSafeAreaSimulator.GetNormalizedSafeArea();
                    safeArea = new Rect(Screen.width * nsa.x, Screen.height * nsa.y, Screen.width * nsa.width, Screen.height * nsa.height);
#endif
                }
                else if (IsStatusBarActiveWithLayoutStable() && Screen.safeArea == nsa)
                {
                    //This is the size of statusbar in IOS/Android without notch
                    safeArea.height = Mathf.Max(0, safeArea.height - GetStatusBarHeight());
                }


                return(safeArea);
            }
        }
        protected virtual void TryInit()
        {
            TryInstantiateContent();
            if (Content != null)
            {
                if (m_forceClip)
                {
                    Content.gameObject.GetAddComponent <RectMask2D>();
                }
                var layoutElement = Content.gameObject.GetAddComponent <LayoutElement>();
                layoutElement.ignoreLayout = true;
                ResetRectTransform(m_Content, false);
                RefreshContentChildren();
            }

            TryInstantiateUnsafeContent();
#if UNITY_EDITOR
            EditorSafeAreaSimulator.RegisterSafeAreaComponent(this);
#endif
            if (m_UnsafeContent != null)
            {
#if UNITY_EDITOR
                SetupSimulatorMaskContent();
#endif

                ResetRectTransform(m_UnsafeContent, true);
            }
            Refresh();
        }
        protected override void OnDestroy()
        {
            base.OnDestroy();
            CancelInvoke();
            ClearCachedInteropInfos();
#if UNITY_EDITOR
            EditorSafeAreaSimulator.UnregisterSafeAreaComponent(this);
#endif
        }
        protected virtual void SetupSimulatorMaskContent()
        {
            var spriteToApply = m_UnsafeContent != null && Application.isPlaying ? EditorSafeAreaSimulator.GetOrLoadSimulatorSprite() : null;

            if (Application.isPlaying && spriteToApply != null && m_UnsafeContent != null)
            {
                if (_simulatorSpriteContent == null)
                {
                    _simulatorSpriteContent = new GameObject("SimulatorMaskContent").AddComponent <Image>();
                    _simulatorSpriteContent.gameObject.hideFlags = HideFlags.DontSaveInEditor | HideFlags.DontSaveInBuild;
                    _simulatorSpriteContent.transform.SetParent(Content.parent);
                    _simulatorSpriteContent.transform.SetSiblingIndex(Content.transform.GetSiblingIndex() + 1);
                    _simulatorSpriteContent.type = Image.Type.Sliced;

                    var layoutElement = _simulatorSpriteContent.gameObject.GetAddComponent <LayoutElement>();
                    layoutElement.ignoreLayout = true;
                }
                if (_simulatorSpriteContent != null)
                {
                    _simulatorSpriteContent.raycastTarget = false;
                    _simulatorSpriteContent.sprite        = spriteToApply;
                    _simulatorSpriteContent.gameObject.SetActive(spriteToApply != null);
                    if (_simulatorSpriteContent.gameObject.activeSelf)
                    {
                        ResetRectTransform(_simulatorSpriteContent.rectTransform);
                    }
                }
            }
            else if (_simulatorSpriteContent != null)
            {
                if (Application.isPlaying)
                {
                    GameObject.Destroy(_simulatorSpriteContent.gameObject);
                }
                else
                {
                    GameObject.DestroyImmediate(_simulatorSpriteContent.gameObject);
                }
            }
        }