public static void Find(ConsoleSystem.Arg arg)
    {
        if (!arg.HasArgs(1))
        {
            return;
        }
        string str  = arg.GetString(0, "");
        string str1 = "";
        string str2 = "";

        foreach (ConsoleSystem.Command command in ConsoleSystem.Index.All.Where <ConsoleSystem.Command>((ConsoleSystem.Command x) => {
            if (x.Description.Contains(str) || x.FullName.Contains(str))
            {
                return(true);
            }
            return(x.Arguments.Contains(str));
        }))
        {
            if (!arg.CanSeeInFind(command))
            {
                continue;
            }
            if (!command.Variable || command.GetOveride == null)
            {
                string str3 = string.Format("{0}( {1} )", command.FullName, command.Arguments);
                str2 = string.Concat(str2, string.Format(" {0} {1}\n", str3, command.Description));
            }
            else
            {
                str1 = string.Concat(str1, string.Format(" {0} {1} ({2})\n", command.FullName.PadRight(24), command.Description, command.String));
            }
        }
        arg.ReplyWith(string.Concat("Variables:\n", str1, "\nCommands:\n", str2));
    }