Here's an interesting conundrum posed by Przemyslaw Pokrywka. One
of the refactorings in the book
is Introduce Null Object - a very
useful refactoring (also discussed in Josh's new
book.) Przemyslaw's point is that this refactoring can alter
behavior. If you have a method return a null, and you invoke a
method on that null you'll get a null pointer exception. If you use a
Null Object you'll get some default behavior.

There was some recent discussion on the refactoring mailing list
about what is or isn't a refactoring. As with these discussions,
there's always a danger of debating how many angels fit on a pin,
but thinking about the boundaries does have some useful purpose.