Halfway through writing a Stack Overflow question, I realised what my problem was. It's an unusually good rubber duck.