Object newValue) {
final Object[] finalListeners = getListeners();
// Do we need to fire an event.
if (finalListeners.length > 0
&& (oldValue == null || !oldValue.equals(newValue))) {
final PropertyChangeEvent pe = new PropertyChangeEvent(this, name,
oldValue, newValue);
for (int i = 0; i < finalListeners.length; ++i) {
final IPropertyChangeListener l = (IPropertyChangeListener) finalListeners[i];
SafeRunnable.run(new SafeRunnable(JFaceResources
.getString("PreferenceStore.changeError")) { //$NON-NLS-1$