/// <summary>
    /// Show a tooltip with information about the entered object method or property.
    /// </summary>
    /// <param name="scintilla"></param>
    /// <param name="reader">Jolt's XmlDocCommentReader instance, to get and display comments from assembly-generated XML file.</param>
    /// <remarks></remarks>
    public static void ShowToolTip(this ScintillaNET.Scintilla scintilla, Jolt.XmlDocCommentReader reader)
    {
        //parses the last keyword (object) (before the ".") and get suggestions for the autocomplete box from its properties and methods

        string [] splitters =
        {
            ".",
            "(",
            ")",
            " ",
            "\r",
            "\n",
            "\r\n"
        };

        dynamic text     = ScintillaExtender.getLastWord(scintilla).Split(splitters, StringSplitOptions.RemoveEmptyEntries);
        dynamic lastchar = Convert.ToChar(scintilla.GetCharAt(scintilla.CurrentPosition));

        string helptext = "";

        if (text.Length >= 2)
        {
            string lastkeyword = text[text.Length - 1];
            string lastobj     = text[text.Length - 2].Trim();
            //string obj = Convert.ToString(lastobj));
            switch (lastobj)
            {
            case "Browser":
                dynamic prop = typeof(TopDown_QA_FrameWork.Driver).GetMember(lastkeyword);
                if (prop.Length > 0)
                {
                    helptext = ScintillaExtender.FormatHelpTip(scintilla, prop[0], reader);
                }
                break;

            case "ims1":
            case "ims2":
            case "ims3":
            case "ims4":
            case "ims5":
            case "ims6":
            case "oms1":
            case "oms2":
            case "oms3":
            case "oms4":
            case "oms5":
            case "MaterialStream":
                prop = Type.GetType("DWSIM.DWSIM.SimulationObjects.Streams.MaterialStream").GetMember(lastkeyword);
                if (prop.Length > 0)
                {
                    helptext = ScintillaExtender.FormatHelpTip(scintilla, prop[0], reader);
                }
                break;

            case "ies1":
            case "oes1":
            case "EnergyStream":
                prop = Type.GetType("DWSIM.DWSIM.SimulationObjects.Streams.EnergyStream").GetMember(lastkeyword);
                if (prop.Length > 0)
                {
                    helptext = ScintillaExtender.FormatHelpTip(scintilla, prop[0], reader);
                }
                break;

            case "Flowsheet":
                prop = Type.GetType("DWSIM.FormFlowsheet").GetMember(lastkeyword);
                if (prop.Length > 0)
                {
                    helptext = ScintillaExtender.FormatHelpTip(scintilla, prop[0], reader);
                }
                break;

            case "Spreadsheet":
                prop = Type.GetType("DWSIM.SpreadsheetForm").GetMember(lastkeyword);
                if (prop.Length > 0)
                {
                    helptext = ScintillaExtender.FormatHelpTip(scintilla, prop[0], reader);
                }
                break;

            case "PropertyPackage":
                prop = Type.GetType("DWSIM.DWSIM.SimulationObjects.PropertyPackages.PropertyPackage").GetMember(lastkeyword);
                if (prop.Length > 0)
                {
                    helptext = ScintillaExtender.FormatHelpTip(scintilla, prop[0], reader);
                }
                break;

            case "UnitOp":
            case "Me":
                prop = Type.GetType("DWSIM.SimulationObjects_UnitOpBaseClass").GetMember(lastkeyword);
                if (prop.Length > 0)
                {
                    helptext = ScintillaExtender.FormatHelpTip(scintilla, prop(0), reader);
                }
                break;

            case "Solver":
                prop = Type.GetType("DWSIM.DWSIM.Flowsheet.FlowsheetSolver").GetMember(lastkeyword);
                if (prop.Length > 0)
                {
                    helptext = ScintillaExtender.FormatHelpTip(scintilla, prop(0), reader);
                }
                break;
            }

            //shows the tooltip

            if (!string.IsNullOrEmpty(helptext))
            {
                scintilla.CallTipShow(scintilla.CurrentPosition, helptext);
            }
            else
            {
                scintilla.CallTipCancel();
            }
        }
        else
        {
            //hides tooltip if visible

            scintilla.CallTipCancel();
        }
    }