code: public static ProviderList getFullProviderList() {
          ProviderList list;
          synchronized (Providers.class) {
              list = getThreadProviderList();
              if (list != null) {
                  ProviderList newList = list.removeInvalid();
                  if (newList != list) {
                      changeThreadProviderList(newList);
                      list = newList;
                  }
                  return list;
              }
          }
          list = getSystemProviderList();
          ProviderList newList = list.removeInvalid();
          if (newList != list) {
              setSystemProviderList(newList);
              list = newList;
          }
          return list;
      }
docs: Get the full provider list with invalid providers (those that
  could not be loaded) removed. This is the list we need to
  present to applications.