private void setPrefsRecurse(Component c, Preferences prefs, boolean reset)
{
	SwingPrefSetter setter = getSetter(c.getClass());
	if (setter != null || c instanceof PrefWidget) {
		// Make up name for component
		Class klass = c.getClass();
//		String name = c.getName();		// Bad default names like frame1, frame2, etc. changed every time we created container
		String name = null;
		if (name == null || "".equals(name) || "null".equals(name)) {
			Integer Count = (Integer)nullCount.get(klass);
			int nCount;
			if (Count == null) nCount = 1; //Count = new Integer(1);
			else nCount = Count.intValue() + 1;
			nullCount.put(klass, new Integer(nCount));

			// Get class name
			String pkgName = klass.getPackage().getName();
			String className = klass.getName();
			//System.out.println(className.length());
			String leafName = className.substring(pkgName.length()+1);
			name = leafName + nCount;
		}

		prefs = prefs.node(name);

		// Take care of yourself
//System.out.println("Setting Pref (node = " + prefs.absolutePath() + ") for " + c);
		if (setter != null) setter.setPrefs(c, prefs, reset);
		else ((PrefWidget)c).setPrefs(prefs, reset);
	}

	// Take care of your children
	if (c instanceof Container) {
	    Component[] child = ((Container)c).getComponents();
	    for (int i = 0; i < child.length; ++i) {
			setPrefsRecurse(child[i], prefs, reset);
		}
	}
}