public static synchronized ResourceBundle getBundle (String baseName, Locale locale, ClassLoader classLoader)
public static ResourceBundle getBundle(String baseName)
  public static synchronized ResourceBundle getBundle    (String baseName, Locale locale, ClassLoader classLoader)  {    // If the default locale changed since the last time we were called,    // all cache entries are invalidated.    Locale defaultLocale = Locale.getDefault();    if (defaultLocale != lastDefaultLocale)      {	bundleCache = new HashMap();	lastDefaultLocale = defaultLocale;      }    // This will throw NullPointerException if any arguments are null.    lookupKey.set(baseName, locale, classLoader);        Object obj = bundleCache.get(lookupKey);    ResourceBundle rb = null;        if (obj instanceof ResourceBundle)	      {        return (ResourceBundle) obj;	  }    else if (obj == nullEntry)      {        // Lookup has failed previously. Fall through.      }    else      {	// First, look for a bundle for the specified locale. We don't want	// the base bundle this time.	boolean wantBase = locale.equals(defaultLocale);	ResourceBundle bundle = tryBundle(baseName, locale, classLoader, 					  wantBase);        // Try the default locale if neccessary.	if (bundle == null && !locale.equals(defaultLocale))	  bundle = tryBundle(baseName, defaultLocale, classLoader, true);	BundleKey key = new BundleKey(baseName, locale, classLoader);	if (bundle == null)	  {	    // Cache the fact that this lookup has previously failed.	    bundleCache.put(key, nullEntry);	  }	else	  {            // Cache the result and return it.	    bundleCache.put(key, bundle);	    return bundle;	  }      }    throw new MissingResourceException("Bundle " + baseName 				       + " not found for locale "				       + locale				       + " by classloader "				       + classLoader,					 baseName, "");  }