private void GUI_tokens(BTLGUILine line)
        {
            GUIStyle style = BTLSyntaxHighlight.style_label;

            for (int i = 0; i < line.tokens.Count; ++i)
            {
                BTNode node = null;
                if (i < line.btnodes.Count)
                {
                    node = line.btnodes[i];
                }

                var token = line.tokens[i];
                style = BTLSyntaxHighlight.GetTokenStyle(token);

                if (bt.program == null || bt.program.codemaps == null)
                {
                    style = BTLSyntaxHighlight.style_comment;
                }

                if (bt.exceptions.Length > 0)
                {
                    style = BTLSyntaxHighlight.style_comment;
                }

                if (line.hasErrors)
                {
                    style = BTLSyntaxHighlight.style_failed;
                }

                GUI_token(style, node, token);
            }// for tokens
        }
        private void GUI_tokens_live(BTLGUILine line)
        {
            GUIStyle style = BTLSyntaxHighlight.style_label;

            for (int i = 0; i < line.tokens.Count; ++i)
            {
                BTNode node = null;
                if (i < line.btnodes.Count)
                {
                    node = line.btnodes[i];
                }

                var token = line.tokens[i];
                style = BTLSyntaxHighlight.GetTokenStyle(token);

                if (node != null)
                {
                    var nodeStyle = GetNodeStyle(node);
                    if (nodeStyle != null)
                    {
                        style = nodeStyle;
                    }
                }

                if (bt.exceptions.Length > 0)
                {
                    style = BTLSyntaxHighlight.style_comment;
                }

                if (line.hasErrors)
                {
                    style = BTLSyntaxHighlight.style_failed;
                }

                GUI_token(style, node, token);

                // debug info
                bool isLastNodeToken = node != null && (i + 1 >= line.btnodes.Count || node != line.btnodes[i + 1]);
                if (isLastNodeToken && node.debugInfo != null && node.debugInfo != "")
                {
                    GUILayout.Label(string.Format("[{0}]", node.debugInfo.Replace("\t", "   ")), BTLSyntaxHighlight.style_comment);
                }
            }// for tokens
        }