The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Build.PL 037
Changelog.ini 0122
Changes 2638
MANIFEST 48
META.json 0124
META.yml 083
Makefile.PL 1025
lib/Tree/Simple/Visitor/BreadthFirstTraversal.pm 1918
lib/Tree/Simple/Visitor/CreateDirectoryTree.pm 2120
lib/Tree/Simple/Visitor/FindByNodeValue.pm 3130
lib/Tree/Simple/Visitor/FindByPath.pm 3938
lib/Tree/Simple/Visitor/FindByUID.pm 3130
lib/Tree/Simple/Visitor/FromNestedArray.pm 3534
lib/Tree/Simple/Visitor/FromNestedHash.pm 2019
lib/Tree/Simple/Visitor/GetAllDescendents.pm 1615
lib/Tree/Simple/Visitor/LoadClassHierarchy.pm 2019
lib/Tree/Simple/Visitor/LoadDirectoryTree.pm 3231
lib/Tree/Simple/Visitor/PathToRoot.pm 2120
lib/Tree/Simple/Visitor/PostOrderTraversal.pm 1918
lib/Tree/Simple/Visitor/PreOrderTraversal.pm 1413
lib/Tree/Simple/Visitor/Sort.pm 3332
lib/Tree/Simple/Visitor/ToNestedArray.pm 2019
lib/Tree/Simple/Visitor/ToNestedHash.pm 1615
lib/Tree/Simple/Visitor/VariableDepthClone.pm 2221
lib/Tree/Simple/VisitorFactory.pm 2425
25 files changed (This is a version diff) 473854
@@ -0,0 +1,37 @@
+use strict;
+use warnings;
+
+use Module::Build;
+
+Module::Build -> new
+(
+	module_name    => 'Tree::Simple::VisitorFactory',
+	license        => 'perl',
+	dist_abstract  => 'A factory object for dispensing Visitor objects',
+	dist_author    => 'Stevan Little <stevan@cpan.org>',
+	build_requires =>
+	{
+		'Test::Exception' => 0.15,
+		'Test::More'      => 0.47,
+#		'Test::Pod'       => 1.45, # Make it optional. See t/pod.t.
+	},
+	configure_requires =>
+	{
+		'Module::Build' => 0.3800,
+	},
+	requires =>
+	{
+		'base'                  => 2.16,
+		'File::Spec'            => 0.60,
+		'Scalar::Util'          => 1.10,
+		'Tree::Simple'          => 1.12,
+		'Tree::Simple::Visitor' => 1.22,
+		'strict'                => 0,
+		'warnings'              => 0,
+	},
+	meta_merge => {
+		resources => {
+			repository => 'https://github.com/stevan/tree-simple-visitorfactory',
+		},
+	},
+) -> create_build_script();
@@ -0,0 +1,122 @@
+[Module]
+Name=Tree::Simple::VisitorFactory:
+Changelog.Creator=Module::Metadata::Changes V 2.05
+Changelog.Parser=Config::IniFiles V 2.78
+
+[V 0.12]
+Date=2013-11-01T09:23:00
+Comments= <<EOT
+- Update pre-reqs.
+- Many, many doc typo fixes via github from dsteinbrunner.
+- Add repos to Build.PL and Makefile.PL.
+EOT
+
+[V 0.11]
+Date=2013-09-23T11:07:00
+Comments= <<EOT
+- Maintenance now by Ron Savage.
+- Rectify datestamp format in this file.
+- Add Changelog.ini.
+- Add Build.PL.
+- Clean up Makefile.PL.
+- RT#40504: Add META.*.
+EOT
+
+[V 0.10]
+Date=2005-11-25T12:00:00
+Comments= <<EOT
+- removing OS X resource fork files which are causeing
+the pod test to fail
+EOT
+
+[V 0.09]
+Date=2005-11-07T12:00:00
+Comments=- fixing an error in the Tree::Simple::Visitor::LoadDirectoryTree test
+
+[V 0.08]
+Date=2005-07-18T12:00:00
+Comments= <<EOT
+- small bug fix in Tree::Simple::Visitor::VariableDepthClone visitor
+- small bug fix with Tree::Simple::Visitor::FindByPath visitor
+EOT
+
+[V 0.07]
+Date=2005-07-18T12:00:00
+Comments= <<EOT
+- forgot to implement the node filter in the
+Tree::Simple::Visitor::VariableDepthClone visitor
+- added this code and tested it
+EOT
+
+[V 0.06]
+Date=2005-07-13T12:00:00
+Comments= <<EOT
+- added Tree::Simple::Visitor::VariableDepthClone
+- added tests and docs for this
+- bumped up the Tree::Simple version requirement to
+support this new Visitor
+EOT
+
+[V 0.05]
+Date=2004-11-18T12:00:00
+Comments= <<EOT
+- now using Scalar::Util::blessed() instead of
+the convoluted UNIVERSAL::isa() stuff.
+- added Scalar::Util as a dependency
+EOT
+
+[V 0.04]
+Date=2004-10-27T12:00:00
+Comments= <<EOT
+- fixed broken test (70_Tree_Simple_Visitor_LoadDirectoryTree_test.t)
+it made assumptions about directory ordering across OSes which was
+not correct.
+- added Tree::Simple::Visitor::FindByNodeValue
+- added tests for this
+- added docs for this
+EOT
+
+[V 0.03]
+Date=2004-10-12T12:00:00
+Comments= <<EOT
+- fixed documentation in Tree::Simple::Visitor::Sort
+- added Tree::Simple::Visitor::LoadClassHierarchy
+- added tests for this
+- added docs for this
+- changed behavior in Tree::Simple::FromNestedHash
+so that it sorts the hash keys before they are put
+into the tree
+EOT
+
+[V 0.02]
+Date=2004-09-29T12:00:00
+Comments= <<EOT
+- changed all Visitors to use 'base' for
+inheritance, it just cuts down on the
+line noise.
+- improved the documentation in
+Tree::Simple::VisitorFactory to include
+a categorized list of available visitors
+- added Tree::Simple::Visitor::LoadDirectoryTree Visitor
+- added tests for this
+- added Tree::Simple::Visitor::CreateDirectoryTree Visitor
+- added tests for this
+- added Tree::Simple::Visitor::FindByUID Visitor
+- added tests for this
+- thanks to Vitor Mori for the idea for this Visitor
+- added Tree::Simple::Visitor::PreOrderTraversal Visitor
+- added tests for this
+- added Tree::Simple::Visitor::Sort Visitor
+- added tests for this
+- thanks to Vitor Mori for most of the code and
+the idea for this Visitor
+- added Tree::Simple::FromNestedArray, Tree::Simple::FromNestedHash
+and their compliments Tree::Simple::ToNestedArray and
+Tree::Simple::ToNestedHash
+- added tests for these
+- added the pod.t and pod_coverage.t tests
+EOT
+
+[V 0.01]
+Date=2004-06-23T09:24:07
+Comments=- module created
@@ -1,41 +1,54 @@
-Revision history for Perl extension Tree-Simple-VisitorFactory.
+Revision history for Perl extension Tree::Simple::VisitorFactory:
 
-0.10 Fri Nov. 25, 2005
-    - removing OS X resource fork files which are causeing 
+0.12  Fri Nov  1 09:23:00 2013
+	- Update pre-reqs.
+	- Many, many doc typo fixes via github from dsteinbrunner.
+	- Add repos to Build.PL and Makefile.PL.
+
+0.11  Mon Sep 23 11:07:00 2013
+	- Maintenance now by Ron Savage.
+	- Rectify datestamp format in this file.
+	- Add Changelog.ini.
+	- Add Build.PL.
+	- Clean up Makefile.PL.
+	- RT#40504: Add META.*.
+
+0.10  Fri Nov 25 12:00:00 2005
+    - removing OS X resource fork files which are causeing
       the pod test to fail
 
-0.09 Mon November 7, 2005
+0.09  Mon Nov  7 12:00:00 2005
     - fixing an error in the Tree::Simple::Visitor::LoadDirectoryTree test
 
-0.08 Mon July 18, 2005
+0.08  Mon Jul 18 12:00:00 2005
     - small bug fix in Tree::Simple::Visitor::VariableDepthClone visitor
     - small bug fix with Tree::Simple::Visitor::FindByPath visitor
 
-0.07 Mon July 18, 2005
-    - forgot to implement the node filter in the 
+0.07  Mon Jul 18 12:00:00 2005
+    - forgot to implement the node filter in the
       Tree::Simple::Visitor::VariableDepthClone visitor
         - added this code and tested it
 
-0.06 Wed July 13, 2005
+0.06  Wed Jul 13 12:00:00 2005
     - added Tree::Simple::Visitor::VariableDepthClone
         - added tests and docs for this
-        - bumped up the Tree::Simple version requirement to 
+        - bumped up the Tree::Simple version requirement to
           support this new Visitor
 
-0.05 Thurs Nov 18 2004
-    - now using Scalar::Util::blessed() instead of 
-      the convoluted UNIVERSAL::isa() stuff. 
+0.05  Thu Nov 18 12:00:00 2004
+    - now using Scalar::Util::blessed() instead of
+      the convoluted UNIVERSAL::isa() stuff.
       - added Scalar::Util as a dependency
 
-0.04 Wed Oct 27 2004
+0.04  Wed Oct 27 12:00:00 2004
     - fixed broken test (70_Tree_Simple_Visitor_LoadDirectoryTree_test.t)
-      it made assumptions about directory ordering across OSes which was 
+      it made assumptions about directory ordering across OSes which was
       not correct.
     - added Tree::Simple::Visitor::FindByNodeValue
         - added tests for this
         - added docs for this
 
-0.03 Tues Oct 12 2004
+0.03  Tue Oct 12 12:00:00 2004
 	- fixed documentation in Tree::Simple::Visitor::Sort
     - added Tree::Simple::Visitor::LoadClassHierarchy
         - added tests for this
@@ -44,11 +57,11 @@ Revision history for Perl extension Tree-Simple-VisitorFactory.
       so that it sorts the hash keys before they are put
       into the tree
 
-0.02 Wed Sept 29 2004
+0.02  Wed Sep 29 12:00:00 2004
     - changed all Visitors to use 'base' for
-      inheritance, it just cuts down on the 
+      inheritance, it just cuts down on the
       line noise.
-    - improved the documentation in 
+    - improved the documentation in
       Tree::Simple::VisitorFactory to include
       a categorized list of available visitors
     - added Tree::Simple::Visitor::LoadDirectoryTree Visitor
@@ -56,20 +69,19 @@ Revision history for Perl extension Tree-Simple-VisitorFactory.
     - added Tree::Simple::Visitor::CreateDirectoryTree Visitor
         - added tests for this
     - added Tree::Simple::Visitor::FindByUID Visitor
-        - added tests for this 
-        - thanks to Vitor Mori for the idea for this Visitor       
+        - added tests for this
+        - thanks to Vitor Mori for the idea for this Visitor
     - added Tree::Simple::Visitor::PreOrderTraversal Visitor
-        - added tests for this   
+        - added tests for this
     - added Tree::Simple::Visitor::Sort Visitor
-        - added tests for this 
-        - thanks to Vitor Mori for most of the code and 
-          the idea for this Visitor     
+        - added tests for this
+        - thanks to Vitor Mori for most of the code and
+          the idea for this Visitor
     - added Tree::Simple::FromNestedArray, Tree::Simple::FromNestedHash
       and their compliments Tree::Simple::ToNestedArray and
       Tree::Simple::ToNestedHash
         - added tests for these
     - added the pod.t and pod_coverage.t tests
 
-0.01 Wed Jun 23 09:24:07 2004
+0.01  Wed Jun 23 09:24:07 2004
     - module created
-
@@ -1,8 +1,6 @@
+Build.PL
+Changelog.ini
 Changes
-Makefile.PL
-MANIFEST
-README
-lib/Tree/Simple/VisitorFactory.pm
 lib/Tree/Simple/Visitor/BreadthFirstTraversal.pm
 lib/Tree/Simple/Visitor/CreateDirectoryTree.pm
 lib/Tree/Simple/Visitor/FindByNodeValue.pm
@@ -20,6 +18,12 @@ lib/Tree/Simple/Visitor/Sort.pm
 lib/Tree/Simple/Visitor/ToNestedArray.pm
 lib/Tree/Simple/Visitor/ToNestedHash.pm
 lib/Tree/Simple/Visitor/VariableDepthClone.pm
+lib/Tree/Simple/VisitorFactory.pm
+Makefile.PL
+MANIFEST
+META.json
+META.yml
+README
 t/10_Tree_Simple_VisitorFactory_test.t
 t/20_Tree_Simple_Visitor_PathToRoot_test.t
 t/30_Tree_Simple_Visitor_FindByPath_test.t
