code: public void validateStaticConfiguration()
      {
          int failedConfigCount = 0;
  
          if (allConfigDescriptors == null) {
              log.warn("No config descriptors found. If you don't have any configurations installed, this warning can be ignored");
              return;
          }
  
          for (ConfigDescriptor desc : allConfigDescriptors) {
              try {
                  log.trace("Checking static config for property {}, with default value of {}",
                      desc.getConfigName(), desc.getDefaultValue());
                  PropertyIdentifier propertyId = getIdentifier(desc);
                  TypeLiteral<PropertyAccessor<?>> accessorKey =
                      (TypeLiteral<PropertyAccessor<?>>) TypeLiteral.get(
                          Types.newParameterizedType(PropertyAccessor.class, desc.getConfigType()));
                  Provider<PropertyAccessor<?>> propertyAccessor = injector.getProvider(Key.get(accessorKey, propertyId));
  
                  propertyAccessor.get();
              }
              catch (ProvisionException ex) {
                  ++failedConfigCount;
                  log.warn("Failed static config check for property {}", desc.getConfigName(), ex);
              }
          }
  
          if (failedConfigCount > 0) {
              throw new ConfigException("{} of {} configuration values failed static config checks",
                  failedConfigCount,
                  allConfigDescriptors.size());
          }
      }
docs: Validates all static configurations (i.e. strings in your @DefaultValue annotations) which are found in the
  injector in which ConfigSystem was retrieved from.
  Intended to be used both in unit tests as well as in the initialization logic of your application immediately
  after the Guice Injector has been created. It is essentially a sanity check of all static configurations.
  
  @throws ConfigException if Guice had issues provisioning property accessors