This one is a bit peculiar. :) A for loop with no initialization is usually a bit confusing... In general, it feels like the FindBestMethod() does "too much" given that it's now over hundred lines long. Can you try to split it out into a couple of helper methods?

Also, another detail: try to be more consistent with ++foo vs foo++. I suggest foo++ unless you have very specific reasons for wanting a prefix increment.