docs: @Nonnull
      public Configuration filter(Configuration config) {
          final Map<String, Object> values = Maps.newHashMap();
  
          for (final ConfigurationField field : fields.values()) {
              final String name = field.getName();
              final String type = field.getFieldType();
              switch (type) {
                  case BooleanField.FIELD_TYPE:
                      if (config.booleanIsSet(name)) {
                          values.put(name, config.getBoolean(name));
                      }
                      break;
                  case NumberField.FIELD_TYPE:
                      if (config.intIsSet(name)) {
                          values.put(name, config.getInt(name));
                      }
                      break;
                  case TextField.FIELD_TYPE:
                  case DropdownField.FIELD_TYPE:
                      if (config.stringIsSet(name)) {
                          values.put(name, config.getString(name));
                      }
                      break;
                  default:
                      throw new IllegalStateException("Unknown field type " + type + " for configuration field \"" + name + "\". This is a bug.");
              }
          }
          return new Configuration(values);
      }