public CheckedTreeNode append(CheckedTreeNode node) {
      final TreeDescriptor descriptor = getDescriptor(node);
      if (!(descriptor instanceof BreakpointDescriptor)) {
        return node;
      }

      final Breakpoint breakpoint = ((BreakpointDescriptor) descriptor).getBreakpoint();
      final String packageName;
      if (breakpoint instanceof ExceptionBreakpoint) {
        packageName = breakpoint.getPackageName();
      } else if (breakpoint instanceof BreakpointWithHighlighter) {
        packageName = breakpoint.getPackageName();
      } else {
        packageName = null;
      }
      if (packageName == null) {
        return node;
      }
      return attachNodeToParent(new PackageDescriptor(packageName), node);
    }
    public CheckedTreeNode append(CheckedTreeNode node) {
      if (!myGroupByClasses) {
        return node;
      }
      final TreeDescriptor descriptor = getDescriptor(node);
      if (!(descriptor instanceof BreakpointDescriptor)) {
        return node;
      }

      final Breakpoint breakpoint = ((BreakpointDescriptor) descriptor).getBreakpoint();
      final String className = breakpoint.getShortClassName();
      if (className == null) {
        return node;
      }
      final String packageName = breakpoint.getPackageName();
      if (packageName == null) {
        return node;
      }
      return attachNodeToParent(new ClassDescriptor(className, packageName), node);
    }