Index: tools/src/main/java/org/apache/pdfbox/tools/PDFDebugger.java
===================================================================
--- tools/src/main/java/org/apache/pdfbox/tools/PDFDebugger.java	(revision 1686675)
+++ tools/src/main/java/org/apache/pdfbox/tools/PDFDebugger.java	(working copy)
@@ -34,9 +34,12 @@
 import javax.swing.JScrollPane;
 import javax.swing.UIManager;
 import javax.swing.border.BevelBorder;
+import javax.swing.event.TreeExpansionEvent;
 import javax.swing.event.TreeSelectionEvent;
 import javax.swing.event.TreeSelectionListener;
+import javax.swing.event.TreeWillExpandListener;
 import javax.swing.filechooser.FileFilter;
+import javax.swing.tree.ExpandVetoException;
 import javax.swing.tree.TreeModel;
 import javax.swing.tree.TreePath;
 import org.apache.pdfbox.cos.COSArray;
@@ -166,7 +169,26 @@
                 jTree1ValueChanged(evt);
             }
         });
+        tree.addTreeWillExpandListener(new TreeWillExpandListener()
+        {
+            @Override
+            public void treeWillExpand(TreeExpansionEvent treeExpansionEvent) throws ExpandVetoException
+            {
+                Object node = treeExpansionEvent.getPath().getLastPathComponent();
+                if (isParentNode(node))
+                {
+                    //redirectToParent(treeExpansionEvent.getPath());
+                    throw new ExpandVetoException(treeExpansionEvent);
+                }
+            }
 
+            @Override
+            public void treeWillCollapse(TreeExpansionEvent treeExpansionEvent) throws ExpandVetoException
+            {
+
+            }
+        });
+
         jScrollPane1.setViewportView(tree);
 
         jSplitPane1.setRightComponent(jScrollPane2);
@@ -295,6 +317,10 @@
                     showPage(selectedNode);
                     return;
                 }
+                if (isParentNode(selectedNode))
+                {
+                    redirectToParent(path);
+                }
                 if (!jSplitPane1.getRightComponent().equals(jScrollPane2))
                 {
                     jSplitPane1.setRightComponent(jScrollPane2);
@@ -316,6 +342,37 @@
         }
     }//GEN-LAST:event_jTree1ValueChanged
 
+    /**
+     * If the node is a parent keyed node then it'll be redirected to it's parent node.
+     * @param path TreePath
+     */
+    private void redirectToParent(TreePath path)
+    {
+        Object selectednode = path.getLastPathComponent();
+        selectednode = getUnderneathObject(selectednode);
+        path = path.getParentPath();
+        while (path != null)
+        {
+            Object node = path.getLastPathComponent();
+            if (selectednode.equals(getUnderneathObject(node)))
+            {
+                tree.setSelectionPath(path);
+                tree.scrollPathToVisible(path);
+                return;
+            }
+            path = path.getParentPath();
+        }
+    }
+
+    private boolean isParentNode(Object selectedNode)
+    {
+        if (selectedNode instanceof MapEntry && ((MapEntry)selectedNode).getKey().equals(COSName.PARENT))
+        {
+            return true;
+        }
+        return false;
+    }
+
     private boolean isSpecialColorSpace(Object selectedNode)
     {
         selectedNode = getUnderneathObject(selectedNode);
