I see why you resort to early return in this method. It cuts down unnecessary computation. Though, I really don't like it. You have to read the whole (now huge) method to understand why it returns not what you might expect.

I greatly prefer compact logic expession that was here before. It equally cuts down unnecessary computation and really is much more compact.