Why are the variable names all wrong in my decompiled Java class?

from blog Kevin Boone's website, | ↗ original
Java decompilers usually make a good job of recovering program structure and the names of classes and methods; why do they make such a bad job of recovering variable names?