@@ -0,0 +1,124 @@
+{
+   "abstract" : "A factory object for dispensing Visitor objects",
+   "author" : [
+      "Stevan Little <stevan@cpan.org>"
+   ],
+   "dynamic_config" : 1,
+   "generated_by" : "Module::Build version 0.4005, CPAN::Meta::Converter version 2.131560",
+   "license" : [
+      "perl_5"
+   ],
+   "meta-spec" : {
+      "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
+      "version" : "2"
+   },
+   "name" : "Tree-Simple-VisitorFactory",
+   "prereqs" : {
+      "build" : {
+         "requires" : {
+            "Test::Exception" : "0.15",
+            "Test::More" : "0.47"
+         }
+      },
+      "configure" : {
+         "requires" : {
+            "Module::Build" : "0.38"
+         }
+      },
+      "runtime" : {
+         "requires" : {
+            "File::Spec" : "0.6",
+            "Scalar::Util" : "1.1",
+            "Tree::Simple" : "1.12",
+            "Tree::Simple::Visitor" : "1.22",
+            "base" : "2.16",
+            "strict" : "0",
+            "warnings" : "0"
+         }
+      }
+   },
+   "provides" : {
+      "Tree::Simple::Visitor::BreadthFirstTraversal" : {
+         "file" : "lib/Tree/Simple/Visitor/BreadthFirstTraversal.pm",
+         "version" : "0.12"
+      },
+      "Tree::Simple::Visitor::CreateDirectoryTree" : {
+         "file" : "lib/Tree/Simple/Visitor/CreateDirectoryTree.pm",
+         "version" : "0.12"
+      },
+      "Tree::Simple::Visitor::FindByNodeValue" : {
+         "file" : "lib/Tree/Simple/Visitor/FindByNodeValue.pm",
+         "version" : "0.12"
+      },
+      "Tree::Simple::Visitor::FindByPath" : {
+         "file" : "lib/Tree/Simple/Visitor/FindByPath.pm",
+         "version" : "0.12"
+      },
+      "Tree::Simple::Visitor::FindByUID" : {
+         "file" : "lib/Tree/Simple/Visitor/FindByUID.pm",
+         "version" : "0.12"
+      },
+      "Tree::Simple::Visitor::FromNestedArray" : {
+         "file" : "lib/Tree/Simple/Visitor/FromNestedArray.pm",
+         "version" : "0.12"
+      },
+      "Tree::Simple::Visitor::FromNestedHash" : {
+         "file" : "lib/Tree/Simple/Visitor/FromNestedHash.pm",
+         "version" : "0.12"
+      },
+      "Tree::Simple::Visitor::GetAllDescendents" : {
+         "file" : "lib/Tree/Simple/Visitor/GetAllDescendents.pm",
+         "version" : "0.12"
+      },
+      "Tree::Simple::Visitor::LoadClassHierarchy" : {
+         "file" : "lib/Tree/Simple/Visitor/LoadClassHierarchy.pm",
+         "version" : "0.12"
+      },
+      "Tree::Simple::Visitor::LoadDirectoryTree" : {
+         "file" : "lib/Tree/Simple/Visitor/LoadDirectoryTree.pm",
+         "version" : "0.12"
+      },
+      "Tree::Simple::Visitor::PathToRoot" : {
+         "file" : "lib/Tree/Simple/Visitor/PathToRoot.pm",
+         "version" : "0.12"
+      },
+      "Tree::Simple::Visitor::PostOrderTraversal" : {
+         "file" : "lib/Tree/Simple/Visitor/PostOrderTraversal.pm",
+         "version" : "0.12"
+      },
+      "Tree::Simple::Visitor::PreOrderTraversal" : {
+         "file" : "lib/Tree/Simple/Visitor/PreOrderTraversal.pm",
+         "version" : "0.12"
+      },
+      "Tree::Simple::Visitor::Sort" : {
+         "file" : "lib/Tree/Simple/Visitor/Sort.pm",
+         "version" : "0.12"
+      },
+      "Tree::Simple::Visitor::ToNestedArray" : {
+         "file" : "lib/Tree/Simple/Visitor/ToNestedArray.pm",
+         "version" : "0.12"
+      },
+      "Tree::Simple::Visitor::ToNestedHash" : {
+         "file" : "lib/Tree/Simple/Visitor/ToNestedHash.pm",
+         "version" : "0.12"
+      },
+      "Tree::Simple::Visitor::VariableDepthClone" : {
+         "file" : "lib/Tree/Simple/Visitor/VariableDepthClone.pm",
+         "version" : "0.12"
+      },
+      "Tree::Simple::VisitorFactory" : {
+         "file" : "lib/Tree/Simple/VisitorFactory.pm",
+         "version" : "0.12"
+      }
+   },
+   "release_status" : "stable",
+   "resources" : {
+      "license" : [
+         "http://dev.perl.org/licenses/"
+      ],
+      "repository" : {
+         "url" : "https://github.com/stevan/tree-simple-visitorfactory"
+      }
+   },
+   "version" : "0.12"
+}
@@ -0,0 +1,83 @@
+---
+abstract: 'A factory object for dispensing Visitor objects'
+author:
+  - 'Stevan Little <stevan@cpan.org>'
+build_requires:
+  Test::Exception: 0.15
+  Test::More: 0.47
+configure_requires:
+  Module::Build: 0.38
+dynamic_config: 1
+generated_by: 'Module::Build version 0.4005, CPAN::Meta::Converter version 2.131560'
+license: perl
+meta-spec:
+  url: http://module-build.sourceforge.net/META-spec-v1.4.html
+  version: 1.4
+name: Tree-Simple-VisitorFactory
+provides:
+  Tree::Simple::Visitor::BreadthFirstTraversal:
+    file: lib/Tree/Simple/Visitor/BreadthFirstTraversal.pm
+    version: 0.12
+  Tree::Simple::Visitor::CreateDirectoryTree:
+    file: lib/Tree/Simple/Visitor/CreateDirectoryTree.pm
+    version: 0.12
+  Tree::Simple::Visitor::FindByNodeValue:
+    file: lib/Tree/Simple/Visitor/FindByNodeValue.pm
+    version: 0.12
+  Tree::Simple::Visitor::FindByPath:
+    file: lib/Tree/Simple/Visitor/FindByPath.pm
+    version: 0.12
+  Tree::Simple::Visitor::FindByUID:
+    file: lib/Tree/Simple/Visitor/FindByUID.pm
+    version: 0.12
+  Tree::Simple::Visitor::FromNestedArray:
+    file: lib/Tree/Simple/Visitor/FromNestedArray.pm
+    version: 0.12
+  Tree::Simple::Visitor::FromNestedHash:
+    file: lib/Tree/Simple/Visitor/FromNestedHash.pm
+    version: 0.12
+  Tree::Simple::Visitor::GetAllDescendents:
+    file: lib/Tree/Simple/Visitor/GetAllDescendents.pm
+    version: 0.12
+  Tree::Simple::Visitor::LoadClassHierarchy:
+    file: lib/Tree/Simple/Visitor/LoadClassHierarchy.pm
+    version: 0.12
+  Tree::Simple::Visitor::LoadDirectoryTree:
+    file: lib/Tree/Simple/Visitor/LoadDirectoryTree.pm
+    version: 0.12
+  Tree::Simple::Visitor::PathToRoot:
+    file: lib/Tree/Simple/Visitor/PathToRoot.pm
+    version: 0.12
+  Tree::Simple::Visitor::PostOrderTraversal:
+    file: lib/Tree/Simple/Visitor/PostOrderTraversal.pm
+    version: 0.12
+  Tree::Simple::Visitor::PreOrderTraversal:
+    file: lib/Tree/Simple/Visitor/PreOrderTraversal.pm
+    version: 0.12
+  Tree::Simple::Visitor::Sort:
+    file: lib/Tree/Simple/Visitor/Sort.pm
+    version: 0.12
+  Tree::Simple::Visitor::ToNestedArray:
+    file: lib/Tree/Simple/Visitor/ToNestedArray.pm
+    version: 0.12
+  Tree::Simple::Visitor::ToNestedHash:
+    file: lib/Tree/Simple/Visitor/ToNestedHash.pm
+    version: 0.12
+  Tree::Simple::Visitor::VariableDepthClone:
+    file: lib/Tree/Simple/Visitor/VariableDepthClone.pm
+    version: 0.12
+  Tree::Simple::VisitorFactory:
+    file: lib/Tree/Simple/VisitorFactory.pm
+    version: 0.12
+requires:
+  File::Spec: 0.6
+  Scalar::Util: 1.1
+  Tree::Simple: 1.12
+  Tree::Simple::Visitor: 1.22
+  base: 2.16
+  strict: 0
+  warnings: 0
+resources:
+  license: http://dev.perl.org/licenses/
+  repository: https://github.com/stevan/tree-simple-visitorfactory
+version: 0.12
@@ -1,12 +1,27 @@
+use strict;
+use warnings;
+
 use ExtUtils::MakeMaker;
