TAP5-2773: avoiding an infinite recursion loop
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/pageload/PageClassLoaderContextManagerImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/pageload/PageClassLoaderContextManagerImpl.java
index 1fbf978..f2a20ea 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/pageload/PageClassLoaderContextManagerImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/pageload/PageClassLoaderContextManagerImpl.java
@@ -248,8 +248,7 @@
                     for (String dependency : dependencies)
                     {
                         // Avoid infinite recursion loops
-                        if (!alreadyProcessed.contains(dependency)/* && 
-                                !circularDependencies.contains(dependency)*/)
+                        if (!alreadyProcessed.contains(dependency))
                         {
                             processUsingDependencies(dependency, root, unknownContextProvider, 
                                     plasticProxyFactoryProvider, classesToInvalidate, alreadyProcessed, false);
@@ -261,15 +260,19 @@
                     for (String dependency : dependencies) 
                     {
                         PageClassLoaderContext dependencyContext = root.findByClassName(dependency);
-                        if (dependencyContext == null)
+                        // Avoid infinite recursion loops
+                        if (!alreadyProcessed.contains(dependency))
                         {
-                            dependencyContext = processUsingDependencies(dependency, root, unknownContextProvider,
-                                    plasticProxyFactoryProvider, classesToInvalidate, alreadyProcessed);
-
-                        }
-                        if (!dependencyContext.isRoot())
-                        {
-                            contextDependencies.add(dependencyContext);
+                            if (dependencyContext == null)
+                            {
+                                dependencyContext = processUsingDependencies(dependency, root, unknownContextProvider,
+                                        plasticProxyFactoryProvider, classesToInvalidate, alreadyProcessed);
+    
+                            }
+                            if (!dependencyContext.isRoot())
+                            {
+                                contextDependencies.add(dependencyContext);
+                            }
                         }
                     }