Better recursive poison, perhaps?

Unit tests pass... seems to work, but I wouldn't bet my life that it covers every edge case.