null object and visitor pattern