public static ImmediateWindow.Result RunCommand(string command, out string result)
    {
        result = string.Empty;
        while (command.Contains("  "))
        {
            command = command.Replace("  ", " ");
        }
        if (command.StartsWith(" "))
        {
            command = command.Substring(1);
        }
        if (command.EndsWith(" "))
        {
            command = command.Substring(0, command.Length - 1);
        }
        string[] array = command.Split(new char[]
        {
            ' '
        });
        if (array.Length == 0)
        {
            return(ImmediateWindow.Result.NoInput);
        }
        List <Type> list = new List <Type>();

        string[] array2 = array[0].Split(new char[]
        {
            '.'
        });
        string text = string.Empty;

        for (int i = 0; i < array2.Length; i++)
        {
            if (!text.Empty())
            {
                text += ".";
            }
            text += array2[i];
            List <Type> types = ImmediateWindow.GetTypes(text);
            if (types.Count != 1)
            {
                list = list.Concat(types).ToList <Type>();
                break;
            }
            list = types;
        }
        if (list.Count == 0)
        {
            return(ImmediateWindow.Result.InvalidType);
        }
        if (list.Count > 1)
        {
            result = string.Join <Type>(" ", list);
            return(ImmediateWindow.Result.IncompleteType);
        }
        if (array.Length < 2)
        {
            return(ImmediateWindow.Result.InvalidMember);
        }
        string[] members = array[1].Split(new char[]
        {
            '.'
        });
        string[] parameters = array.Skip(2).ToArray <string>();
        return(ImmediateWindow.Execute(list[0], members, parameters, ref result));
    }