docs: @SuppressWarnings("unchecked")
      private void bindAnnotatedFilters() {
  
          String appsPackages = null;
          if (System.getProperties().containsKey(IO_JOYNR_APPS_PACKAGES)) {
              logger.info("Using property {} from system properties", IO_JOYNR_APPS_PACKAGES);
              appsPackages = System.getProperty(IO_JOYNR_APPS_PACKAGES);
          } else {
              Properties servletProperties = PropertyLoader.loadProperties("servlet.properties");
              if (servletProperties.containsKey(IO_JOYNR_APPS_PACKAGES)) {
                  appsPackages = servletProperties.getProperty(IO_JOYNR_APPS_PACKAGES);
              }
          }
  
          if (appsPackages != null) {
              String[] packageNames = appsPackages.split(";");
              logger.info("Searching packages for @WebFilter annotation: {}", Arrays.toString(packageNames));
  
              PackageNamesScanner scanner = new PackageNamesScanner(packageNames);
              AnnotationScannerListener sl = new AnnotationScannerListener(WebFilter.class);
              scanner.scan(sl);
  
              for (Class<?> webFilterAnnotatedClass : sl.getAnnotatedClasses()) {
  
                  if (Filter.class.isAssignableFrom(webFilterAnnotatedClass)) {
                      bind(webFilterAnnotatedClass).in(Singleton.class);
                      filter("/*").through((Class<? extends Filter>) webFilterAnnotatedClass);
                      logger.info("Adding filter {} for '/*'", webFilterAnnotatedClass.getName());
                  }
  
              }
          }
      }