The actions that setPropertyAndFire does is to 1) setProperty and 2) if shouldFireChange(), trigger firePropertyChanged. firePropertyChanged, if modelListener == null, does nothing. So we can guarantee that there is no behavior change because we already know modelListener is null, thus setPropertyAndFire does no functional actions beyond setProperty. setProperty DOES do something even when modelListener is null, namely properties.put().