Quicksort Best Practices

Being a modern business oriented language, C# lends itself ideally to generic implementations of abstract algorithms as the shit I don't know enough buzzwords sort algorithm everybody mistakenly names bubblesort. Sort of.

The following code shows how to do this is objectoriented C#. You can compare it with my python and Java and plain c solutions - you'll probably agree that C# compares favourably in terms of unlackingness. Speedwise however C is still unbeatable when it comes to tightly optimized non-recursive quicksorting

#region Using directives

using System;
using System.Collections.Generic;
using System.Text;

#endregion

namespace kicksort
{
    class quicksort
    {
        protected int __(object[] ______, int _______, _____ ________, int[] _)
        {
            switch (_______)
            {
                case _Oo:
                    _[_Oo] = _[_Oo] - o;
                    break;
                case o:
                    _[_o] = _______;
                   break;
               case o_:
                   return _[oo];
               case oo:
                   _[_Oo] = _[_Oo] + o;
                   break;
               case oO:
                   ______[__(______, o_, ________, _)] = ______[_[oO]];
                   goto case O; // BUG: ___OOOo? 
               case _o:
                   return _[_o];
               case ___o__o:
                   _[oo] = __(______, ___OoOo, ________, _) - o;
                   goto case ___O__o;
               case ___oO_O:
                   return (__(______, o_, ________, _) == _[oO]) ? o : __(______, ___oo_O, ________, _);
               case oooo:
                   ______[_[oO]] = ______[__(______, o_, ________, _)];
                   goto case O;
               case ___OooO:
                   __(______, __(______, __(______, __OoOO_, ________, _), ________, _), ________, _);
                   goto case ___oOoO;
               case O:
                   _[___o__o] = o;
                   break;
               case ___OOOo:
                   _______ = ___oOOo;
                   goto case oo;
               case ___oo_O:
                   return (________(______[__(______, __oOOo_, ________, _)], ____) > _Oo) ? oooo : _o;
               case __ooOo_:
                   goto case ___OooO;
               case __oOOo_:
                   return __(______, o_, ________, _);
               case Oo:
                   _[_[_Oo]] = _Oo;
                   goto case ___OOOo;
               case ___oOoO:
                   if (_[_o] == _Oo && _[___o__o] == _Oo)
                       goto case ___OooO;
                   __(______, ___OOOO, ________, _);
                   goto case ooo;
               case ___oOOo:
                   _[_[_Oo]] = ______.Length - o;
                   _______ = ___ooOO;
                   goto case oo;
               case __OoOO_:
                   _[oo] = __(______, o_, ________, _) + o;
                   return ___oO_O;
               case __ooOO_:
                   ____ = ______[_[o]];
                   goto case ___o__o;
               case ___oooo:
                   _[_[_Oo]] = _[oO] + o;
                   goto case oo;
               case ___Oooo:
                   return __(______, (________(______[_[oO]], ____) < _Oo) ? oO : o_, ________, _);
               case ___oO_o:
                   return _[oO] - o;
               case ___OoOO:
                   _[o] = _[_[__(______, _Oo, ________, _)]];
                   goto case ___oOoo;
               case ___O__o:
                   _[oO] = _[o];
                   _[_o] = _Oo;
                   return ___oooO;
               case ___OOOO:
                   _[___o__o] = _Oo;
                   return ___oOoO;
               case ___OOoO:
                   _[_[_Oo]] = __(______, ___OoOo, ________, _);
                   goto case ___Oo_O;
                case ___oo_o:
                    __(______, __(______, __(______, __(______, __ooOO_, ________, _), ________, _), ________, _), ________, _);
                    _[_[_Oo]] = _[o];
                    goto case oo;
                case ___OoOo:
                    return _[o_];
                case ___oOoo:
                    _[o_] = _[_[__(______, _Oo, ________, _)]];
                    return ___ooOo;
                case ___oooO:
                    if (_[_o] == _Oo)
                        goto case ___OOoo;

                    ______[_[oO]] = ____;
                    goto case ___OOoO;
                case ___oOOO:
                    return _[_[__(______, _Oo, ________, _)]];
                case ___Oo_O:
                    return __(______, ___Oo_o, ________, _);
                case ___OOoo:
                    __(______, __(______, ___OOOO, ________, _), ________, _);
                    goto case ___oooO;
                case O_:
                    __(______, __(______, ___OoOO, ________, _), ________, _);
                    goto case ___ooOO;
                case ___OO_O:
                    _[_[_Oo]] = __(______, ___oO_o, ________, _);
                    _______ -= Oo;
                    goto case oo;
                case ___ooOo:
                    if (__(______, ___OoOo, ________, _) < _[o])
                        goto case ___oo_o;
                    break;
                case ___O__O:
                    _[_Oo] = O;
                    return Oo;
                case ooo:
                    if (_[_o] == _Oo && _[___o__o] == _Oo)
                        goto case __________________________________________;
                    break;
                case ___OO_o:
                    return __(______, __(______, __(______, __(______, ___O__O, ________, _), ________, _), ________, _), ________, _);
                case ___Oo_o:
                    __(______, oo, ________, _);
                    return ___OO_O;
                case ___ooOO:
                    if (_[_Oo] > O)
                        goto case O_;
                    break;
                case __________________________________________:
                    _[oO] = __(______, ___oO_o, ________, _);
                    __(______, (_[oO] == __(______, o_, ________, _)) ? o : ___Oooo, ________, _);
                    goto case ooo;
            }
            return _______;
        }