-WriteMakefile(
-    NAME         => 'Tree::Simple::VisitorFactory',
-    VERSION_FROM => 'lib/Tree/Simple/VisitorFactory.pm', 
-    PREREQ_PM    => {
-        'Test::More'      => 0.47,
-        'Test::Exception' => 0.15,
-        'Tree::Simple'    => 1.12,
-        'File::Spec'      => 0.60,
-        'Scalar::Util'    => 1.10
-    }
+
+WriteMakefile
+(
+	NAME         => 'Tree::Simple::VisitorFactory',
+	VERSION_FROM => 'lib/Tree/Simple/VisitorFactory.pm',
+	PREREQ_PM    =>
+	{
+		'base'                  => 2.16,
+		'File::Spec'            => 0.60,
+		'Scalar::Util'          => 1.10,
+		'Test::More'            => 0.47,
+		'Test::Exception'       => 0.15,
+		'Tree::Simple'          => 1.12,
+		'Tree::Simple::Visitor' => 1.22,
+		'strict'                => 0,
+		'warnings'              => 0,
+	},
+	META_MERGE  => {
+		resources => {
+			repository => 'https://github.com/stevan/tree-simple-visitorfactory',
+		},
+	},
 );
@@ -1,10 +1,9 @@
-
 package Tree::Simple::Visitor::BreadthFirstTraversal;
 
 use strict;
 use warnings;
 
-our $VERSION = '0.02';
+our $VERSION = '0.12';
 
 use Scalar::Util qw(blessed);
 
@@ -32,17 +31,17 @@ sub visit {
     my @results;
     # get our filter function
     my $filter_function = $self->getNodeFilter();
-    # now create a queue for 
+    # now create a queue for
     # processing depth first
     my @queue;
-    # if we are to include the trunk 
+    # if we are to include the trunk
     if ($self->includeTrunk()) {
         # then enqueue that
         @queue = ($tree);
     }
     # if we are not including the trunk
     else {
-        # then we enqueue all the 
+        # then we enqueue all the
         # trunks children instead
         @queue = ($tree->getAllChildren());
     }
@@ -52,14 +51,14 @@ sub visit {
         my $current_tree = shift @queue;
         # enqueue all the current tree's children
         push @queue => $current_tree->getAllChildren();
-        # now collect the results 
-        push @results => (($filter_function) ? 
+        # now collect the results
+        push @results => (($filter_function) ?
                                     $filter_function->($current_tree)
                                     :
                                     $current_tree->getNodeValue());
-    }        
+    }
     # store our results
-    $self->setResults(@results);    
+    $self->setResults(@results);
 }
 
 1;
@@ -73,18 +72,18 @@ Tree::Simple::Visitor::BreadthFirstTraversal - A Visitor for breadth-first trave
 =head1 SYNOPSIS
 
   use Tree::Simple::Visitor::BreadthFirstTraversal;
-  
+
   # create an visitor
   my $visitor = Tree::Simple::Visitor::BreadthFirstTraversal->new();
-  
+
   # pass our visitor to the tree
   $tree->accept($visitor);
-  
+
   # print our results
   print join ", " => $visitor->getResults();
-  
-  # this will print this: 
-  #   1, 2, 3, 1.1, 1.2, 2.1, 3.1, 1.1.1 
+
+  # this will print this:
+  #   1, 2, 3, 1.1, 1.2, 2.1, 3.1, 1.1.1
   # assuming your tree is like this:
   #   1
   #     1.1
@@ -109,7 +108,7 @@ There are no arguments to the constructor the object will be in its default stat
 
 =item B<includeTrunk ($boolean)>
 
-Based upon the value of C<$boolean>, this will tell the visitor to include the trunk of the tree in the traversal as well. 
+Based upon the value of C<$boolean>, this will tell the visitor to include the trunk of the tree in the traversal as well.
 
 =item B<setNodeFilter ($filter_function)>
 
@@ -127,11 +126,11 @@ This method returns the accumulated results of the application of the node filte
 
 =head1 BUGS
 
-None that I am aware of. Of course, if you find a bug, let me know, and I will be sure to fix it. 
+None that I am aware of. Of course, if you find a bug, let me know, and I will be sure to fix it.
 
 =head1 CODE COVERAGE
 
-See the B<CODE COVERAGE> section in L<Tree::Simple::VisitorFactory> for more inforamtion.
+See the B<CODE COVERAGE> section in L<Tree::Simple::VisitorFactory> for more information.
 
 =head1 SEE ALSO
 
@@ -148,7 +147,7 @@ Copyright 2004, 2005 by Infinity Interactive, Inc.
 L<http://www.iinteractive.com>
 
 This library is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself. 
+it under the same terms as Perl itself.
 
 =cut
 
@@ -1,10 +1,9 @@
-
 package Tree::Simple::Visitor::CreateDirectoryTree;
 
 use strict;
 use warnings;
 
-our $VERSION = '0.02';
+our $VERSION = '0.12';
 
 use File::Spec;
 use Scalar::Util qw(blessed);
@@ -22,22 +21,22 @@ sub new {
 
 sub _init {
     my ($self) = @_;
-    $self->{file_handler} = sub {        
+    $self->{file_handler} = sub {
         my ($filepath) = @_;
         open(FILE, ">", $filepath) || die "IO Error : Cannot create file ($filepath) : $!";
-        close(FILE);    
+        close(FILE);
     };
     $self->{dir_handler} = sub {
         my ($dirpath) = @_;
         mkdir($dirpath) || die "IO Error : Cannot make directory ($dirpath) : $!";
     };
-    $self->SUPER::_init();    
+    $self->SUPER::_init();
 }
 
 sub visit {
 	my ($self, $tree) = @_;
 	(blessed($tree) && $tree->isa("Tree::Simple"))
-		|| die "Insufficient Arguments : You must supply a valid Tree::Simple object"; 
+		|| die "Insufficient Arguments : You must supply a valid Tree::Simple object";
     # pass on to our recursive subroutine
     $self->_createDirectoryStructure($tree);
 }
@@ -53,7 +52,7 @@ sub setDirectoryHandler {
     my ($self, $dir_handler) = @_;
     (defined($dir_handler) && ref($dir_handler) eq 'CODE')
         || die "Insufficient Arguments : directory handler must be a subroutine reference";
-    $self->{dir_handler} = $dir_handler;    
+    $self->{dir_handler} = $dir_handler;
 }
 
 sub _createDirectoryStructure {
@@ -62,13 +61,13 @@ sub _createDirectoryStructure {
     # filter the nodes if need be
     my $filter_function = $self->getNodeFilter();
     $node = $filter_function->($node) if $filter_function;
-    # if its a leaf and it 
+    # if its a leaf and it
     # doesn't end with a /
     # then its a file
     if ($tree->isLeaf() && $node !~ /\/|\\$/) {
         $self->{file_handler}->(File::Spec->catfile(@path, $node));
-    }	    
-    # otherwise we are going 
+    }
+    # otherwise we are going
     # to treat it as a directory
     else {
         $node =~ s/\/|\\$//;
@@ -90,7 +89,7 @@ Tree::Simple::Visitor::CreateDirectoryTree - A Visitor for create a set of direc
 =head1 SYNOPSIS
 
   use Tree::Simple::Visitor::CreateDirectoryTree;
-  
+
   # create a Tree::Simple object which
   # represents a directory heirarchy
   my $tree = Tree::Simple->new("www/")
@@ -99,23 +98,23 @@ Tree::Simple::Visitor::CreateDirectoryTree - A Visitor for create a set of direc
                             ->addChildren(
                                 Tree::Simple->new("startup.pl"),
                                 Tree::Simple->new("httpd.conf")
-                            ),                            
+                            ),
                         Tree::Simple->new("cgi-bin/"),
                         Tree::Simple->new("ht_docs/"),
                         Tree::Simple->new("logs/")
                             ->addChildren(
                                 Tree::Simple->new("error.log"),
                                 Tree::Simple->new("access.log")
-                            ),                            
+                            ),
                     );
 
   # create an instance of our visitor
   my $visitor = Tree::Simple::Visitor::CreateDirectoryTree->new();
-  
+
   # pass the visitor to a Tree::Simple object
   $tree->accept($visitor);
-  
-  # the www/ directory now mirrors the structure of the tree 
+
+  # the www/ directory now mirrors the structure of the tree
 
 =head1 DESCRIPTION
 
@@ -131,7 +130,7 @@ There are no arguments to the constructor the object will be in its default stat
 
 =item B<setNodeFilter ($filter_function)>
 
-This method accepts a CODE reference as its C<$filter_function> argument and throws an exception if it is not a code reference. This code reference is used to filter the tree nodes as they are used to create the directory tree, it can be basically used as a node pre-processor. An example usage of this might be to enforce the C<8.3> naming rules of DOS, or the 32 character limit of older macintoshes.   
+This method accepts a CODE reference as its C<$filter_function> argument and throws an exception if it is not a code reference. This code reference is used to filter the tree nodes as they are used to create the directory tree, it can be basically used as a node pre-processor. An example usage of this might be to enforce the C<8.3> naming rules of DOS, or the 32 character limit of older macintoshes.
 
 =item B<setFileHandler ($file_handler)>
 
@@ -155,7 +154,7 @@ Obviously since files themselves are leaf nodes, this makes sense that non-leave
 
 =item Any node (including leaf nodes) which ends in either the character C</> or C<\> is considered a directory.
 
-I think it is a pretty standard convention to have directory names ending in a seperator. The seperator itself is stripped off before the directory name is passed to File::Spec where the platform specific directory path is created. This means that it does not matter which one you use, it will be completely cross platform (at least as cross-platform as File::Spec is).
+I think it is a pretty standard convention to have directory names ending in a separator. The separator itself is stripped off before the directory name is passed to File::Spec where the platform specific directory path is created. This means that it does not matter which one you use, it will be completely cross platform (at least as cross-platform as File::Spec is).
 
 =item All other nodes are considered to be files.
 
@@ -165,11 +164,11 @@ I think it is a pretty standard convention to have directory names ending in a s
 
 =head1 BUGS
 
-None that I am aware of. Of course, if you find a bug, let me know, and I will be sure to fix it. 
+None that I am aware of. Of course, if you find a bug, let me know, and I will be sure to fix it.
 
 =head1 CODE COVERAGE
 
-See the B<CODE COVERAGE> section in L<Tree::Simple::VisitorFactory> for more inforamtion.
+See the B<CODE COVERAGE> section in L<Tree::Simple::VisitorFactory> for more information.
 
 =head1 SEE ALSO
 
@@ -186,7 +185,7 @@ Copyright 2004, 2005 by Infinity Interactive, Inc.
 L<http://www.iinteractive.com>
 
 This library is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself. 
+it under the same terms as Perl itself.
 
 =cut
 
@@ -1,10 +1,9 @@
-
 package Tree::Simple::Visitor::FindByNodeValue;
 
 use strict;
 use warnings;
 
-our $VERSION = '0.02';
+our $VERSION = '0.12';
 
 use Scalar::Util qw(blessed);
 
@@ -21,7 +20,7 @@ sub new {
 
 sub _init {
     my ($self) = @_;
-    $self->{success} = 0;    
+    $self->{success} = 0;
     $self->{node_value_to_find} = undef;
     $self->SUPER::_init();
 }
@@ -48,48 +47,48 @@ sub visit {
     $self->{success} = 0;
 
     my $node_value = $self->{node_value_to_find};
-    (defined($node_value)) || die "Illegal Operation : You cannot search for a node_value without setting one first";        
+    (defined($node_value)) || die "Illegal Operation : You cannot search for a node_value without setting one first";
     # create our filter function
     # NOTE:
-    # in order to get an immediate exit 
+    # in order to get an immediate exit
     # from the traversal once a match is
     # found, we use 'die'. It is a somewhat
     # unorthodox way of using this, but it
-    # works. The found tree is propogated 
-    # up the call chain and returned from 
+    # works. The found tree is propagated
+    # up the call chain and returned from
     # this function.
 	my $func;
     if ($self->{_filter_function}) {
-        $func = sub { 
+        $func = sub {
             my ($tree, $test) = @_;
             (($tree->getNodeValue() eq $node_value) &&  $self->{_filter_function}->($tree)) && die $tree;
-            };    
+            };
     }
     else {
-        $func = sub { 
+        $func = sub {
             my ($tree, $test) = @_;
             ($tree->getNodeValue() eq $node_value) && die $tree;
-            };  
+            };
     }
 
     # we eval this so we can catch the tree
     # match when it is thrown with 'die'
     eval {
         unless (defined($self->{traversal_method})) {
-            # include the trunk in our 
+            # include the trunk in our
             # search if needed
-            $func->($tree) if $self->includeTrunk();        
+            $func->($tree) if $self->includeTrunk();
             # and traverse
             $tree->traverse($func);
         }
         else {
-            # include the trunk in our 
+            # include the trunk in our
             # search if needed
             $self->{traversal_method}->includeTrunk(1) if $self->includeTrunk();
-            # and visit            
+            # and visit
             $self->{traversal_method}->setNodeFilter($func);
             $self->{traversal_method}->visit($tree);
-        }  
+        }
     };
     # now see what we have ...
     if ($@) {
@@ -108,8 +107,8 @@ sub visit {
         }
     }
     else {
-        # if no exception is thrown though, 
-        # we failed in our search, and so we 
+        # if no exception is thrown though,
+        # we failed in our search, and so we
         # set our success flag to false
         $self->{success} = 0;
     }
@@ -117,7 +116,7 @@ sub visit {
 
 sub getResult {
     my ($self) = @_;
-    # if we did not succeed, then 
+    # if we did not succeed, then
     # we return undef, ...
     return undef unless $self->{success};
     # otherwise we return the results
@@ -135,24 +134,24 @@ Tree::Simple::Visitor::FindByNodeValue - A Visitor for finding an element in a T
 =head1 SYNOPSIS
 
   use Tree::Simple::Visitor::FindByNodeValue;
-  
+
   # create a visitor object
   my $visitor = Tree::Simple::Visitor::FindByNodeValue->new();
-  
-  # set the search path for our tree  
+
+  # set the search path for our tree
   $visitor->searchForNodeValue("My Tree Node");
-  
+
   # pass the visitor to a tree
   $tree->accept($visitor);
-  
-  # fetch the result, which will 
-  # be the Tree::Simple object that 
+
+  # fetch the result, which will
+  # be the Tree::Simple object that
   # we have found, or undefined
   my $result = $visitor->getResult() || die "No Tree found";
 
 =head1 DESCRIPTION
 
-Given a node value and Tree::Simple hierarchy, this Visitor will attempt to find the node with the same node value. 
+Given a node value and Tree::Simple hierarchy, this Visitor will attempt to find the node with the same node value.
 
 =head1 METHODS
 
@@ -164,7 +163,7 @@ There are no arguments to the constructor the object will be in its default stat
 
 =item B<includeTrunk ($boolean)>
 
-Based upon the value of C<$boolean>, this will tell the visitor to include the trunk of the tree in the search as well. 
+Based upon the value of C<$boolean>, this will tell the visitor to include the trunk of the tree in the search as well.
 
 =item B<setTraversalMethod ($visitor)>
 
@@ -190,11 +189,11 @@ This method will return the tree found with the specified node value (set by the
 
 =head1 BUGS
 
-None that I am aware of. Of course, if you find a bug, let me know, and I will be sure to fix it. 
+None that I am aware of. Of course, if you find a bug, let me know, and I will be sure to fix it.
 
 =head1 CODE COVERAGE
 
-See the B<CODE COVERAGE> section in L<Tree::Simple::VisitorFactory> for more inforamtion.
+See the B<CODE COVERAGE> section in L<Tree::Simple::VisitorFactory> for more information.
 
 =head1 SEE ALSO
 
@@ -211,7 +210,7 @@ Copyright 2004, 2005 by Infinity Interactive, Inc.
 L<http://www.iinteractive.com>
 
 This library is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself. 
+it under the same terms as Perl itself.
 
 =cut
 
@@ -1,10 +1,9 @@
-
 package Tree::Simple::Visitor::FindByPath;
 
 use strict;
 use warnings;
 
-our $VERSION = '0.03';
+our $VERSION = '0.12';
 
 use Scalar::Util qw(blessed);
 
@@ -39,50 +38,50 @@ sub visit {
 
     # reset our success flag
     $self->{success} = 0;
-        
+
     # get our filter function
 	my $func;
     if ($self->{_filter_function}) {
-        $func = sub { 
+        $func = sub {
             my ($tree, $test) = @_;
             return (($self->{_filter_function}->($tree) . "") eq $test);
-            };    
+            };
     }
     else {
-        $func = sub { 
+        $func = sub {
             my ($tree, $test) = @_;
             return (($tree->getNodeValue() . "") eq $test);
-            };  
+            };
     }
 
     # get ready with our results
     my @results;
-    
+
     # get our path
-    my @path = @{$self->{search_path}};    
+    my @path = @{$self->{search_path}};
 
     # get our variables ready
     my $current_path;
     my $current_tree = $tree;
-    
-    # check to see if we have been 
+
+    # check to see if we have been
     # asked to include the trunk
     if ($self->includeTrunk()) {
-        # if we dont match the root of the path
+        # if we don't match the root of the path
         # then we have failed already and so return
-        $self->setResults(()) && return 
+        $self->setResults(()) && return
             unless $func->($current_tree, $path[0]);
         # if we do match, then remove it off the path
         shift @path;
     }
-    
+
     TOP: {
         # if we have no more @path we have found it
         unless (@path) {
             # store the current tree as
             # our last result
             $self->setResults(@results, $current_tree);
-            # and set the sucess flag
+            # and set the success flag
             $self->{success} = 1;
             return;
         }
@@ -94,35 +93,35 @@ sub visit {
         foreach my $child ($current_tree->getAllChildren()) {
             if ($func->($child, $current_path)) {
                 # if we find a match, then
-                # we store the current tree 
-                # in our results, and 
+                # we store the current tree
+                # in our results, and
                 push @results => $current_tree;
                 # we change our current tree
                 $current_tree = $child;
-                # and go back to the TOP                
+                # and go back to the TOP
                 goto TOP;
             }
         }
-   
-        # if we do not find a match, then we can fall off 
+
+        # if we do not find a match, then we can fall off
         # this block and the whole subroutine for that matter
         # since we know the match has failed.
-        push @results => $current_tree 
+        push @results => $current_tree
             if (@path || $self->{success} == 0) && $current_tree != $tree;
     }
-    # we do however, store the 
+    # we do however, store the
     # results as far as we got,
-    # so that the user can maybe 
+    # so that the user can maybe
     # do something else to recover
     $self->setResults(@results);
 }
 
 sub getResult {
     my ($self) = @_;
-    # if we did not succeed, then 
+    # if we did not succeed, then
     # we return undef, ...
     return undef unless $self->{success};
-    # otherwise we return the 
+    # otherwise we return the
     # last in the results
     return $self->getResults()->[-1];
 }
@@ -138,28 +137,28 @@ Tree::Simple::Visitor::FindByPath - A Visitor for finding an element in a Tree::
 =head1 SYNOPSIS
 
   use Tree::Simple::Visitor::FindByPath;
-  
+
   # create a visitor object
   my $visitor = Tree::Simple::Visitor::FindByPath->new();
-  
-  # set the search path for our tree  
+
+  # set the search path for our tree
   $visitor->setSearchPath(qw(1 1.2 1.2.2));
-  
+
   # pass the visitor to a tree
   $tree->accept($visitor);
-  
-  # fetch the result, which will 
-  # be the Tree::Simple object that 
+
+  # fetch the result, which will
+  # be the Tree::Simple object that
   # we have found, or undefined
   my $result = $visitor->getResult() || die "No Tree found";
-  
-  # our result's node value should match 
+
+  # our result's node value should match
   # the last element in our path
   print $result->getNodeValue(); # this should print 1.2.2
 
 =head1 DESCRIPTION
 
-Given a path and Tree::Simple hierarchy, this Visitor will attempt to find the node specified by the path. 
+Given a path and Tree::Simple hierarchy, this Visitor will attempt to find the node specified by the path.
 
 =head1 METHODS
 
@@ -171,7 +170,7 @@ There are no arguments to the constructor the object will be in its default stat
 
 =item B<includeTrunk ($boolean)>
 
-Based upon the value of C<$boolean>, this will tell the visitor to include the trunk of the tree in the search as well. 
+Based upon the value of C<$boolean>, this will tell the visitor to include the trunk of the tree in the search as well.
 
 =item B<setSearchPath (@path)>
 
@@ -197,11 +196,11 @@ This method will return the tree's that make up the path specified in C<setSearc
 
 =head1 BUGS
 
-None that I am aware of. Of course, if you find a bug, let me know, and I will be sure to fix it. 
+None that I am aware of. Of course, if you find a bug, let me know, and I will be sure to fix it.
 
 =head1 CODE COVERAGE
 
-See the B<CODE COVERAGE> section in L<Tree::Simple::VisitorFactory> for more inforamtion.
+See the B<CODE COVERAGE> section in L<Tree::Simple::VisitorFactory> for more information.
 
 =head1 SEE ALSO
 
@@ -218,7 +217,7 @@ Copyright 2004, 2005 by Infinity Interactive, Inc.
 L<http://www.iinteractive.com>
 
 This library is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself. 
+it under the same terms as Perl itself.
 
 =cut
 
@@ -1,10 +1,9 @@
-
 package Tree::Simple::Visitor::FindByUID;
 
 use strict;
 use warnings;
 
-our $VERSION = '0.02';
+our $VERSION = '0.12';
 
 use Scalar::Util qw(blessed);
 
@@ -21,7 +20,7 @@ sub new {
 
 sub _init {
     my ($self) = @_;
-    $self->{success} = 0;    
+    $self->{success} = 0;
     $self->{UID_to_find} = undef;
     $self->SUPER::_init();
 }
@@ -48,48 +47,48 @@ sub visit {
     $self->{success} = 0;
 
     my $UID = $self->{UID_to_find};
-    (defined($UID)) || die "Illegal Operation : You cannot search for a UID without setting one first";        
+    (defined($UID)) || die "Illegal Operation : You cannot search for a UID without setting one first";
     # create our filter function
     # NOTE:
-    # in order to get an immediate exit 
+    # in order to get an immediate exit
     # from the traversal once a match is
     # found, we use 'die'. It is a somewhat
     # unorthodox way of using this, but it
-    # works. The found tree is propogated 
-    # up the call chain and returned from 
+    # works. The found tree is propagated
+    # up the call chain and returned from
     # this function.
 	my $func;
     if ($self->{_filter_function}) {
-        $func = sub { 
+        $func = sub {
             my ($tree, $test) = @_;
             (($tree->getUID() eq $UID) &&  $self->{_filter_function}->($tree)) && die $tree;
-            };    
+            };
     }
     else {
-        $func = sub { 
+        $func = sub {
             my ($tree, $test) = @_;
             ($tree->getUID() eq $UID) && die $tree;
-            };  
+            };
     }
 
     # we eval this so we can catch the tree
     # match when it is thrown with 'die'
     eval {
         unless (defined($self->{traversal_method})) {
-            # include the trunk in our 
+            # include the trunk in our
             # search if needed
-            $func->($tree) if $self->includeTrunk();        
+            $func->($tree) if $self->includeTrunk();
             # and traverse
             $tree->traverse($func);
         }
         else {
-            # include the trunk in our 
+            # include the trunk in our
             # search if needed
             $self->{traversal_method}->includeTrunk(1) if $self->includeTrunk();
-            # and visit            
+            # and visit
             $self->{traversal_method}->setNodeFilter($func);
             $self->{traversal_method}->visit($tree);
-        }  
+        }
     };
     # now see what we have ...
     if ($@) {
@@ -108,8 +107,8 @@ sub visit {
         }
     }
     else {
-        # if no exception is thrown though, 
-        # we failed in our search, and so we 
+        # if no exception is thrown though,
+        # we failed in our search, and so we
         # set our success flag to false
         $self->{success} = 0;
     }
@@ -117,7 +116,7 @@ sub visit {
 
 sub getResult {
     my ($self) = @_;
-    # if we did not succeed, then 
+    # if we did not succeed, then
     # we return undef, ...
     return undef unless $self->{success};
     # otherwise we return the results
@@ -135,24 +134,24 @@ Tree::Simple::Visitor::FindByUID - A Visitor for finding an element in a Tree::S
 =head1 SYNOPSIS
 
   use Tree::Simple::Visitor::FindByUID;
-  
+
   # create a visitor object
   my $visitor = Tree::Simple::Visitor::FindByUID->new();
-  
-  # set the search path for our tree  
+
+  # set the search path for our tree
   $visitor->searchForUID("MyTreeUID");
-  
+
   # pass the visitor to a tree
   $tree->accept($visitor);
-  
-  # fetch the result, which will 
-  # be the Tree::Simple object that 
+
+  # fetch the result, which will
+  # be the Tree::Simple object that
   # we have found, or undefined
   my $result = $visitor->getResult() || die "No Tree found";
 
 =head1 DESCRIPTION
 
-Given a UID and Tree::Simple hierarchy, this Visitor will attempt to find the node with the same UID. 
+Given a UID and Tree::Simple hierarchy, this Visitor will attempt to find the node with the same UID.
 
 =head1 METHODS
 
@@ -164,7 +163,7 @@ There are no arguments to the constructor the object will be in its default stat
 
 =item B<includeTrunk ($boolean)>
 
-Based upon the value of C<$boolean>, this will tell the visitor to include the trunk of the tree in the search as well. 
+Based upon the value of C<$boolean>, this will tell the visitor to include the trunk of the tree in the search as well.
 
 =item B<setTraversalMethod ($visitor)>
 
@@ -190,11 +189,11 @@ This method will return the tree found with the specified UID (set by the C<sear
 
 =head1 BUGS
 
-None that I am aware of. Of course, if you find a bug, let me know, and I will be sure to fix it. 
+None that I am aware of. Of course, if you find a bug, let me know, and I will be sure to fix it.
 
 =head1 CODE COVERAGE
 
-See the B<CODE COVERAGE> section in L<Tree::Simple::VisitorFactory> for more inforamtion.
+See the B<CODE COVERAGE> section in L<Tree::Simple::VisitorFactory> for more information.
 
 =head1 SEE ALSO
 
@@ -219,7 +218,7 @@ Copyright 2004, 2005 by Infinity Interactive, Inc.
 L<http://www.iinteractive.com>
 
 This library is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself. 
+it under the same terms as Perl itself.
 
 =cut
 
@@ -1,10 +1,9 @@
-
 package Tree::Simple::Visitor::FromNestedArray;
 
 use strict;
 use warnings;
 
-our $VERSION = '0.02';
+our $VERSION = '0.12';
 
 use Scalar::Util qw(blessed);
 
@@ -28,7 +27,7 @@ sub _init {
 sub setArrayTree {
     my ($self, $array_tree) = @_;
     (defined($array_tree) && ref($array_tree) eq 'ARRAY')
-        || die "Insufficient Arguments : You must supply a valid ARRAY reference"; 
+        || die "Insufficient Arguments : You must supply a valid ARRAY reference";
     # validate the tree ...
     # it must not be empty
     (scalar @{$array_tree} != 0)
@@ -40,22 +39,22 @@ sub setArrayTree {
     (ref($array_tree->[1]) eq 'ARRAY')
         || die "Incorrect Object Type : The second value in the array tree must be an array reference"
             if defined($array_tree->[1]);
-    $self->{array_tree} = $array_tree;    
+    $self->{array_tree} = $array_tree;
 }
 
 sub visit {
 	my ($self, $tree) = @_;
 	(blessed($tree) && $tree->isa("Tree::Simple"))
-		|| die "Insufficient Arguments : You must supply a valid Tree::Simple object"; 
+		|| die "Insufficient Arguments : You must supply a valid Tree::Simple object";
 	$self->_buildTree(
                 $tree,
-                # our array tree 
-                $self->{array_tree}, 
+                # our array tree
+                $self->{array_tree},
                 # get a node filter if we have one
-                $self->getNodeFilter(), 
+                $self->getNodeFilter(),
                 # pass the value of includeTrunk too
                 $self->includeTrunk()
-                );                                    
+                );
 }
 
 sub _buildTree {
@@ -64,16 +63,16 @@ sub _buildTree {
     while ($i < scalar @{$array}) {
         my $node = $array->[$i];
         # check to make sure we have a well formed tree
-        (ref($node) ne 'ARRAY') 
+        (ref($node) ne 'ARRAY')
             || die "Incorrect Object Type : The node value should never be an array reference";
-        # filter the node if nessecary
+        # filter the node if necessary
         $node = $node_filter->($node) if defined($node_filter);
         # create the new tree
         my $new_tree;
         if ($include_trunk) {
             $tree->setNodeValue($node);
             $new_tree = $tree;
-        }	
+        }
         else {
             $new_tree = Tree::Simple->new($node);
             $tree->addChild($new_tree);
@@ -81,12 +80,12 @@ sub _buildTree {
         # increment the index value
         $i++;
         # NOTE:
-        # the value of include trunk is only 
-        # passed in the recursion, so that 
-        # the trunk/root can be populated, 
-        # we have no more need for it after 
+        # the value of include trunk is only
+        # passed in the recursion, so that
+        # the trunk/root can be populated,
+        # we have no more need for it after
         # that time.
-        $self->_buildTree($new_tree, $array->[$i++], $node_filter) 
+        $self->_buildTree($new_tree, $array->[$i++], $node_filter)
             if ref($array->[$i]) eq 'ARRAY';
     }
 }
@@ -106,8 +105,8 @@ Tree::Simple::Visitor::FromNestedArray - A Visitor for creating Tree::Simple obj
   my $visitor = Tree::Simple::Visitor::FromNestedArray->new();
 
   # given this nested array tree
-  my $array_tree = [ 
-                    'Root', [ 
+  my $array_tree = [
+                    'Root', [
                         'Child1', [
                                 'GrandChild1',
                                 'GrandChild2'
@@ -115,9 +114,9 @@ Tree::Simple::Visitor::FromNestedArray - A Visitor for creating Tree::Simple obj
                         'Child2'
                         ]
                     ];
-  # set the array tree we 
+  # set the array tree we
   # are going to convert
-  $visitor->setArrayTree($array_tree);            
+  $visitor->setArrayTree($array_tree);
 
   $tree->accept($visitor);
 
@@ -126,15 +125,15 @@ Tree::Simple::Visitor::FromNestedArray - A Visitor for creating Tree::Simple obj
   #     ->addChildren(
   #         Tree::Simple->new("Child1")
   #             ->addChildren(
-  #                 Tree::Simple->new("GrandChild1"),                
+  #                 Tree::Simple->new("GrandChild1"),
   #                 Tree::Simple->new("GrandChild2")
   #             ),
   #         Tree::Simple->new("Child2"),
   #     );
 
-=head1 DESCRIPTION 
+=head1 DESCRIPTION
 
-Given a tree constructed from nested arrays, this Visitor will create the equivalent Tree::Simple heirarchy. 
+Given a tree constructed from nested arrays, this Visitor will create the equivalent Tree::Simple hierarchy.
 
 =head1 METHODS
 
@@ -146,7 +145,7 @@ There are no arguments to the constructor the object will be in its default stat
 
 =item B<includTrunk ($boolean)>
 
-Setting the C<$boolean> value to true (C<1>) will cause the node value of the C<$tree> object passed into C<visit> to be set with the root value found in the C<$array_tree>. Setting it to false (C<0>), or not setting it, will result in the first value in the C<$array_tree> creating a new node level. 
+Setting the C<$boolean> value to true (C<1>) will cause the node value of the C<$tree> object passed into C<visit> to be set with the root value found in the C<$array_tree>. Setting it to false (C<0>), or not setting it, will result in the first value in the C<$array_tree> creating a new node level.
 
 =item B<setNodeFilter ($filter_function)>
 
@@ -154,10 +153,10 @@ This method accepts a CODE reference as its C<$filter_function> argument and thr
 
 =item B<setArrayTree ($array_tree)>
 
-This method is used to set the C<$array_tree> that our Tree::Simple heirarchy will be constructed from. It must be in the following form:
+This method is used to set the C<$array_tree> that our Tree::Simple hierarchy will be constructed from. It must be in the following form:
 
-  [ 
-    'Root', [ 
+  [
+    'Root', [
         'Child1', [
               'GrandChild1',
               'GrandChild2'
@@ -166,9 +165,9 @@ This method is used to set the C<$array_tree> that our Tree::Simple heirarchy wi
       ]
   ]
 
-Basically each element in the array is considered a node, unless it is an array reference, in which case it is interpreted as containing the children of the node created from the previous element in the array. 
+Basically each element in the array is considered a node, unless it is an array reference, in which case it is interpreted as containing the children of the node created from the previous element in the array.
 
-The tree is validated prior being accepted, if it fails validation an execption will be thrown. The rules are as follows;
+The tree is validated prior being accepted, if it fails validation an exception will be thrown. The rules are as follows;
 
 =over 4
 
@@ -178,11 +177,11 @@ It makes not sense to create a tree out of nothing, so it is assumed that this i
 
 =item All nodes of the array tree must not be array references.
 
-The root node is validated against this in this function, but all subsequent nodes are checked as the tree is built. Any nodes found to be array references are rejected and an exception is thrown. If you desire your node values to be array references, you can use the node filtering mechanism to acheive this as the node is filtered I<after> it is validated.
+The root node is validated against this in this function, but all subsequent nodes are checked as the tree is built. Any nodes found to be array references are rejected and an exception is thrown. If you desire your node values to be array references, you can use the node filtering mechanism to achieve this as the node is filtered I<after> it is validated.
 
 =item The array tree must be a single rooted tree.
 
-If there is a second element in the array tree, it is assumed to be the children of the root, and therefore must be in the form of an array reference. 
+If there is a second element in the array tree, it is assumed to be the children of the root, and therefore must be in the form of an array reference.
 
 =back
 
@@ -194,11 +193,11 @@ This is the method that is used by Tree::Simple's C<accept> method. It can also
 
 =head1 BUGS
 
-None that I am aware of. Of course, if you find a bug, let me know, and I will be sure to fix it. 
+None that I am aware of. Of course, if you find a bug, let me know, and I will be sure to fix it.
 
 =head1 CODE COVERAGE
 
-See the B<CODE COVERAGE> section in L<Tree::Simple::VisitorFactory> for more inforamtion.
+See the B<CODE COVERAGE> section in L<Tree::Simple::VisitorFactory> for more information.
 
 =head1 SEE ALSO
 
@@ -215,6 +214,6 @@ Copyright 2004, 2005 by Infinity Interactive, Inc.
 L<http://www.iinteractive.com>
 
 This library is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself. 
+it under the same terms as Perl itself.
 
 =cut
@@ -1,10 +1,9 @@
-
 package Tree::Simple::Visitor::FromNestedHash;
 
 use strict;
 use warnings;
 
-our $VERSION = '0.03';
+our $VERSION = '0.12';
 
 use Scalar::Util qw(blessed);
 
@@ -28,21 +27,21 @@ sub _init {
 sub setHashTree {
     my ($self, $hash_tree) = @_;
     (defined($hash_tree) && ref($hash_tree) eq 'HASH')
-        || die "Insufficient Arguments : You must supply a valid HASH reference"; 
+        || die "Insufficient Arguments : You must supply a valid HASH reference";
     # validate the tree ...
     # it must not be empty
     (scalar keys %{$hash_tree} == 1)
         || die "Insufficient Arguments : The hash tree provided must be a single rooted tree";
-    $self->{hash_tree} = $hash_tree;    
+    $self->{hash_tree} = $hash_tree;
 }
 
 sub visit {
 	my ($self, $tree) = @_;
 	(blessed($tree) && $tree->isa("Tree::Simple"))
-		|| die "Insufficient Arguments : You must supply a valid Tree::Simple object"; 
+		|| die "Insufficient Arguments : You must supply a valid Tree::Simple object";
     $self->_buildTree(
-                    $tree, 
-                    $self->{hash_tree}, 
+                    $tree,
+                    $self->{hash_tree},
                     $self->getNodeFilter(),
                     $self->includeTrunk()
                     );
@@ -62,9 +61,9 @@ sub _buildTree {
             $new_tree = Tree::Simple->new($node);
             $tree->addChild($new_tree);
         }
-        $self->_buildTree($new_tree, $hash->{$key}, $node_filter) 
+        $self->_buildTree($new_tree, $hash->{$key}, $node_filter)
             if ref($hash->{$key}) eq 'HASH';
-    }                
+    }
 }
 
 1;
@@ -92,9 +91,9 @@ Tree::Simple::Visitor::FromNestedHash - A Visitor for creating Tree::Simple obje
                         }
                 };
 
-  # set the array tree we 
+  # set the array tree we
   # are going to convert
-  $visitor->setHashTree($hash_tree);            
+  $visitor->setHashTree($hash_tree);
 
   $tree->accept($visitor);
 
@@ -103,15 +102,15 @@ Tree::Simple::Visitor::FromNestedHash - A Visitor for creating Tree::Simple obje
   #     ->addChildren(
   #         Tree::Simple->new("Child1")
   #             ->addChildren(
-  #                 Tree::Simple->new("GrandChild1"),                
+  #                 Tree::Simple->new("GrandChild1"),
   #                 Tree::Simple->new("GrandChild2")
   #             ),
   #         Tree::Simple->new("Child2"),
   #     );
 
-=head1 DESCRIPTION 
+=head1 DESCRIPTION
 
-Given a tree constructed from nested hashs, this Visitor will create the equivalent Tree::Simple heirarchy. 
+Given a tree constructed from nested hashes, this Visitor will create the equivalent Tree::Simple hierarchy.
 
 =head1 METHODS
 
@@ -127,7 +126,7 @@ This method accepts a CODE reference as its C<$filter_function> argument and thr
 
 =item B<setHashTree ($hash_tree)>
 
-This method is used to set the C<$hash_tree> that our Tree::Simple heirarchy will be constructed from. It must be in the following form:
+This method is used to set the C<$hash_tree> that our Tree::Simple hierarchy will be constructed from. It must be in the following form:
 
   {
     Root => {
@@ -139,9 +138,9 @@ This method is used to set the C<$hash_tree> that our Tree::Simple heirarchy wil
           }
   }
 
-Basically each key in the hash is considered a node, values are ignored unless it is a hash reference with at least one key in it, in which case it is interpreted as containing the children of the node created from the key. 
+Basically each key in the hash is considered a node, values are ignored unless it is a hash reference with at least one key in it, in which case it is interpreted as containing the children of the node created from the key.
 
-The tree is validated prior being accepted, if it fails validation an execption will be thrown. The rules are as follows;
+The tree is validated prior being accepted, if it fails validation an exception will be thrown. The rules are as follows;
 
 =over 4
 
@@ -165,11 +164,11 @@ This is the method that is used by Tree::Simple's C<accept> method. It can also
 
 =head1 BUGS
 
-None that I am aware of. Of course, if you find a bug, let me know, and I will be sure to fix it. 
+None that I am aware of. Of course, if you find a bug, let me know, and I will be sure to fix it.
 
 =head1 CODE COVERAGE
 
-See the B<CODE COVERAGE> section in L<Tree::Simple::VisitorFactory> for more inforamtion.
+See the B<CODE COVERAGE> section in L<Tree::Simple::VisitorFactory> for more information.
 
 =head1 SEE ALSO
 
@@ -186,6 +185,6 @@ Copyright 2004, 2005 by Infinity Interactive, Inc.
 L<http://www.iinteractive.com>
 
 This library is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself. 
+it under the same terms as Perl itself.
 
 =cut
@@ -1,10 +1,9 @@
-
 package Tree::Simple::Visitor::GetAllDescendents;
 
 use strict;
 use warnings;
 
-our $VERSION = '0.02';
+our $VERSION = '0.12';
 
 use Scalar::Util qw(blessed);
 
@@ -22,7 +21,7 @@ sub new {
 sub _init {
     my ($self) = @_;
     $self->{traversal_method} = undef;
-    $self->SUPER::_init();    
+    $self->SUPER::_init();
 }
 
 sub setTraversalMethod {
@@ -36,7 +35,7 @@ sub visit {
 	my ($self, $tree) = @_;
 	(blessed($tree) && $tree->isa("Tree::Simple"))
 		|| die "Insufficient Arguments : You must supply a valid Tree::Simple object";
-	# create an closure for the 
+	# create an closure for the
     # collection function
     my @descendents;
     my $filter_function = $self->getNodeFilter();
@@ -48,8 +47,8 @@ sub visit {
                                 :
                                 $t->getNodeValue());
     };
-    # and collect our descendents with the 
-    # traversal method specified   
+    # and collect our descendents with the
+    # traversal method specified
     unless (defined($self->{traversal_method})) {
         $tree->traverse($collection_function);
     }
@@ -63,7 +62,7 @@ sub visit {
 
 sub getAllDescendents {
     my ($self) = @_;
-    return $self->getResults(); 
+    return $self->getResults();
 }
 
 1;
@@ -80,18 +79,18 @@ Tree::Simple::Visitor::GetAllDescendents - A Visitor for fetching all the descen
 
   # create an instance of our visitor
   my $visitor = Tree::Simple::Visitor::GetAllDescendents->new();
-  
+
   # pass the visitor to a Tree::Simple object
   $tree->accept($visitor);
 
-  # you can also get the descendents 
+  # you can also get the descendents
   # back as an array of node values
-  my @descendents = $visitor->getDescendents(); 
-  
-  # for more complex node objects, you can specify 
+  my @descendents = $visitor->getDescendents();
+
+  # for more complex node objects, you can specify
   # a node filter which will be used to extract the
   # information desired from each node
-  $visitor->setNodeFilter(sub { 
+  $visitor->setNodeFilter(sub {
                 my ($t) = @_;
                 return $t->getNodeValue()->description();
                 });
@@ -128,11 +127,11 @@ This method will give back and array of descendents in depth-first order (pre-or
 
 =head1 BUGS
 
-None that I am aware of. Of course, if you find a bug, let me know, and I will be sure to fix it. 
+None that I am aware of. Of course, if you find a bug, let me know, and I will be sure to fix it.
 
 =head1 CODE COVERAGE
 
-See the B<CODE COVERAGE> section in L<Tree::Simple::VisitorFactory> for more inforamtion.
+See the B<CODE COVERAGE> section in L<Tree::Simple::VisitorFactory> for more information.
 
 =head1 SEE ALSO
 
@@ -149,7 +148,7 @@ Copyright 2004, 2005 by Infinity Interactive, Inc.
 L<http://www.iinteractive.com>
 
 This library is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself. 
+it under the same terms as Perl itself.
 
 =cut
 
@@ -1,10 +1,9 @@
-
 package Tree::Simple::Visitor::LoadClassHierarchy;
 
 use strict;
 use warnings;
 
-our $VERSION = '0.02';
+our $VERSION = '0.12';
 
 use Scalar::Util qw(blessed);
 
@@ -23,25 +22,25 @@ sub _init {
     my ($self) = @_;
     $self->{class_to_load} = undef;
     $self->{include_methods} = 0;
-    $self->SUPER::_init();    
+    $self->SUPER::_init();
 }
 
 sub setClass {
     my ($self, $class_to_load) = @_;
     (defined($class_to_load)) || die "Insufficient Arguments : Must provide a class to load";
-    $self->{class_to_load} = $class_to_load; 
+    $self->{class_to_load} = $class_to_load;
 }
 
 sub includeMethods {
     my ($self, $boolean) = @_;
     $self->{include_methods} = ($boolean ? 1 : 0) if defined $boolean;
-    return $self->{include_methods};    
+    return $self->{include_methods};
 }
 
 sub visit {
 	my ($self, $tree) = @_;
 	(blessed($tree) && $tree->isa("Tree::Simple"))
-		|| die "Insufficient Arguments : You must supply a valid Tree::Simple object"; 
+		|| die "Insufficient Arguments : You must supply a valid Tree::Simple object";
     # it must be a leaf
     ($tree->isLeaf()) || die "Illegal Operation : The tree must be a leaf node to load a class hierarchy";
     (defined $self->{class_to_load}) || die "Insufficient Arguments : Must provide a class to load";
@@ -49,7 +48,7 @@ sub visit {
     my $filter = $self->getNodeFilter();
     # get the class to load
     my $class_to_load = ref($self->{class_to_load}) || $self->{class_to_load};
-    
+
     # deal with the include trunk functionality
     if ($self->includeTrunk()) {
         $tree->setNodeValue(defined $filter ? $filter->($class_to_load) : $class_to_load);
@@ -59,10 +58,10 @@ sub visit {
         $tree->addChild($new_tree);
         if ($self->includeMethods()) {
             $self->_loadMethods($new_tree, $class_to_load, $filter);
-        }        
+        }
         $tree = $new_tree;
     }
-    
+
     # and load it recursively
     $self->_loadClass($tree, $class_to_load, $filter);
 }
@@ -89,7 +88,7 @@ sub _loadMethods {
     my @methods;
     {
         no strict 'refs';
-        @methods = sort grep { defined &{"${class}::$_"} } keys %{"${class}::"};    
+        @methods = sort grep { defined &{"${class}::$_"} } keys %{"${class}::"};
     }
     foreach my $method (@methods) {
         $tree->addChild(Tree::Simple->new(defined $filter ? $filter->($method) : $method));
@@ -107,19 +106,19 @@ Tree::Simple::Visitor::LoadClassHierarchy - A Visitor for loading class hierarch
 =head1 SYNOPSIS
 
   use Tree::Simple::Visitor::LoadClassHierarchy;
-  
+
   # create an visitor
   my $visitor = Tree::Simple::Visitor::LoadClassHierarchy->new();
-  
+
   # set class as an instance, or
   $visitor->setClass($class);
-  
+
   # as a package name
   $visitor->setClass("My::Class");
-  
+
   # pass our visitor to the tree
   $tree->accept($visitor);
-  
+
   # the $tree now mirrors the inheritance hierarchy of the $class
 
 =head1 DESCRIPTION
@@ -136,13 +135,13 @@ There are no arguments to the constructor the object will be in its default stat
 
 =item B<includeTrunk ($boolean)>
 
-Setting the C<$boolean> value to true (C<1>) will cause the node value of the C<$tree> object passed into C<visit> to be set with the root value found in the class heirarchy. Setting it to false (C<0>), or not setting it, will result in the first value in the class heirarchy creating a new node level.
+Setting the C<$boolean> value to true (C<1>) will cause the node value of the C<$tree> object passed into C<visit> to be set with the root value found in the class hierarchy. Setting it to false (C<0>), or not setting it, will result in the first value in the class hierarchy creating a new node level.
 
 =item B<includeMethods ($boolean)>
 
 Setting the C<$boolean> value to true (C<1>) will cause methods to be added as a children of the class node. Setting it to false (C<0>), or not setting it, will result in this not happening.
 
-B<NOTE:> Methods are sorted ascii-betically before they are added to the tree. This allows a more predictable heirarchy.
+B<NOTE:> Methods are sorted ascii-betically before they are added to the tree. This allows a more predictable hierarchy.
 
 =item B<setClass ($class)>
 
@@ -176,11 +175,11 @@ This would traverse the full symbol tables and produce a detailed tree of everyt
 
 =head1 BUGS
 
-None that I am aware of. Of course, if you find a bug, let me know, and I will be sure to fix it. 
+None that I am aware of. Of course, if you find a bug, let me know, and I will be sure to fix it.
 
 =head1 CODE COVERAGE
 
-See the B<CODE COVERAGE> section in L<Tree::Simple::VisitorFactory> for more inforamtion.
+See the B<CODE COVERAGE> section in L<Tree::Simple::VisitorFactory> for more information.
 
 =head1 SEE ALSO
 
@@ -197,7 +196,7 @@ Copyright 2004, 2005 by Infinity Interactive, Inc.
 L<http://www.iinteractive.com>
 
 This library is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself. 
+it under the same terms as Perl itself.
 
 =cut
 
@@ -1,10 +1,9 @@
-
 package Tree::Simple::Visitor::LoadDirectoryTree;
 
 use strict;
 use warnings;
 
-our $VERSION = '0.02';
+our $VERSION = '0.12';
 
 use File::Spec;
 use Scalar::Util qw(blessed);
@@ -23,15 +22,15 @@ sub new {
 sub _init {
     my ($self) = @_;
     $self->{sort_function} = undef;
-    $self->SUPER::_init();    
+    $self->SUPER::_init();
 }
 
 # pre-built sort functions
 sub SORT_FILES_FIRST {
-    return sub ($$$) { 
+    return sub ($$$) {
         my ($path, $left, $right) = @_;
         $left  = File::Spec->catdir($path, $left);
-        $right = File::Spec->catdir($path, $right);    
+        $right = File::Spec->catdir($path, $right);
         return ((-d $left && -f $right) ? 1 :       # file beats directory
                 (-d $right && -f $left) ? -1 :    # file beats directory
                     (lc($left) cmp lc($right)))     # otherwise just sort 'em
@@ -39,10 +38,10 @@ sub SORT_FILES_FIRST {
 }
 
 sub SORT_DIRS_FIRST {
-    return sub ($$$) {  
+    return sub ($$$) {
         my ($path, $left, $right) = @_;
         $left  = File::Spec->catdir($path, $left);
-        $right = File::Spec->catdir($path, $right);   
+        $right = File::Spec->catdir($path, $right);
         return ((-d $left && -f $right) ? -1 :      # directory beats file
                 (-d $right && -f $left) ? 1 :     # directory beats file
                     (lc($left) cmp lc($right)))     # otherwise just sort 'em
@@ -51,41 +50,41 @@ sub SORT_DIRS_FIRST {
 
 sub setSortStyle {
     my ($self, $sort_function) = @_;
-	(defined($sort_function) && ref($sort_function) eq "CODE") 
-		|| die "Insufficient Arguments : sort function argument must be a subroutine reference";    
+	(defined($sort_function) && ref($sort_function) eq "CODE")
+		|| die "Insufficient Arguments : sort function argument must be a subroutine reference";
     $self->{sort_function} = $sort_function;
 }
 
 sub visit {
 	my ($self, $tree) = @_;
 	(blessed($tree) && $tree->isa("Tree::Simple"))
-		|| die "Insufficient Arguments : You must supply a valid Tree::Simple object"; 
+		|| die "Insufficient Arguments : You must supply a valid Tree::Simple object";
     # it must be a leaf
     ($tree->isLeaf()) || die "Illegal Operation : The tree must be a leaf node to load a directory";
     # check that our directory is valid
     my $root_dir = $tree->getNodeValue();
-    (-e $root_dir && -d $root_dir) 
-        || die "Incorrect Type : The tree's node value must be a valid directory";  
+    (-e $root_dir && -d $root_dir)
+        || die "Incorrect Type : The tree's node value must be a valid directory";
     # and load it recursively
     $self->_recursiveLoad($tree, $root_dir);
 }
 
 sub _recursiveLoad {
-	my ($self, $t, $path) = @_; 
+	my ($self, $t, $path) = @_;
     # get a node filter if we have one
     my $filter = $self->getNodeFilter();
-    
+
     # get the contents of the directory
     opendir(DIR, $path) || die "IO Error : Could not open directory : $!";
     # avoid the . and .. symbolic links
-    my @dir_contents = grep { 
+    my @dir_contents = grep {
                         $_ ne File::Spec->curdir() && $_ ne File::Spec->updir()
                         } readdir(DIR);
     close(DIR);
-    
+
     # sort them if we need to with full paths
-    @dir_contents = sort { 
-                        $self->{sort_function}->($path, $a, $b) 
+    @dir_contents = sort {
+                        $self->{sort_function}->($path, $a, $b)
                     } @dir_contents if $self->{sort_function};
 
     # now traverse ...
@@ -97,7 +96,7 @@ sub _recursiveLoad {
         my $full_path = File::Spec->catdir($path, $item);
 		if (-d $full_path) {
             my $new_tree = $t->new($item);
-            $t->addChild($new_tree);       
+            $t->addChild($new_tree);
             $self->_recursiveLoad($new_tree, $full_path);
 		}
 		elsif (-f $full_path) {
@@ -117,29 +116,29 @@ Tree::Simple::Visitor::LoadDirectoryTree - A Visitor for loading the contents of
 =head1 SYNOPSIS
 
   use Tree::Simple::Visitor::LoadDirectoryTree;
-  
+
   # create a Tree::Simple object whose
   # node is path to a directory
   my $tree = Tree::Simple->new("./");
 
   # create an instance of our visitor
   my $visitor = Tree::Simple::Visitor::LoadDirectoryTree->new();
-  
+
   # set the directory sorting style
   $visitor->setSortStyle($visitor->SORT_FILES_FIRST);
-  
-  # create node filter to filter 
+
+  # create node filter to filter
   # out certain files and directories
   $visitor->setNodeFilter(sub {
       my ($item) = @_;
       return 0 if $item =~ /CVS/;
       return 1;
-  });  
-  
+  });
+
   # pass the visitor to a Tree::Simple object
   $tree->accept($visitor);
-  
-  # the tree now mirrors the structure of the directory 
+
+  # the tree now mirrors the structure of the directory
 
 =head1 DESCRIPTION
 
@@ -159,9 +158,9 @@ This method accepts a CODE reference as its C<$filter_function> argument and thr
 
 =item B<setSortStyle ($sort_function)>
 
-This method accepts a CODE reference as its C<$sort_function> argument and throws an exception if it is not a code reference. This function is used to sort the individual levels of the directory tree right before it is added to the tree being built. The function is passed the the current path, followed by the two items being sorted. The reason for passing the path in is so that sorting operations can be performed on the entire path if desired. 
+This method accepts a CODE reference as its C<$sort_function> argument and throws an exception if it is not a code reference. This function is used to sort the individual levels of the directory tree right before it is added to the tree being built. The function is passed the current path, followed by the two items being sorted. The reason for passing the path in is so that sorting operations can be performed on the entire path if desired.
 
-Two pre-built functions are supplied and described below. 
+Two pre-built functions are supplied and described below.
 
 =over 4
 
@@ -203,11 +202,11 @@ The C<$tree> argument which is passed to C<visit> must be a leaf node. This is b
 
 =head1 BUGS
 
-None that I am aware of. Of course, if you find a bug, let me know, and I will be sure to fix it. 
+None that I am aware of. Of course, if you find a bug, let me know, and I will be sure to fix it.
 
 =head1 CODE COVERAGE
 
-See the B<CODE COVERAGE> section in L<Tree::Simple::VisitorFactory> for more inforamtion.
+See the B<CODE COVERAGE> section in L<Tree::Simple::VisitorFactory> for more information.
 
 =head1 SEE ALSO
 
@@ -224,7 +223,7 @@ Copyright 2004, 2005 by Infinity Interactive, Inc.
 L<http://www.iinteractive.com>
 
 This library is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself. 
+it under the same terms as Perl itself.
 
 =cut
 
@@ -1,10 +1,9 @@
-
 package Tree::Simple::Visitor::PathToRoot;
 
 use strict;
 use warnings;
 
-our $VERSION = '0.02';
+our $VERSION = '0.12';
 
 use Scalar::Util qw(blessed);
 
@@ -25,11 +24,11 @@ sub visit {
 		|| die "Insufficient Arguments : You must supply a valid Tree::Simple object";
     # create an array for our path
     my @path;
-    # we need to climb up the tree and 
+    # we need to climb up the tree and
     # collect the nodes
     my $filter_function = $self->getNodeFilter();
     my $current_tree = $tree;
-    until ($current_tree->isRoot()) {  
+    until ($current_tree->isRoot()) {
         unshift @path => ($filter_function ?
                                         $filter_function->($current_tree)
                                         :
@@ -42,7 +41,7 @@ sub visit {
                                         :
                                         $current_tree->getNodeValue()) if $self->includeTrunk();
     # now store our path in results
-    $self->setResults(@path);                                    
+    $self->setResults(@path);
 }
 
 sub getPath {
@@ -67,35 +66,35 @@ Tree::Simple::Visitor::PathToRoot - A Visitor for finding the path back a Tree::
 =head1 SYNOPSIS
 
   use Tree::Simple::Visitor::PathToRoot;
-  
+
   # create an instance of our visitor
   my $visitor = Tree::Simple::Visitor::PathToRoot->new();
-  
+
   # pass the visitor to a Tree::Simple object
   $tree->accept($visitor);
-  
-  # now get the accumulated path as a string 
+
+  # now get the accumulated path as a string
   # with the '/' character as the delimiter
   print $visitor->getPathAsString("/");
-  
+
   # include the tree's trunk in your
-  # output as well 
+  # output as well
   $visitor->includeTrunk();
-  
-  # for more complex node objects, you can specify 
+
+  # for more complex node objects, you can specify
   # a node filter which will be used to extract the
   # information desired from each node
-  $visitor->setNodeFilter(sub { 
+  $visitor->setNodeFilter(sub {
                 my ($t) = @_;
                 return $t->getNodeValue()->description();
                 });
-  
+
   # you can also get the path back as an array
-  my @path = $visitor->getPath();  
+  my @path = $visitor->getPath();
 
 =head1 DESCRIPTION
 
-Given a Tree::Simple object, this Visitor will find the path back to the tree's root node. 
+Given a Tree::Simple object, this Visitor will find the path back to the tree's root node.
 
 =head1 METHODS
 
@@ -107,7 +106,7 @@ There are no arguments to the constructor the object will be in its default stat
 
 =item B<includeTrunk ($boolean)>
 
-Based upon the value of C<$boolean>, this will tell the visitor to collect the trunk of the tree as well. 
+Based upon the value of C<$boolean>, this will tell the visitor to collect the trunk of the tree as well.
 
 =item B<setNodeFilter ($filter_function)>
 
@@ -129,11 +128,11 @@ This will return the collected path as a string with the path elements joined by
 
 =head1 BUGS
 
-None that I am aware of. Of course, if you find a bug, let me know, and I will be sure to fix it. 
+None that I am aware of. Of course, if you find a bug, let me know, and I will be sure to fix it.
 
 =head1 CODE COVERAGE
 
-See the B<CODE COVERAGE> section in L<Tree::Simple::VisitorFactory> for more inforamtion.
+See the B<CODE COVERAGE> section in L<Tree::Simple::VisitorFactory> for more information.
 
 =head1 SEE ALSO
 
@@ -150,7 +149,7 @@ Copyright 2004, 2005 by Infinity Interactive, Inc.
 L<http://www.iinteractive.com>
 
 This library is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself. 
+it under the same terms as Perl itself.
 
 =cut
 
@@ -1,10 +1,9 @@
-
 package Tree::Simple::Visitor::PostOrderTraversal;
 
 use strict;
 use warnings;
 
-our $VERSION = '0.02';
+our $VERSION = '0.12';
 
 use Scalar::Util qw(blessed);
 
@@ -38,16 +37,16 @@ sub visit {
             # recursion
             push @results => $traversal_function->($child, $traversal_function);
         }
-        # if we are root and we are not including the trunk then 
+        # if we are root and we are not including the trunk then
         # we can return our results now
         return @results if $current_tree->isRoot() && !$self->includeTrunk();
-        # however, if we dont meet those conditions, then we 
+        # however, if we don't meet those conditions, then we
         # need to process the current tree and add it to our
         # results
-        push @results => (($filter_function) ? 
-                                $filter_function->($current_tree) 
-                                : 
-                                $current_tree->getNodeValue()); 
+        push @results => (($filter_function) ?
+                                $filter_function->($current_tree)
+                                :
+                                $current_tree->getNodeValue());
         # and then return the results
         return @results;
     };
@@ -66,18 +65,18 @@ Tree::Simple::Visitor::PostOrderTraversal - A Visitor for post-order traversal a
 =head1 SYNOPSIS
 
   use Tree::Simple::Visitor::PostOrderTraversal;
-  
+
   # create an visitor
   my $visitor = Tree::Simple::Visitor::PostOrderTraversal->new();
-  
+
   # pass our visitor to the tree
   $tree->accept($visitor);
-  
+
   # print our results
   print join ", " => $visitor->getResults();
-  
-  # this will print this: 
-  #   1.1.1 1.1 1.2 1 2.1 2 3.1 3 
+
+  # this will print this:
+  #   1.1.1 1.1 1.2 1 2.1 2 3.1 3
   # assuming your tree is like this:
   #   1
   #     1.1
@@ -86,7 +85,7 @@ Tree::Simple::Visitor::PostOrderTraversal - A Visitor for post-order traversal a
   #   2
   #     2.1
   #   3
-  #     3.1  
+  #     3.1
 
 =head1 DESCRIPTION
 
@@ -102,7 +101,7 @@ There are no arguments to the constructor the object will be in its default stat
 
 =item B<includeTrunk ($boolean)>
 
-Based upon the value of C<$boolean>, this will tell the visitor to include the trunk of the tree in the traversal as well. 
+Based upon the value of C<$boolean>, this will tell the visitor to include the trunk of the tree in the traversal as well.
 
 =item B<setNodeFilter ($filter_function)>
 
@@ -120,11 +119,11 @@ This method returns the accumulated results of the application of the node filte
 
 =head1 BUGS
 
-None that I am aware of. Of course, if you find a bug, let me know, and I will be sure to fix it. 
+None that I am aware of. Of course, if you find a bug, let me know, and I will be sure to fix it.
 
 =head1 CODE COVERAGE
 
-See the B<CODE COVERAGE> section in L<Tree::Simple::VisitorFactory> for more inforamtion.
+See the B<CODE COVERAGE> section in L<Tree::Simple::VisitorFactory> for more information.
 
 =head1 SEE ALSO
 
@@ -141,7 +140,7 @@ Copyright 2004, 2005 by Infinity Interactive, Inc.
 L<http://www.iinteractive.com>
 
 This library is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself. 
+it under the same terms as Perl itself.
 
 =cut
 
@@ -1,10 +1,9 @@
-
 package Tree::Simple::Visitor::PreOrderTraversal;
 
 use strict;
 use warnings;
 
-our $VERSION = '0.01';
+our $VERSION = '0.12';
 
 use base qw(Tree::Simple::Visitor);
 
@@ -28,18 +27,18 @@ Tree::Simple::Visitor::PreOrderTraversal - A Visitor for pre-order traversal a T
 =head1 SYNOPSIS
 
   use Tree::Simple::Visitor::PreOrderTraversal;
-  
+
   # create an visitor
   my $visitor = Tree::Simple::Visitor::PreOrderTraversal->new();
-  
+
   # pass our visitor to the tree
   $tree->accept($visitor);
-  
+
   # print our results
   print join ", " => $visitor->getResults();
-  
-  # this will print this: 
-  #   1 1.1 1.1.1 1.2 2 2.1 3 3.1 
+
+  # this will print this:
+  #   1 1.1 1.1.1 1.2 2 2.1 3 3.1
   # assuming your tree is like this:
   #   1
   #     1.1
@@ -48,11 +47,11 @@ Tree::Simple::Visitor::PreOrderTraversal - A Visitor for pre-order traversal a T
   #   2
   #     2.1
   #   3
-  #     3.1  
+  #     3.1
 
 =head1 DESCRIPTION
 
-Pre-order traversal is a depth-first traversal method in which the sub-tree's are processed I<after> the parent. It is essentially a wrapper around the base Tree::Simple::Visitor class, and is a seperate module here for completeness. (If you have a post-order, you should have a pre-order too). 
+Pre-order traversal is a depth-first traversal method in which the sub-tree's are processed I<after> the parent. It is essentially a wrapper around the base Tree::Simple::Visitor class, and is a separate module here for completeness. (If you have a post-order, you should have a pre-order too).
 
 =head1 METHODS
 
@@ -64,7 +63,7 @@ There are no arguments to the constructor the object will be in its default stat
 
 =item B<includeTrunk ($boolean)>
 
-Based upon the value of C<$boolean>, this will tell the visitor to include the trunk of the tree in the traversal as well. 
+Based upon the value of C<$boolean>, this will tell the visitor to include the trunk of the tree in the traversal as well.
 
 =item B<setNodeFilter ($filter_function)>
 
@@ -82,11 +81,11 @@ This method returns the accumulated results of the application of the node filte
 
 =head1 BUGS
 
-None that I am aware of. Of course, if you find a bug, let me know, and I will be sure to fix it. 
+None that I am aware of. Of course, if you find a bug, let me know, and I will be sure to fix it.
 
 =head1 CODE COVERAGE
 
-See the B<CODE COVERAGE> section in L<Tree::Simple::VisitorFactory> for more inforamtion.
+See the B<CODE COVERAGE> section in L<Tree::Simple::VisitorFactory> for more information.
 
 =head1 SEE ALSO
 
@@ -103,7 +102,7 @@ Copyright 2004, 2005 by Infinity Interactive, Inc.
 L<http://www.iinteractive.com>
 
 This library is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself. 
+it under the same terms as Perl itself.
 
 =cut
 
@@ -1,10 +1,9 @@
-
 package Tree::Simple::Visitor::Sort;
 
 use strict;
 use warnings;
 
-our $VERSION = '0.03';
+our $VERSION = '0.12';
 
 use Scalar::Util qw(blessed);
 
@@ -33,7 +32,7 @@ sub REVERSE_ALPHABETICAL { sub ($$) { lc($_[1]->getNodeValue()) cmp lc($_[0]->ge
 
 sub setSortFunction {
     my ($self, $sort_function) = @_;
-    (defined($sort_function) && ref($sort_function) eq "CODE") 
+    (defined($sort_function) && ref($sort_function) eq "CODE")
         || die "Insufficient Arguments : You must supply a CODE reference for the sort function";
     $self->{sort_function} = $sort_function;
 }
@@ -42,10 +41,10 @@ sub visit {
     my ($self, $tree) = @_;
 	(blessed($tree) && $tree->isa("Tree::Simple"))
         || die "Insufficient Arguments : You must supply a valid Tree::Simple object";
-        
+
     # No childs, nothing to sort
     return if $tree->isLeaf();
-    
+
     my $sort_function;
     if ($self->{sort_function}) {
         $sort_function = $self->{sort_function};
@@ -57,20 +56,20 @@ sub visit {
             $sort_function = sub { $filter_func->($a) cmp $filter_func->($b) };
         }
         else {
-            $sort_function = sub { $a->getNodeValue() cmp $b->getNodeValue() };    
+            $sort_function = sub { $a->getNodeValue() cmp $b->getNodeValue() };
         }
-    }  
-    
+    }
+
     # otherwise sort them
     $self->_sortTree($sort_function, $tree);
 }
 
 sub _sortTree {
     my ($self, $sort_function, $tree) = @_;
-    
-    # sort children, using the sort filter 
+
+    # sort children, using the sort filter
     my @childs = sort { $sort_function->($a, $b) } $tree->getAllChildren();
-    
+
     # Create the new sequence
     foreach my $child (@childs) {
         # get the removed child
@@ -78,7 +77,7 @@ sub _sortTree {
         # and be sure that is the one
         # we re-insert
         $tree->addChild($child);
-        # only sort the child if 
+        # only sort the child if
         # it is not a leaf
         $self->_sortTree($sort_function, $child) unless $child->isLeaf();
     }
@@ -90,40 +89,40 @@ __END__
 
 =head1 NAME
 
-Tree::Simple::Visitor::Sort - A Visitor for sorting a Tree::Simple object heirarchy
+Tree::Simple::Visitor::Sort - A Visitor for sorting a Tree::Simple object hierarchy
 
 =head1 SYNOPSIS
 
   use Tree::Simple::Visitor::Sort;
-  
+
   # create a visitor object
   my $visitor = Tree::Simple::Visitor::Sort->new();
-  
+
   $tree->accept($visitor);
   # the tree is now sorted ascii-betically
 
-  # set the sort function to 
+  # set the sort function to
   # use a numeric comparison
   $visitor->setSortFunction($visitor->NUMERIC);
-  
+
   $tree->accept($visitor);
-  # the tree is now sorted numerically  
-  
+  # the tree is now sorted numerically
+
   # set a custom sort function
   $visitor->setSortFunction(sub {
         my ($left, $right) = @_;
         lc($left->getNodeValue()->{name}) cmp lc($right->getNodeValue()->{name});
   });
-  
+
   $tree->accept($visitor);
-  # the tree's node are now sorted appropriately   
+  # the tree's node are now sorted appropriately
 
 =head1 DESCRIPTION
 
-This implements a recursive multi-level sort of a Tree::Simple heirarchy. I think this deserves some more explaination, and the best way to do that is visually. 
+This implements a recursive multi-level sort of a Tree::Simple hierarchy. I think this deserves some more explanation, and the best way to do that is visually.
 
 Given the tree:
-	
+
     1
         1.3
         1.2
@@ -154,12 +153,12 @@ A normal sort would produce the following tree:
         3.2
         3.3
     4
-        4.1  
-        
+        4.1
+
 A sort using the built-in REVERSE sort function would produce the following tree:
 
     4
-        4.1         
+        4.1
     3
         3.3
         3.2
@@ -173,7 +172,7 @@ A sort using the built-in REVERSE sort function would produce the following tree
             1.2.1
         1.1
 
-As you can see, no node is moved up or down from it's current depth, but sorted with it's siblings. Flexible customized sorting is possible within this framework, however, this cannot be used for tree-balancing or anything as complex as that. 
+As you can see, no node is moved up or down from it's current depth, but sorted with it's siblings. Flexible customized sorting is possible within this framework, however, this cannot be used for tree-balancing or anything as complex as that.
 
 =head1 METHODS
 
@@ -185,7 +184,7 @@ There are no arguments to the constructor the object will be in its default stat
 
 =item B<includeTrunk ($boolean)>
 
-Based upon the value of C<$boolean>, this will tell the visitor to include the trunk of the tree in the sort as well. 
+Based upon the value of C<$boolean>, this will tell the visitor to include the trunk of the tree in the sort as well.
 
 =item B<setNodeFilter ($filter_function)>
 
@@ -201,7 +200,7 @@ Several pre-built sort functions are provided. All of these functions assume tha
 
 =item REVERSE
 
-This is the reverse of the normal sort using C<cmp>. 
+This is the reverse of the normal sort using C<cmp>.
 
 =item NUMERIC
 
@@ -215,7 +214,7 @@ The reverse of the above.
 
 This lowercases the node value before using C<cmp> to sort. This results in a true alphabetical sorting.
 
-=item REVERSE_ALPHABETICAL 
+=item REVERSE_ALPHABETICAL
 
 The reverse of the above.
 
@@ -233,11 +232,11 @@ It should be noted that this is a I<destructive> action, since the sort happens
 
 =head1 BUGS
 
-None that I am aware of. Of course, if you find a bug, let me know, and I will be sure to fix it. 
+None that I am aware of. Of course, if you find a bug, let me know, and I will be sure to fix it.
 
 =head1 CODE COVERAGE
 
-See the B<CODE COVERAGE> section in L<Tree::Simple::VisitorFactory> for more inforamtion.
+See the B<CODE COVERAGE> section in L<Tree::Simple::VisitorFactory> for more information.
 
 =head1 SEE ALSO
 
@@ -264,7 +263,7 @@ Copyright 2004, 2005 by Vitor Mori & Infinity Interactive, Inc.
 L<http://www.iinteractive.com>
 
 This library is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself. 
+it under the same terms as Perl itself.
 
 =cut
 
@@ -1,10 +1,9 @@
-
 package Tree::Simple::Visitor::ToNestedArray;
 
 use strict;
 use warnings;
 
-our $VERSION = '0.02';
+our $VERSION = '0.12';
 
 use Scalar::Util qw(blessed);
 
@@ -22,7 +21,7 @@ sub new {
 sub visit {
 	my ($self, $tree) = @_;
 	(blessed($tree) && $tree->isa("Tree::Simple"))
-		|| die "Insufficient Arguments : You must supply a valid Tree::Simple object"; 
+		|| die "Insufficient Arguments : You must supply a valid Tree::Simple object";
     # grab our filter (if we have one)
     my $filter = $self->getNodeFilter();
     my @results;
@@ -30,10 +29,10 @@ sub visit {
     $self->_buildArray($tree, \@results, $filter);
     # add the trunk if we need to
     @results = (
-            ((defined($filter)) ? 
-                    $filter->($tree) 
-                    : 
-                    $tree->getNodeValue()), 
+            ((defined($filter)) ?
+                    $filter->($tree)
+                    :
+                    $tree->getNodeValue()),
             [ @results ]
         ) if $self->includeTrunk();
     # set results
@@ -68,22 +67,22 @@ Tree::Simple::Visitor::ToNestedArray - A Visitor for creating nested array trees
                 ->addChildren(
                     Tree::Simple->new("Child1")
                         ->addChildren(
-                            Tree::Simple->new("GrandChild1"),                
+                            Tree::Simple->new("GrandChild1"),
                             Tree::Simple->new("GrandChild2")
                         ),
                     Tree::Simple->new("Child2"),
-                );  
+                );
 
   # include the trunk (Root)
   $visitor->includeTrunk(1);
-  
+
   # visit the tree
   $tree->accept($visitor);
 
   my $array_tree = $visitor->getResults();
   # this then creates the equivalent nested array tree:
-  # [  
-  # 'Root', [ 
+  # [
+  # 'Root', [
   #     'Child1', [
   #             'GrandChild1',
   #             'GrandChild2'
@@ -91,13 +90,13 @@ Tree::Simple::Visitor::ToNestedArray - A Visitor for creating nested array trees
   #     'Child2'
   #     ]
   # ]
-  
+
   # if you don't include the trunk (Root) then ...
   $tree->accept($visitor);
 
   my $array_tree = $visitor->getResults();
-  # this then creates the following nested array tree:  
-  # [ 
+  # this then creates the following nested array tree:
+  # [
   #   'Child1', [
   #           'GrandChild1',
   #           'GrandChild2'
@@ -105,9 +104,9 @@ Tree::Simple::Visitor::ToNestedArray - A Visitor for creating nested array trees
   #   'Child2'
   # ]
 
-=head1 DESCRIPTION 
+=head1 DESCRIPTION
 
-Given a tree constructed from a Tree::Simple heirarchy, this Visitor will create the equivalent tree of nested arrays. 
+Given a tree constructed from a Tree::Simple hierarchy, this Visitor will create the equivalent tree of nested arrays.
 
 =head1 METHODS
 
@@ -137,11 +136,11 @@ This method will return the array tree constructed.
 
 =head1 BUGS
 
-None that I am aware of. Of course, if you find a bug, let me know, and I will be sure to fix it. 
+None that I am aware of. Of course, if you find a bug, let me know, and I will be sure to fix it.
 
 =head1 CODE COVERAGE
 
-See the B<CODE COVERAGE> section in L<Tree::Simple::VisitorFactory> for more inforamtion.
+See the B<CODE COVERAGE> section in L<Tree::Simple::VisitorFactory> for more information.
 
 =head1 SEE ALSO
 
@@ -158,6 +157,6 @@ Copyright 2004, 2005 by Infinity Interactive, Inc.
 L<http://www.iinteractive.com>
 
 This library is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself. 
+it under the same terms as Perl itself.
 
 =cut
@@ -1,10 +1,9 @@
-
 package Tree::Simple::Visitor::ToNestedHash;
 
 use strict;
 use warnings;
 
-our $VERSION = '0.02';
+our $VERSION = '0.12';
 
 use Scalar::Util qw(blessed);
 
@@ -22,7 +21,7 @@ sub new {
 sub visit {
 	my ($self, $tree) = @_;
 	(blessed($tree) && $tree->isa("Tree::Simple"))
-		|| die "Insufficient Arguments : You must supply a valid Tree::Simple object";                                    
+		|| die "Insufficient Arguments : You must supply a valid Tree::Simple object";
     # grab our filter (if we have one)
     my $filter = $self->getNodeFilter();
     my %results;
@@ -30,9 +29,9 @@ sub visit {
     $self->_buildHash($tree, \%results, $filter);
     # add the trunk if we need to
     %results = (
-            ((defined($filter)) ? 
-                    $filter->($tree) 
-                    : 
+            ((defined($filter)) ?
+                    $filter->($tree)
+                    :
                     $tree->getNodeValue()) => { %results }
         ) if $self->includeTrunk();
     # set results
@@ -45,7 +44,7 @@ sub _buildHash {
         my $node_value = {};
         my $node_key = (defined($filter) ? $filter->($child) : $child->getNodeValue());
         $self->_buildHash($child, $node_value, $filter) unless $child->isLeaf();
-        $accumulator->{$node_key} = $node_value;            
+        $accumulator->{$node_key} = $node_value;
     }
     return $accumulator;
 }
@@ -70,19 +69,19 @@ Tree::Simple::Visitor::ToNestedHash - A Visitor for creating nested hash trees f
                 ->addChildren(
                     Tree::Simple->new("Child1")
                         ->addChildren(
-                            Tree::Simple->new("GrandChild1"),                
+                            Tree::Simple->new("GrandChild1"),
                             Tree::Simple->new("GrandChild2")
                         ),
                     Tree::Simple->new("Child2"),
-                );  
+                );
 
   $tree->accept($visitor);
 
   my $array_tree = $visitor->getResults();
-  
+
   # this then creates the equivalent nested array tree:
   # {
-  # Root => {  
+  # Root => {
   #         Child1 => {
   #                 GrandChild1 => {},
   #                 GrandChild2 => {}
@@ -91,9 +90,9 @@ Tree::Simple::Visitor::ToNestedHash - A Visitor for creating nested hash trees f
   #         }
   # }
 
-=head1 DESCRIPTION 
+=head1 DESCRIPTION
 
-Given a tree constructed from a Tree::Simple heirarchy, this Visitor will create the equivalent tree of nested hashes. 
+Given a tree constructed from a Tree::Simple hierarchy, this Visitor will create the equivalent tree of nested hashes.
 
 =head1 METHODS
 
@@ -123,11 +122,11 @@ This method will return the hash tree constructed.
 
 =head1 BUGS
 
-None that I am aware of. Of course, if you find a bug, let me know, and I will be sure to fix it. 
+None that I am aware of. Of course, if you find a bug, let me know, and I will be sure to fix it.
 
 =head1 CODE COVERAGE
 
-See the B<CODE COVERAGE> section in L<Tree::Simple::VisitorFactory> for more inforamtion.
+See the B<CODE COVERAGE> section in L<Tree::Simple::VisitorFactory> for more information.
 
 =head1 SEE ALSO
 
@@ -144,6 +143,6 @@ Copyright 2004, 2005 by Infinity Interactive, Inc.
 L<http://www.iinteractive.com>
 
 This library is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself. 
+it under the same terms as Perl itself.
 
 =cut
@@ -1,4 +1,3 @@
-
 package Tree::Simple::Visitor::VariableDepthClone;
 
 use strict;
@@ -6,7 +5,7 @@ use warnings;
 
 use Scalar::Util 'blessed';
 
-our $VERSION = '0.03';
+our $VERSION = '0.12';
 
 use base qw(Tree::Simple::Visitor);
 
@@ -22,14 +21,14 @@ sub new {
 sub _init {
     my ($self) = @_;
     $self->{clone_depth} = undef;
-    $self->SUPER::_init();    
+    $self->SUPER::_init();
 }
 
 sub setCloneDepth {
     my ($self, $clone_depth) = @_;
-    (defined($clone_depth)) 
-    	|| die "Insufficient Arguments : you must supply a clone depth";    
-    $self->{clone_depth} = $clone_depth;    
+    (defined($clone_depth))
+    	|| die "Insufficient Arguments : you must supply a clone depth";
+    $self->{clone_depth} = $clone_depth;
 }
 
 sub getClone {
@@ -40,14 +39,14 @@ sub getClone {
 sub visit {
     my ($self, $tree) = @_;
     (blessed($tree) && $tree->isa("Tree::Simple"))
-    	|| die "Insufficient Arguments : You must supply a valid Tree::Simple object"; 
-    	
+    	|| die "Insufficient Arguments : You must supply a valid Tree::Simple object";
+
     my $filter = $self->getNodeFilter();
-    
-    # get a new instance of the root tree type    
+
+    # get a new instance of the root tree type
     my $new_root = blessed($tree)->new($tree->ROOT);
     my $new_tree = $new_root;
-    
+
     if ($self->includeTrunk()) {
         my $cloned_trunk = blessed($tree)->new();
         $cloned_trunk->setNodeValue(
@@ -57,10 +56,10 @@ sub visit {
         $new_tree->addChild($cloned_trunk);
         $new_tree = $cloned_trunk;
     }
-    
+
     $self->_cloneTree($tree, $new_tree, $self->{clone_depth}, $filter);
-    
-    $self->setResults($new_root);    	    
+
+    $self->setResults($new_root);
 }
 
 sub _cloneTree {
@@ -71,7 +70,7 @@ sub _cloneTree {
         $cloned_child->setNodeValue(
             Tree::Simple::_cloneNode($child->getNodeValue())
         );
-        $filter->($child, $cloned_child) if defined $filter;        
+        $filter->($child, $cloned_child) if defined $filter;
         $clone->addChild($cloned_child);
         $self->_cloneTree($child, $cloned_child, $depth - 1, $filter) unless $child->isLeaf();
     }
@@ -91,17 +90,17 @@ Tree::Simple::Visitor::VariableDepthClone - A Visitor for cloning parts of Tree:
 
   # create an visitor
   my $visitor = Tree::Simple::Visitor::VariableDepthClone->new();
-  
+
   $visitor->setCloneDepth(3);
 
   # pass our visitor to the tree
   $tree->accept($visitor);
-  
+
   my $partial_tree = $visitor->getClone();
 
 =head1 DESCRIPTION
 
-This visitor will clone 
+This visitor will clone
 
 =head1 METHODS
 
@@ -119,7 +118,7 @@ Based upon the value of C<$boolean>, this will tell the visitor to include the t
 
 =item B<setNodeFilter ($filter_function)>
 
-This method accepts a CODE reference as its C<$filter_function> argument and throws an exception if it is not a code reference. This code reference is used to filter the tree nodes as they are cloned. 
+This method accepts a CODE reference as its C<$filter_function> argument and throws an exception if it is not a code reference. This code reference is used to filter the tree nodes as they are cloned.
 
 =item B<visit ($tree)>
 
@@ -133,11 +132,11 @@ This method returns the cloned partial tree.
 
 =head1 BUGS
 
-None that I am aware of. Of course, if you find a bug, let me know, and I will be sure to fix it. 
+None that I am aware of. Of course, if you find a bug, let me know, and I will be sure to fix it.
 
 =head1 CODE COVERAGE
 
-See the B<CODE COVERAGE> section in L<Tree::Simple::VisitorFactory> for more inforamtion.
+See the B<CODE COVERAGE> section in L<Tree::Simple::VisitorFactory> for more information.
 
 =head1 SEE ALSO
 
@@ -154,7 +153,7 @@ Copyright 2005 by Infinity Interactive, Inc.
 L<http://www.iinteractive.com>
 
 This library is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself. 
+it under the same terms as Perl itself.
 
 =cut
 
@@ -1,12 +1,11 @@
-
 package Tree::Simple::VisitorFactory;
 
 use strict;
 use warnings;
 
-our $VERSION = '0.10';
+our $VERSION = '0.12';
 
-sub new { 
+sub new {
     my ($class) = @_;
     return bless \$class;
 }
@@ -33,19 +32,19 @@ Tree::Simple::VisitorFactory - A factory object for dispensing Visitor objects
 =head1 SYNOPSIS
 
   use Tree::Simple::VisitorFactory;
-  
+
   my $tf = Tree::Simple::VisitorFactory->new();
-  
+
   my $visitor = $tf->get("PathToRoot");
-  
+
   # or call it as a class method
   my $visitor = Tree::Simple::VisitorFactory->getVisitor("PathToRoot");
 
 =head1 DESCRIPTION
 
-This object is really just a factory for dispensing Tree::Simple::Visitor::* objects. It is not required to use this package in order to use all the Visitors, it is just a somewhat convienient way to avoid having to type thier long class names. 
+This object is really just a factory for dispensing Tree::Simple::Visitor::* objects. It is not required to use this package in order to use all the Visitors, it is just a somewhat convenient way to avoid having to type their long class names.
 
-I considered making this a Singleton, but I did not because I thought that some people might not want that. I know that I am very picky about using Singletons, especially in multiprocess environments like mod_perl, so I implemented the smallest instance I knew how to, and made sure all other methods could be called as class methods too. 
+I considered making this a Singleton, but I did not because I thought that some people might not want that. I know that I am very picky about using Singletons, especially in multiprocess environments like mod_perl, so I implemented the smallest instance I knew how to, and made sure all other methods could be called as class methods too.
 
 =head1 METHODS
 
@@ -57,7 +56,7 @@ Returns an minimal instance of this object, basically just a reference back to t
 
 =item B<get ($visitor_type)>
 
-Attempts to load the C<$visitor_type> and returns an instance of it if successfull. If no C<$visitor_type> is specified an exception is thrown, if C<$visitor_type> fails to load, and exception is thrown.
+Attempts to load the C<$visitor_type> and returns an instance of it if successful. If no C<$visitor_type> is specified an exception is thrown, if C<$visitor_type> fails to load, and exception is thrown.
 
 =item B<getVisitor ($visitor_type)>
 
@@ -67,29 +66,29 @@ This is an alias of C<get>.
 
 =head1 AVAILABLE VISITORS
 
-This distibution provides a number of Visitor objects which can be loaded just by giving their name. Below is a description of the available Visitors and a sort description of what they do. I have attempted to classify the Visitors into groups which are related to their use.
+This distribution provides a number of Visitor objects which can be loaded just by giving their name. Below is a description of the available Visitors and a sort description of what they do. I have attempted to classify the Visitors into groups which are related to their use.
 
-This factory will load any module contained inside the B<Tree::Simple::Visitor::*> namespace. Given a name, it will attempt to C<require> the module B<Tree::Simple::Visitor::E<lt>I<Name>E<gt>.pm>. This allows others to create Visitors which can be accessed with this factory, without needed to include them in this distrobution. 
+This factory will load any module contained inside the B<Tree::Simple::Visitor::*> namespace. Given a name, it will attempt to C<require> the module B<Tree::Simple::Visitor::E<lt>I<Name>E<gt>.pm>. This allows others to create Visitors which can be accessed with this factory, without needed to include them in this distribution.
 
-=head2 Search/Path Related Visitors 
+=head2 Search/Path Related Visitors
 
 =over 4
 
 =item B<PathToRoot>
 
-Given a Tree::Simple object, this Visitor will find the path back to the tree's root node. 
+Given a Tree::Simple object, this Visitor will find the path back to the tree's root node.
 
 =item B<FindByPath>
 
-Given a path and Tree::Simple hierarchy, this Visitor will attempt to find the node specified by the path. 
+Given a path and Tree::Simple hierarchy, this Visitor will attempt to find the node specified by the path.
 
 =item B<FindByUID>
 
-Given a UID and Tree::Simple hierarchy, this Visitor will attempt to find the node with the same UID. 
+Given a UID and Tree::Simple hierarchy, this Visitor will attempt to find the node with the same UID.
 
 =item B<FindByNodeValue>
 
-Given a node value and Tree::Simple hierarchy, this Visitor will attempt to find the node with the same node value. 
+Given a node value and Tree::Simple hierarchy, this Visitor will attempt to find the node with the same node value.
 
 =back
 
@@ -131,19 +130,19 @@ This visitor can be used to create a set of directories and files from a Tree::S
 
 =item B<FromNestedArray>
 
-Given a tree constructed from nested arrays, this Visitor will create the equivalent Tree::Simple heirarchy. 
+Given a tree constructed from nested arrays, this Visitor will create the equivalent Tree::Simple hierarchy.
 
 =item B<ToNestedArray>
 
-Given a Tree::Simple heirarchy, this Visitor will create the equivalent tree constructed from nested arrays. 
+Given a Tree::Simple hierarchy, this Visitor will create the equivalent tree constructed from nested arrays.
 
 =item B<FromNestedHash>
 
-Given a tree constructed from nested hashs, this Visitor will create the equivalent Tree::Simple heirarchy. 
+Given a tree constructed from nested hashs, this Visitor will create the equivalent Tree::Simple hierarchy.
 
 =item B<ToNestedHash>
 
-Given a Tree::Simple heirarchy, this Visitor will create the equivalent tree constructed from nested hashes. 
+Given a Tree::Simple hierarchy, this Visitor will create the equivalent tree constructed from nested hashes.
 
 =back
 
@@ -153,7 +152,7 @@ Given a Tree::Simple heirarchy, this Visitor will create the equivalent tree con
 
 =item B<LoadClassHierarchy>
 
-Given a class name or instance, this Visitor will create a Tree::Simple hierarchy which models the classes inheritance heirarchy.
+Given a class name or instance, this Visitor will create a Tree::Simple hierarchy which models the classes inheritance hierarchy.
 
 =back
 
@@ -167,7 +166,7 @@ Given a Tree::Simple instance this Visitor will return all the descendents recur
 
 =item B<Sort>
 
-This implements a multi-level sort of a Tree::Simple heirarchy.
+This implements a multi-level sort of a Tree::Simple hierarchy.
 
 =item B<VariableDepthClone>
 
@@ -177,7 +176,7 @@ A Visitor for cloning parts of Tree::Simple hierarchy
 
 =head1 BUGS
 
-None that I am aware of. Of course, if you find a bug, let me know, and I will be sure to fix it. 
+None that I am aware of. Of course, if you find a bug, let me know, and I will be sure to fix it.
 
 =head1 CODE COVERAGE
 
@@ -216,6 +215,8 @@ These Visitor classes are meant to work with L<Tree::Simple> hierarchies, you sh
 
 stevan little, E<lt>stevan@iinteractive.comE<gt>
 
+Ron Savage E<lt>ron@savage.net.auE<gt> has taken over maintenance as of V 0.11.
+
 =head1 COPYRIGHT AND LICENSE
 
 Copyright 2004, 2005 by Infinity Interactive, Inc.
@@ -223,7 +224,7 @@ Copyright 2004, 2005 by Infinity Interactive, Inc.
 L<http://www.iinteractive.com>
 
 This library is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself. 
+it under the same terms as Perl itself.
 
 =cut