public static LineScript interpret(string rowText)
    {
        string mainText;
        int    indentLevel = 0;

        mainText = rowText;
        while (mainText.StartsWith("  ") || mainText.StartsWith("\t"))
        {
            indentLevel++;
            if (mainText.StartsWith("  "))
            {
                mainText = mainText.Remove(0, 2);
            }
            else
            {
                mainText = mainText.Remove(0, 1);
            }
        }
        mainText.Trim();

        if (Label.isMatch(mainText))
        {
            Debug.Log("la " + mainText);
            return(new Label(rowText, "", indentLevel, mainText));
        }
        else if (Speaker.isMatch(mainText))
        {
            Debug.Log("spe " + mainText);
            return(new Speaker(rowText, "", indentLevel, mainText));
        }
        else if (Material.isMatch(mainText))
        {
            Debug.Log("mat " + mainText);
            return(new Material(rowText, "", indentLevel, mainText));
        }
        else if (Assignment.isMatch(mainText))
        {
            Debug.Log("ass " + mainText);
            return(new Assignment(rowText, "", indentLevel, mainText));
        }
        else if (Order.isMatch(mainText))
        {
            Debug.Log("ode " + mainText);
            return(new Order(rowText, "", indentLevel, mainText));
        }
        else if (Selection.isMatch(mainText))
        {
            Debug.Log("sel " + mainText);
            return(new Selection(rowText, "", indentLevel, mainText));
        }
        else if (FormatText.isMatch(mainText))
        {
            Debug.Log("sel " + mainText);
            return(new FormatText(rowText, mainText, indentLevel, ""));
        }

        return(new LineScript(rowText, mainText, indentLevel, ""));
    }