        public quicksort(object[] O, _____ o)
        {
            __(O, ___OO_o, o, new int[___OO_O + O.Length]);
        }
        public delegate int _____(object a, object b);
        object ____;
        // TODO: add comments
        const int _Oo = o-o;
        const int o = 1;
        const int oo = o + o + o;
        const int ooo = o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o;
        const int oooo = o + o + o + o + o + o + o + o;
        const int O = o + o + o + o + o + o + o + o + o + o;
        const int oO = o + o + o + o;
        const int Oo = o + o + o + o + o + o + o + o + o + o + o + o + o + o + o;
        const int O_ = o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o;
        const int o_ = o + o;
        const int _o = o + o + o + o + o;
        const int ___O__O = o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o;
        const int ___o__o = o + o + o + o + o + o;
        const int ___O__o = o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o;
        const int ___oo_O = o + o + o + o + o + o + o + o + o + o + o + o;
        const int ___Oo_O = o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o;
        const int ___oo_o = o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o;
        const int ___Oo_o = o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o;
        const int ___oO_O = o + o + o + o + o + o + o;
        const int ___OO_O = o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o;
        const int ___oO_o = o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o;
        const int ___OO_o = o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o;
        const int ___ooOO = o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o;
        const int ___OoOO = o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o;
        const int ___ooOo = o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o;
        const int ___OoOo = o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o;
        const int ___oOOO = o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o;
        const int ___OOOO = o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o;
        const int ___oOOo = o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o;
        const int ___OOOo = o + o + o + o + o + o + o + o + o + o + o;
        const int ___oooO = o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o;
        const int ___OooO = o + o + o + o + o + o + o + o + o;
        const int ___oooo = o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o;
        const int ___Oooo = o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o;
        const int ___oOoO = o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o;
        const int ___OOoO = o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o;
        const int ___oOoo = o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o;
        const int ___OOoo = o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o;
        const int __ooOO_ = o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o;
        const int __OoOO_ = o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o;
        const int __ooOo_ = o + o + o + o + o + o + o + o + o + o + o + o + o;
        const int __oOOo_ = o + o + o + o + o + o + o + o + o + o + o + o + o + o;
        const int __________________________________________ = o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o + o;

    }

    class Program
    {

        static void Main(string[] args)
        {
            object[] list = { "fortran", "77", "oldskool" };
            
            new quicksort(list, delegate(object a, object b)
            {
                return a.ToString().CompareTo(b.ToString());
            });
        }
    }
}