Bug 117071 MembersOrderPreferenceCache leaking a propertyChangeListener
20051109 org.eclipse.jdt.ui.PreferenceConstants#initializeDefaultValues adds a listener to JDT UI preference store but this is not deleted before shutdown.
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/MembersOrderPreferenceCache.java
IPreferenceStore store= PreferenceConstants.getPreferenceStore();
		String key= PreferenceConstants.APPEARANCE_VISIBILITY_SORT_ORDER;
		boolean success= fillVisibilityOffsetsFromPreferenceString(store.getString(key), offsets);
		if (!success) {
			store.setToDefault(key);
			fillVisibilityOffsetsFromPreferenceString(store.getDefaultString(key), offsets);	
		}
		return offsets;
	}	
		
	private boolean fillVisibilityOffsetsFromPreferenceString(String str, int[] offsets) {
		StringTokenizer tokenizer= new StringTokenizer(str, ","); 
		int i= 0;
		while (tokenizer.hasMoreTokens()) {
			String token= tokenizer.nextToken().trim();
			if ("B".equals(token)) { 
				offsets[PUBLIC_INDEX]= i++;
			} else if ("V".equals(token)) { 
				offsets[PRIVATE_INDEX]= i++;
			} else if ("R".equals(token)) { 
				offsets[PROTECTED_INDEX]= i++;
			} else if ("D".equals(token)) { 
				offsets[DEFAULT_INDEX]= i++;
			}
		}
		return i == N_VISIBILITIES;
	}
	
}