1-Wire, DS18B20... How do I search the bus?

After many frustrating evenings, I finally fixed the problem on mine (7 sensors) by completely replacing the search method in OneWire.cpp with the reference search implementation at the bottom of the maxim page: Mixed-signal and digital signal processing ICs | Analog Devices.
It works fine now. I originally tried to reconcile the existing code with the flowchart on that page, but it was just too convoluted for me to follow.
It wasn't too hard to replace. I had to modify the reset_search() method to clear the appropriate variables (just like in the reference OWFirst() method) and add a line from the original search to copy the address from the ROM_NO array to the one that is passed in to the method.