internal void DrawWindowContent(int windowID)
        {
            MovableText     movableTextInfo = movableTexts[FindMovableTextIndex(windowID)];
            ParagraphLayout layout          = ParagraphLayout.Create(movableTextInfo);

            if (!string.IsNullOrEmpty(movableTextInfo.title))
            {
                GUIStyle titleStyle = new GUIStyle();
                titleStyle.normal.textColor = Color.white;
                GUI.Label(layout.titleRect, new GUIContent(movableTextInfo.title), titleStyle);
            }

            float verticalPosition = kWindowMargin + 18;

            for (int line = 0; line < movableTextInfo.lines.Count; ++line)
            {
                (string text, Color color) = movableTextInfo.lines[line];

                GUIStyle style = new GUIStyle();
                style.normal.textColor = color;
                style.border.left      = 0;
                GUI.Label(new Rect(new Vector2(kWindowMargin, verticalPosition), layout.lineSizes[line]), text, style);

                verticalPosition += layout.lineSizes[line].y;
            }

            GUI.DragWindow(new Rect(0, 0, Screen.width, Screen.height));
        }
        internal void DrawTextWindow(int windowIdentifier)
        {
            MovableText movableText = movableTexts[windowIdentifier];

            if (movableText.lines.Count == 0)
            {
                return;
            }

            ParagraphLayout layout = ParagraphLayout.Create(movableText);

            GUI.color = Color.white;

            movableText.rect = GUI.Window(movableText.identifier, layout.rect, DrawWindowContent, new GUIContent());
            movableTexts[windowIdentifier] = movableText;
        }