diff --git a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/NavigationTree.java b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/NavigationTree.java
index df218d1..7eb7c20 100644
--- a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/NavigationTree.java
+++ b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/NavigationTree.java
@@ -71,10 +71,9 @@
 
     final List<NavigationNode> nodes = new ArrayList<>();
 
-    final List<String> listWar = locateResourcesInWar(servletContext, "/content", new ArrayList<>());
+    final List<String> listWar = locateResourcesInWar("/content", new ArrayList<>());
     addToResult(listWar, nodes);
 
-
     final List<String> listClasspath = getResourcesFromClasspath();
     addToResult(listClasspath, nodes);
 
@@ -106,8 +105,7 @@
     }
   }
 
-  protected List<String> locateResourcesInWar(
-      final ServletContext servletContext, final String directory, final List<String> result) {
+  protected List<String> locateResourcesInWar(final String directory, final List<String> result) {
 
     final Set<String> resourcePaths = servletContext.getResourcePaths(directory);
 
@@ -118,7 +116,7 @@
 
         if (path.endsWith("/")  // is directory
             || path.lastIndexOf('.') < path.lastIndexOf('/')) { // quarkus has no '/' at the end of a dir.
-          locateResourcesInWar(servletContext, path.substring(path.indexOf("/content")), result);
+          locateResourcesInWar(path.substring(path.indexOf("/content")), result);
           continue;
         }
 
