public static synchronized DegreePlansProvider getProvider() {
   String providerClass = ApplicationProperty.CustomizationDegreePlans.value();
   if (providerClass == null) {
     if (sProvider != null) {
       sProvider.dispose();
       sProvider = null;
     }
   } else if (!providerClass.equals(sProviderClass)) {
     if (sProvider != null) {
       sProvider.dispose();
       sProvider = null;
     }
     sProviderClass = providerClass;
     try {
       sProvider = ((DegreePlansProvider) Class.forName(sProviderClass).newInstance());
     } catch (Exception e) {
       throw new SectioningException(MSG.exceptionDegreePlansProvider(e.getMessage()), e);
     }
   }
   return sProvider;
 }
 public static synchronized boolean hasProvider() {
   return sProvider != null || ApplicationProperty.CustomizationDegreePlans.value() != null;
 }