Interrupt called same for FALLING and CHANGE

The debounce example uses digitalRead in loop(), something I can't do in an interrupt handler.

Why can't you call digitalRead() in the ISR? It's fast enough.