diff --git a/pom.xml b/pom.xml
index 3ceccf9..dc233f7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -27,7 +27,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>commons-lang</groupId>
   <artifactId>commons-lang</artifactId>
-  <version>2.6</version>
+  <version>2.6-REPACKAGED</version>
   <name>Commons Lang</name>
 
   <inceptionYear>2001</inceptionYear>
diff --git a/src/main/java/org/apache/commons/lang/ArrayUtils.java b/src/main/java/org/apache/commons/lang3/ArrayUtils.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/ArrayUtils.java
rename to src/main/java/org/apache/commons/lang3/ArrayUtils.java
index c5a31ad..e368a7e 100644
--- a/src/main/java/org/apache/commons/lang/ArrayUtils.java
+++ b/src/main/java/org/apache/commons/lang3/ArrayUtils.java
@@ -14,16 +14,16 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 import java.lang.reflect.Array;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.commons.lang.builder.EqualsBuilder;
-import org.apache.commons.lang.builder.HashCodeBuilder;
-import org.apache.commons.lang.builder.ToStringBuilder;
-import org.apache.commons.lang.builder.ToStringStyle;
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
 
 /**
  * <p>Operations on arrays, primitive arrays (like <code>int[]</code>) and
diff --git a/src/main/java/org/apache/commons/lang/BitField.java b/src/main/java/org/apache/commons/lang3/BitField.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/BitField.java
rename to src/main/java/org/apache/commons/lang3/BitField.java
index 4693155..b6e513c 100644
--- a/src/main/java/org/apache/commons/lang/BitField.java
+++ b/src/main/java/org/apache/commons/lang3/BitField.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 /**
  * <p>Operations on bit-mapped fields.</p>
diff --git a/src/main/java/org/apache/commons/lang/BooleanUtils.java b/src/main/java/org/apache/commons/lang3/BooleanUtils.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/BooleanUtils.java
rename to src/main/java/org/apache/commons/lang3/BooleanUtils.java
index cec3b1d..0297c5a 100644
--- a/src/main/java/org/apache/commons/lang/BooleanUtils.java
+++ b/src/main/java/org/apache/commons/lang3/BooleanUtils.java
@@ -14,9 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
-import org.apache.commons.lang.math.NumberUtils;
+import org.apache.commons.lang3.math.NumberUtils;
 
 /**
  * <p>Operations on boolean primitives and Boolean objects.</p>
diff --git a/src/main/java/org/apache/commons/lang/CharEncoding.java b/src/main/java/org/apache/commons/lang3/CharEncoding.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/CharEncoding.java
rename to src/main/java/org/apache/commons/lang3/CharEncoding.java
index 3cb1ba5..c363e29 100644
--- a/src/main/java/org/apache/commons/lang/CharEncoding.java
+++ b/src/main/java/org/apache/commons/lang3/CharEncoding.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 import java.io.UnsupportedEncodingException;
 
diff --git a/src/main/java/org/apache/commons/lang/CharRange.java b/src/main/java/org/apache/commons/lang3/CharRange.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/CharRange.java
rename to src/main/java/org/apache/commons/lang3/CharRange.java
index 3646847..2e16cf9 100644
--- a/src/main/java/org/apache/commons/lang/CharRange.java
+++ b/src/main/java/org/apache/commons/lang3/CharRange.java
@@ -14,13 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 import java.io.Serializable;
 import java.util.Iterator;
 import java.util.NoSuchElementException;
 
-import org.apache.commons.lang.text.StrBuilder;
+import org.apache.commons.lang3.text.StrBuilder;
 
 /**
  * <p>A contiguous range of characters, optionally negated.</p>
diff --git a/src/main/java/org/apache/commons/lang/CharSet.java b/src/main/java/org/apache/commons/lang3/CharSet.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/CharSet.java
rename to src/main/java/org/apache/commons/lang3/CharSet.java
index 3350011..cc45c26 100644
--- a/src/main/java/org/apache/commons/lang/CharSet.java
+++ b/src/main/java/org/apache/commons/lang3/CharSet.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 import java.io.Serializable;
 import java.util.Collections;
diff --git a/src/main/java/org/apache/commons/lang/CharSetUtils.java b/src/main/java/org/apache/commons/lang3/CharSetUtils.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/CharSetUtils.java
rename to src/main/java/org/apache/commons/lang3/CharSetUtils.java
index 06d19e5..d7ff6a8 100644
--- a/src/main/java/org/apache/commons/lang/CharSetUtils.java
+++ b/src/main/java/org/apache/commons/lang3/CharSetUtils.java
@@ -14,9 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
-import org.apache.commons.lang.text.StrBuilder;
+import org.apache.commons.lang3.text.StrBuilder;
 
 /**
  * <p>Operations on <code>CharSet</code>s.</p>
diff --git a/src/main/java/org/apache/commons/lang/CharUtils.java b/src/main/java/org/apache/commons/lang3/CharUtils.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/CharUtils.java
rename to src/main/java/org/apache/commons/lang3/CharUtils.java
index f0b570d..4ab6e45 100644
--- a/src/main/java/org/apache/commons/lang/CharUtils.java
+++ b/src/main/java/org/apache/commons/lang3/CharUtils.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 /**
  * <p>Operations on char primitives and Character objects.</p>
diff --git a/src/main/java/org/apache/commons/lang/ClassUtils.java b/src/main/java/org/apache/commons/lang3/ClassUtils.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/ClassUtils.java
rename to src/main/java/org/apache/commons/lang3/ClassUtils.java
index ebc38f0..58a7784 100644
--- a/src/main/java/org/apache/commons/lang/ClassUtils.java
+++ b/src/main/java/org/apache/commons/lang3/ClassUtils.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
@@ -24,7 +24,7 @@
 import java.util.List;
 import java.util.Map;
 
-import org.apache.commons.lang.text.StrBuilder;
+import org.apache.commons.lang3.text.StrBuilder;
 
 /**
  * <p>Operates on classes without using reflection.</p>
diff --git a/src/main/java/org/apache/commons/lang/Entities.java b/src/main/java/org/apache/commons/lang3/Entities.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/Entities.java
rename to src/main/java/org/apache/commons/lang3/Entities.java
index 63c3eed..2895956 100644
--- a/src/main/java/org/apache/commons/lang/Entities.java
+++ b/src/main/java/org/apache/commons/lang3/Entities.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 import java.io.IOException;
 import java.io.StringWriter;
diff --git a/src/main/java/org/apache/commons/lang/IllegalClassException.java b/src/main/java/org/apache/commons/lang3/IllegalClassException.java
similarity index 98%
rename from src/main/java/org/apache/commons/lang/IllegalClassException.java
rename to src/main/java/org/apache/commons/lang3/IllegalClassException.java
index abf3b73..18da736 100644
--- a/src/main/java/org/apache/commons/lang/IllegalClassException.java
+++ b/src/main/java/org/apache/commons/lang3/IllegalClassException.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 /**
  * <p>Thrown when an object is an instance of an unexpected type (a class or interface).
diff --git a/src/main/java/org/apache/commons/lang/IncompleteArgumentException.java b/src/main/java/org/apache/commons/lang3/IncompleteArgumentException.java
similarity index 98%
rename from src/main/java/org/apache/commons/lang/IncompleteArgumentException.java
rename to src/main/java/org/apache/commons/lang3/IncompleteArgumentException.java
index 9da5787..9667c59 100644
--- a/src/main/java/org/apache/commons/lang/IncompleteArgumentException.java
+++ b/src/main/java/org/apache/commons/lang3/IncompleteArgumentException.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 import java.util.Arrays;
 
diff --git a/src/main/java/org/apache/commons/lang/IntHashMap.java b/src/main/java/org/apache/commons/lang3/IntHashMap.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/IntHashMap.java
rename to src/main/java/org/apache/commons/lang3/IntHashMap.java
index 1f91535..8439969 100644
--- a/src/main/java/org/apache/commons/lang/IntHashMap.java
+++ b/src/main/java/org/apache/commons/lang3/IntHashMap.java
@@ -19,7 +19,7 @@
  * Note: originally released under the GNU LGPL v2.1, 
  * but rereleased by the original author under the ASF license (above).
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 /**
  * <p>A hash map that uses primitive ints for the key rather than objects.</p>
diff --git a/src/main/java/org/apache/commons/lang/LocaleUtils.java b/src/main/java/org/apache/commons/lang3/LocaleUtils.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/LocaleUtils.java
rename to src/main/java/org/apache/commons/lang3/LocaleUtils.java
index 4b31bd4..24875d1 100644
--- a/src/main/java/org/apache/commons/lang/LocaleUtils.java
+++ b/src/main/java/org/apache/commons/lang3/LocaleUtils.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 import java.util.ArrayList;
 import java.util.Arrays;
diff --git a/src/main/java/org/apache/commons/lang/NotImplementedException.java b/src/main/java/org/apache/commons/lang3/NotImplementedException.java
similarity index 98%
rename from src/main/java/org/apache/commons/lang/NotImplementedException.java
rename to src/main/java/org/apache/commons/lang3/NotImplementedException.java
index 9b0abcb..9fdb01d 100644
--- a/src/main/java/org/apache/commons/lang/NotImplementedException.java
+++ b/src/main/java/org/apache/commons/lang3/NotImplementedException.java
@@ -14,13 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 import java.io.PrintStream;
 import java.io.PrintWriter;
 
-import org.apache.commons.lang.exception.Nestable;
-import org.apache.commons.lang.exception.NestableDelegate;
+import org.apache.commons.lang3.exception.Nestable;
+import org.apache.commons.lang3.exception.NestableDelegate;
 
 /**
  * <p>Thrown to indicate that a block of code has not been implemented.
diff --git a/src/main/java/org/apache/commons/lang/NullArgumentException.java b/src/main/java/org/apache/commons/lang3/NullArgumentException.java
similarity index 98%
rename from src/main/java/org/apache/commons/lang/NullArgumentException.java
rename to src/main/java/org/apache/commons/lang3/NullArgumentException.java
index 01c5399..ef817aa 100644
--- a/src/main/java/org/apache/commons/lang/NullArgumentException.java
+++ b/src/main/java/org/apache/commons/lang3/NullArgumentException.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 /**
  * <p>Thrown to indicate that an argument was <code>null</code> and should
diff --git a/src/main/java/org/apache/commons/lang/NumberRange.java b/src/main/java/org/apache/commons/lang3/NumberRange.java
similarity index 98%
rename from src/main/java/org/apache/commons/lang/NumberRange.java
rename to src/main/java/org/apache/commons/lang3/NumberRange.java
index 4f0eb74..8189f02 100644
--- a/src/main/java/org/apache/commons/lang/NumberRange.java
+++ b/src/main/java/org/apache/commons/lang3/NumberRange.java
@@ -14,9 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
-import org.apache.commons.lang.text.StrBuilder;
+import org.apache.commons.lang3.text.StrBuilder;
 
 /**
  * <p>Represents a range of {@link Number} objects.</p>
diff --git a/src/main/java/org/apache/commons/lang/NumberUtils.java b/src/main/java/org/apache/commons/lang3/NumberUtils.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/NumberUtils.java
rename to src/main/java/org/apache/commons/lang3/NumberUtils.java
index 17d4111..380c8a3 100644
--- a/src/main/java/org/apache/commons/lang/NumberUtils.java
+++ b/src/main/java/org/apache/commons/lang3/NumberUtils.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 import java.math.BigDecimal;
 import java.math.BigInteger;
diff --git a/src/main/java/org/apache/commons/lang/ObjectUtils.java b/src/main/java/org/apache/commons/lang3/ObjectUtils.java
similarity index 98%
rename from src/main/java/org/apache/commons/lang/ObjectUtils.java
rename to src/main/java/org/apache/commons/lang3/ObjectUtils.java
index 75ce8d7..b58e01e 100644
--- a/src/main/java/org/apache/commons/lang/ObjectUtils.java
+++ b/src/main/java/org/apache/commons/lang3/ObjectUtils.java
@@ -14,14 +14,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 import java.io.Serializable;
 import java.lang.reflect.Array;
 import java.lang.reflect.InvocationTargetException;
 
-import org.apache.commons.lang.exception.CloneFailedException;
-import org.apache.commons.lang.reflect.MethodUtils;
+import org.apache.commons.lang3.exception.CloneFailedException;
+import org.apache.commons.lang3.reflect.MethodUtils;
 
 /**
  * <p>Operations on <code>Object</code>.</p>
diff --git a/src/main/java/org/apache/commons/lang/RandomStringUtils.java b/src/main/java/org/apache/commons/lang3/RandomStringUtils.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/RandomStringUtils.java
rename to src/main/java/org/apache/commons/lang3/RandomStringUtils.java
index facbd1e..b6e156c 100644
--- a/src/main/java/org/apache/commons/lang/RandomStringUtils.java
+++ b/src/main/java/org/apache/commons/lang3/RandomStringUtils.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 import java.util.Random;
 /**
diff --git a/src/main/java/org/apache/commons/lang/SerializationException.java b/src/main/java/org/apache/commons/lang3/SerializationException.java
similarity index 95%
rename from src/main/java/org/apache/commons/lang/SerializationException.java
rename to src/main/java/org/apache/commons/lang3/SerializationException.java
index 75ac7a0..1e1c763 100644
--- a/src/main/java/org/apache/commons/lang/SerializationException.java
+++ b/src/main/java/org/apache/commons/lang3/SerializationException.java
@@ -14,9 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
-import org.apache.commons.lang.exception.NestableRuntimeException;
+import org.apache.commons.lang3.exception.NestableRuntimeException;
 
 /**
  * <p>Exception thrown when the Serialization process fails.</p>
diff --git a/src/main/java/org/apache/commons/lang/SerializationUtils.java b/src/main/java/org/apache/commons/lang3/SerializationUtils.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/SerializationUtils.java
rename to src/main/java/org/apache/commons/lang3/SerializationUtils.java
index 0d91dd8..34ee5c2 100644
--- a/src/main/java/org/apache/commons/lang/SerializationUtils.java
+++ b/src/main/java/org/apache/commons/lang3/SerializationUtils.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
diff --git a/src/main/java/org/apache/commons/lang/StringEscapeUtils.java b/src/main/java/org/apache/commons/lang3/StringEscapeUtils.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/StringEscapeUtils.java
rename to src/main/java/org/apache/commons/lang3/StringEscapeUtils.java
index 2d1c818..c6613d4 100644
--- a/src/main/java/org/apache/commons/lang/StringEscapeUtils.java
+++ b/src/main/java/org/apache/commons/lang3/StringEscapeUtils.java
@@ -14,15 +14,15 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 import java.io.IOException;
 import java.io.StringWriter;
 import java.io.Writer;
 import java.util.Locale;
 
-import org.apache.commons.lang.exception.NestableRuntimeException;
-import org.apache.commons.lang.text.StrBuilder;
+import org.apache.commons.lang3.exception.NestableRuntimeException;
+import org.apache.commons.lang3.text.StrBuilder;
 
 /**
  * <p>Escapes and unescapes <code>String</code>s for
diff --git a/src/main/java/org/apache/commons/lang/StringUtils.java b/src/main/java/org/apache/commons/lang3/StringUtils.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/StringUtils.java
rename to src/main/java/org/apache/commons/lang3/StringUtils.java
index 4e20872..0bd1912 100644
--- a/src/main/java/org/apache/commons/lang/StringUtils.java
+++ b/src/main/java/org/apache/commons/lang3/StringUtils.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -22,7 +22,7 @@
 import java.util.List;
 import java.util.Locale;
 
-import org.apache.commons.lang.text.StrBuilder;
+import org.apache.commons.lang3.text.StrBuilder;
 
 /**
  * <p>Operations on {@link java.lang.String} that are
diff --git a/src/main/java/org/apache/commons/lang/SystemUtils.java b/src/main/java/org/apache/commons/lang3/SystemUtils.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/SystemUtils.java
rename to src/main/java/org/apache/commons/lang3/SystemUtils.java
index d1d7543..463f5cb 100644
--- a/src/main/java/org/apache/commons/lang/SystemUtils.java
+++ b/src/main/java/org/apache/commons/lang3/SystemUtils.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 import java.io.File;
 
diff --git a/src/main/java/org/apache/commons/lang/UnhandledException.java b/src/main/java/org/apache/commons/lang3/UnhandledException.java
similarity index 95%
rename from src/main/java/org/apache/commons/lang/UnhandledException.java
rename to src/main/java/org/apache/commons/lang3/UnhandledException.java
index 2045499..941c936 100644
--- a/src/main/java/org/apache/commons/lang/UnhandledException.java
+++ b/src/main/java/org/apache/commons/lang3/UnhandledException.java
@@ -14,9 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
-import org.apache.commons.lang.exception.NestableRuntimeException;
+import org.apache.commons.lang3.exception.NestableRuntimeException;
 
 /**
  * <p>Thrown when it is impossible or undesirable to consume or throw a checked exception.</p>
diff --git a/src/main/java/org/apache/commons/lang/Validate.java b/src/main/java/org/apache/commons/lang3/Validate.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/Validate.java
rename to src/main/java/org/apache/commons/lang3/Validate.java
index 050d7b5..6ee20a7 100644
--- a/src/main/java/org/apache/commons/lang/Validate.java
+++ b/src/main/java/org/apache/commons/lang3/Validate.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 import java.util.Collection;
 import java.util.Iterator;
diff --git a/src/main/java/org/apache/commons/lang/WordUtils.java b/src/main/java/org/apache/commons/lang3/WordUtils.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/WordUtils.java
rename to src/main/java/org/apache/commons/lang3/WordUtils.java
index 1e4f51b..cf8fe7a 100644
--- a/src/main/java/org/apache/commons/lang/WordUtils.java
+++ b/src/main/java/org/apache/commons/lang3/WordUtils.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 /**
  * <p>Operations on Strings that contain words.</p>
diff --git a/src/main/java/org/apache/commons/lang/builder/CompareToBuilder.java b/src/main/java/org/apache/commons/lang3/builder/CompareToBuilder.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/builder/CompareToBuilder.java
rename to src/main/java/org/apache/commons/lang3/builder/CompareToBuilder.java
index 28411d3..53b728c 100644
--- a/src/main/java/org/apache/commons/lang/builder/CompareToBuilder.java
+++ b/src/main/java/org/apache/commons/lang3/builder/CompareToBuilder.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.builder;
+package org.apache.commons.lang3.builder;
 
 import java.lang.reflect.AccessibleObject;
 import java.lang.reflect.Field;
@@ -22,8 +22,8 @@
 import java.util.Collection;
 import java.util.Comparator;
 
-import org.apache.commons.lang.ArrayUtils;
-import org.apache.commons.lang.math.NumberUtils;
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.math.NumberUtils;
 
 /** 
  * Assists in implementing {@link java.lang.Comparable#compareTo(Object)} methods.
diff --git a/src/main/java/org/apache/commons/lang/builder/EqualsBuilder.java b/src/main/java/org/apache/commons/lang3/builder/EqualsBuilder.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/builder/EqualsBuilder.java
rename to src/main/java/org/apache/commons/lang3/builder/EqualsBuilder.java
index 55e781a..dee635e 100644
--- a/src/main/java/org/apache/commons/lang/builder/EqualsBuilder.java
+++ b/src/main/java/org/apache/commons/lang3/builder/EqualsBuilder.java
@@ -14,14 +14,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.builder;
+package org.apache.commons.lang3.builder;
 
 import java.lang.reflect.AccessibleObject;
 import java.lang.reflect.Field;
 import java.lang.reflect.Modifier;
 import java.util.Collection;
 
-import org.apache.commons.lang.ArrayUtils;
+import org.apache.commons.lang3.ArrayUtils;
 
 /**
  * <p>Assists in implementing {@link Object#equals(Object)} methods.</p>
diff --git a/src/main/java/org/apache/commons/lang/builder/HashCodeBuilder.java b/src/main/java/org/apache/commons/lang3/builder/HashCodeBuilder.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/builder/HashCodeBuilder.java
rename to src/main/java/org/apache/commons/lang3/builder/HashCodeBuilder.java
index 3e128ab..d597eb5 100644
--- a/src/main/java/org/apache/commons/lang/builder/HashCodeBuilder.java
+++ b/src/main/java/org/apache/commons/lang3/builder/HashCodeBuilder.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.commons.lang.builder;
+package org.apache.commons.lang3.builder;
 
 import java.lang.reflect.AccessibleObject;
 import java.lang.reflect.Field;
@@ -24,7 +24,7 @@
 import java.util.HashSet;
 import java.util.Set;
 
-import org.apache.commons.lang.ArrayUtils;
+import org.apache.commons.lang3.ArrayUtils;
 
 /**
  * <p>
diff --git a/src/main/java/org/apache/commons/lang/builder/IDKey.java b/src/main/java/org/apache/commons/lang3/builder/IDKey.java
similarity index 98%
rename from src/main/java/org/apache/commons/lang/builder/IDKey.java
rename to src/main/java/org/apache/commons/lang3/builder/IDKey.java
index f9800b1..545140e 100644
--- a/src/main/java/org/apache/commons/lang/builder/IDKey.java
+++ b/src/main/java/org/apache/commons/lang3/builder/IDKey.java
@@ -16,7 +16,7 @@
  * 
  */
 
-package org.apache.commons.lang.builder;
+package org.apache.commons.lang3.builder;
 
 // adapted from org.apache.axis.utils.IDKey
 
diff --git a/src/main/java/org/apache/commons/lang/builder/ReflectionToStringBuilder.java b/src/main/java/org/apache/commons/lang3/builder/ReflectionToStringBuilder.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/builder/ReflectionToStringBuilder.java
rename to src/main/java/org/apache/commons/lang3/builder/ReflectionToStringBuilder.java
index ef7285c..c3d8d35 100644
--- a/src/main/java/org/apache/commons/lang/builder/ReflectionToStringBuilder.java
+++ b/src/main/java/org/apache/commons/lang3/builder/ReflectionToStringBuilder.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.commons.lang.builder;
+package org.apache.commons.lang3.builder;
 
 import java.lang.reflect.AccessibleObject;
 import java.lang.reflect.Field;
@@ -24,8 +24,8 @@
 import java.util.Arrays;
 import java.util.Collection;
 
-import org.apache.commons.lang.ArrayUtils;
-import org.apache.commons.lang.ClassUtils;
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.ClassUtils;
 
 /**
  * <p>
diff --git a/src/main/java/org/apache/commons/lang/builder/StandardToStringStyle.java b/src/main/java/org/apache/commons/lang3/builder/StandardToStringStyle.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/builder/StandardToStringStyle.java
rename to src/main/java/org/apache/commons/lang3/builder/StandardToStringStyle.java
index dde2db0..b9ad663 100644
--- a/src/main/java/org/apache/commons/lang/builder/StandardToStringStyle.java
+++ b/src/main/java/org/apache/commons/lang3/builder/StandardToStringStyle.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.builder;
+package org.apache.commons.lang3.builder;
 
 /**
  * <p>Works with {@link ToStringBuilder} to create a <code>toString</code>.</p>
diff --git a/src/main/java/org/apache/commons/lang/builder/ToStringBuilder.java b/src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/builder/ToStringBuilder.java
rename to src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java
index 9fe36b7..e8b1e37 100644
--- a/src/main/java/org/apache/commons/lang/builder/ToStringBuilder.java
+++ b/src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java
@@ -14,10 +14,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.builder;
+package org.apache.commons.lang3.builder;
 
-import org.apache.commons.lang.BooleanUtils;
-import org.apache.commons.lang.ObjectUtils;
+import org.apache.commons.lang3.BooleanUtils;
+import org.apache.commons.lang3.ObjectUtils;
 
 /**
  * <p>Assists in implementing {@link Object#toString()} methods.</p>
diff --git a/src/main/java/org/apache/commons/lang/builder/ToStringStyle.java b/src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/builder/ToStringStyle.java
rename to src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java
index 0c9e60a..48b44be 100644
--- a/src/main/java/org/apache/commons/lang/builder/ToStringStyle.java
+++ b/src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.builder;
+package org.apache.commons.lang3.builder;
 
 import java.io.Serializable;
 import java.lang.reflect.Array;
@@ -22,9 +22,9 @@
 import java.util.Map;
 import java.util.WeakHashMap;
 
-import org.apache.commons.lang.ClassUtils;
-import org.apache.commons.lang.ObjectUtils;
-import org.apache.commons.lang.SystemUtils;
+import org.apache.commons.lang3.ClassUtils;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.SystemUtils;
 
 /**
  * <p>Controls <code>String</code> formatting for {@link ToStringBuilder}.
diff --git a/src/main/java/org/apache/commons/lang/builder/package.html b/src/main/java/org/apache/commons/lang3/builder/package.html
similarity index 100%
rename from src/main/java/org/apache/commons/lang/builder/package.html
rename to src/main/java/org/apache/commons/lang3/builder/package.html
diff --git a/src/main/java/org/apache/commons/lang/enum/Enum.java b/src/main/java/org/apache/commons/lang3/enum/Enum.java
similarity index 98%
rename from src/main/java/org/apache/commons/lang/enum/Enum.java
rename to src/main/java/org/apache/commons/lang3/enum/Enum.java
index ca6c1de..69e900c 100644
--- a/src/main/java/org/apache/commons/lang/enum/Enum.java
+++ b/src/main/java/org/apache/commons/lang3/enum/Enum.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enum;
+package org.apache.commons.lang3.enum;
 
 import java.io.Serializable;
 import java.lang.reflect.InvocationTargetException;
@@ -27,8 +27,8 @@
 import java.util.Map;
 import java.util.WeakHashMap;
 
-import org.apache.commons.lang.ClassUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.ClassUtils;
+import org.apache.commons.lang3.StringUtils;
 
 /**
  * <p>Abstract superclass for type-safe enums.</p>
@@ -226,10 +226,10 @@
  * 
  * <p>For more details, see the 'Nested' test cases.
  * 
- * @deprecated Replaced by {@link org.apache.commons.lang.enums.Enum org.apache.commons.lang.enums.Enum} 
+ * @deprecated Replaced by {@link org.apache.commons.lang3.enums.Enum org.apache.commons.lang.enums.Enum} 
  *          and will be removed in version 3.0. All classes in this package are deprecated and repackaged to 
- *          {@link org.apache.commons.lang.enums} since <code>enum</code> is a Java 1.5 keyword. 
- * @see org.apache.commons.lang.enums.Enum
+ *          {@link org.apache.commons.lang3.enums} since <code>enum</code> is a Java 1.5 keyword. 
+ * @see org.apache.commons.lang3.enums.Enum
  * @author Apache Avalon project
  * @author Apache Software Foundation
  * @author Chris Webb
diff --git a/src/main/java/org/apache/commons/lang/enum/EnumUtils.java b/src/main/java/org/apache/commons/lang3/enum/EnumUtils.java
similarity index 93%
rename from src/main/java/org/apache/commons/lang/enum/EnumUtils.java
rename to src/main/java/org/apache/commons/lang3/enum/EnumUtils.java
index d2492cc..0c3027b 100644
--- a/src/main/java/org/apache/commons/lang/enum/EnumUtils.java
+++ b/src/main/java/org/apache/commons/lang3/enum/EnumUtils.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enum;
+package org.apache.commons.lang3.enum;
 
 import java.util.Iterator;
 import java.util.List;
@@ -23,10 +23,10 @@
 /**
  * <p>Utility class for accessing and manipulating {@link Enum}s.</p>
  *
- * @deprecated Replaced by {@link org.apache.commons.lang.enums.EnumUtils org.apache.commons.lang.enums.EnumUtils} 
+ * @deprecated Replaced by {@link org.apache.commons.lang3.enums.EnumUtils org.apache.commons.lang.enums.EnumUtils} 
  *          and will be removed in version 3.0. All classes in this package are deprecated and repackaged to 
- *          {@link org.apache.commons.lang.enums} since <code>enum</code> is a Java 1.5 keyword. 
- * @see org.apache.commons.lang.enums.EnumUtils
+ *          {@link org.apache.commons.lang3.enums} since <code>enum</code> is a Java 1.5 keyword. 
+ * @see org.apache.commons.lang3.enums.EnumUtils
  * @see Enum
  * @see ValuedEnum
  * @author Apache Software Foundation
diff --git a/src/main/java/org/apache/commons/lang/enum/ValuedEnum.java b/src/main/java/org/apache/commons/lang3/enum/ValuedEnum.java
similarity index 94%
rename from src/main/java/org/apache/commons/lang/enum/ValuedEnum.java
rename to src/main/java/org/apache/commons/lang3/enum/ValuedEnum.java
index 81600df..e6df2fa 100644
--- a/src/main/java/org/apache/commons/lang/enum/ValuedEnum.java
+++ b/src/main/java/org/apache/commons/lang3/enum/ValuedEnum.java
@@ -14,12 +14,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enum;
+package org.apache.commons.lang3.enum;
 
 import java.util.Iterator;
 import java.util.List;
 
-import org.apache.commons.lang.ClassUtils;
+import org.apache.commons.lang3.ClassUtils;
 
 /**
  * <p>Abstract superclass for type-safe enums with integer values suitable
@@ -93,10 +93,10 @@
  * Unfortunately, Java restrictions require these to be coded as shown in each subclass.
  * An alternative choice is to use the {@link EnumUtils} class.</p>
  *
- * @deprecated Replaced by {@link org.apache.commons.lang.enums.ValuedEnum org.apache.commons.lang.enums.ValuedEnum}
+ * @deprecated Replaced by {@link org.apache.commons.lang3.enums.ValuedEnum org.apache.commons.lang.enums.ValuedEnum}
  *          and will be removed in version 3.0. All classes in this package are deprecated and repackaged to 
- *          {@link org.apache.commons.lang.enums} since <code>enum</code> is a Java 1.5 keyword. 
- * @see org.apache.commons.lang.enums.ValuedEnum
+ *          {@link org.apache.commons.lang3.enums} since <code>enum</code> is a Java 1.5 keyword. 
+ * @see org.apache.commons.lang3.enums.ValuedEnum
  * @author Apache Avalon project
  * @author Apache Software Foundation
  * @since 1.0
diff --git a/src/main/java/org/apache/commons/lang/enum/package.html b/src/main/java/org/apache/commons/lang3/enum/package.html
similarity index 100%
rename from src/main/java/org/apache/commons/lang/enum/package.html
rename to src/main/java/org/apache/commons/lang3/enum/package.html
diff --git a/src/main/java/org/apache/commons/lang/enums/Enum.java b/src/main/java/org/apache/commons/lang3/enums/Enum.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/enums/Enum.java
rename to src/main/java/org/apache/commons/lang3/enums/Enum.java
index 55b7524..df7ff2d 100644
--- a/src/main/java/org/apache/commons/lang/enums/Enum.java
+++ b/src/main/java/org/apache/commons/lang3/enums/Enum.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enums;
+package org.apache.commons.lang3.enums;
 
 import java.io.Serializable;
 import java.lang.reflect.InvocationTargetException;
@@ -27,8 +27,8 @@
 import java.util.Map;
 import java.util.WeakHashMap;
 
-import org.apache.commons.lang.ClassUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.ClassUtils;
+import org.apache.commons.lang3.StringUtils;
 
 /**
  * <p>Abstract superclass for type-safe enums.</p>
diff --git a/src/main/java/org/apache/commons/lang/enums/EnumUtils.java b/src/main/java/org/apache/commons/lang3/enums/EnumUtils.java
similarity index 98%
rename from src/main/java/org/apache/commons/lang/enums/EnumUtils.java
rename to src/main/java/org/apache/commons/lang3/enums/EnumUtils.java
index 1a7bc2a..6c8a259 100644
--- a/src/main/java/org/apache/commons/lang/enums/EnumUtils.java
+++ b/src/main/java/org/apache/commons/lang3/enums/EnumUtils.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enums;
+package org.apache.commons.lang3.enums;
 
 import java.util.Iterator;
 import java.util.List;
diff --git a/src/main/java/org/apache/commons/lang/enums/ValuedEnum.java b/src/main/java/org/apache/commons/lang3/enums/ValuedEnum.java
similarity index 98%
rename from src/main/java/org/apache/commons/lang/enums/ValuedEnum.java
rename to src/main/java/org/apache/commons/lang3/enums/ValuedEnum.java
index e20c5ba..6a5e395 100644
--- a/src/main/java/org/apache/commons/lang/enums/ValuedEnum.java
+++ b/src/main/java/org/apache/commons/lang3/enums/ValuedEnum.java
@@ -14,14 +14,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enums;
+package org.apache.commons.lang3.enums;
 
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.Iterator;
 import java.util.List;
 
-import org.apache.commons.lang.ClassUtils;
+import org.apache.commons.lang3.ClassUtils;
 
 /**
  * <p>Abstract superclass for type-safe enums with integer values suitable
diff --git a/src/main/java/org/apache/commons/lang/enums/package.html b/src/main/java/org/apache/commons/lang3/enums/package.html
similarity index 100%
rename from src/main/java/org/apache/commons/lang/enums/package.html
rename to src/main/java/org/apache/commons/lang3/enums/package.html
diff --git a/src/main/java/org/apache/commons/lang/exception/CloneFailedException.java b/src/main/java/org/apache/commons/lang3/exception/CloneFailedException.java
similarity index 97%
rename from src/main/java/org/apache/commons/lang/exception/CloneFailedException.java
rename to src/main/java/org/apache/commons/lang3/exception/CloneFailedException.java
index 09e1665..4f4b2ff 100644
--- a/src/main/java/org/apache/commons/lang/exception/CloneFailedException.java
+++ b/src/main/java/org/apache/commons/lang3/exception/CloneFailedException.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.exception;
+package org.apache.commons.lang3.exception;
 
 /**
  * Exception thrown when a clone cannot be created. In contrast to
diff --git a/src/main/java/org/apache/commons/lang/exception/ExceptionUtils.java b/src/main/java/org/apache/commons/lang3/exception/ExceptionUtils.java
similarity index 98%
rename from src/main/java/org/apache/commons/lang/exception/ExceptionUtils.java
rename to src/main/java/org/apache/commons/lang3/exception/ExceptionUtils.java
index 4b2d209..e9500b6 100644
--- a/src/main/java/org/apache/commons/lang/exception/ExceptionUtils.java
+++ b/src/main/java/org/apache/commons/lang3/exception/ExceptionUtils.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.exception;
+package org.apache.commons.lang3.exception;
 
 import java.io.PrintStream;
 import java.io.PrintWriter;
@@ -28,11 +28,11 @@
 import java.util.List;
 import java.util.StringTokenizer;
 
-import org.apache.commons.lang.ArrayUtils;
-import org.apache.commons.lang.ClassUtils;
-import org.apache.commons.lang.NullArgumentException;
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.lang.SystemUtils;
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.ClassUtils;
+import org.apache.commons.lang3.NullArgumentException;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.SystemUtils;
 
 /**
  * <p>Provides utilities for manipulating and examining 
@@ -252,7 +252,7 @@
      * <p>The method searches for methods with specific names that return a 
      * <code>Throwable</code> object. This will pick up most wrapping exceptions,
      * including those from JDK 1.4, and
-     * {@link org.apache.commons.lang.exception.NestableException NestableException}.
+     * {@link org.apache.commons.lang3.exception.NestableException NestableException}.
      * The method names can be added to using {@link #addCauseMethodName(String)}.</p>
      *
      * <p>The default list searched for are:</p>
@@ -925,7 +925,7 @@
      *
      * <p>Functionality shared between the
      * <code>getStackFrames(Throwable)</code> methods of this and the
-     * {@link org.apache.commons.lang.exception.NestableDelegate} classes.</p>
+     * {@link org.apache.commons.lang3.exception.NestableDelegate} classes.</p>
      *
      * @param stackTrace  a stack trace String
      * @return an array where each element is a line from the argument
diff --git a/src/main/java/org/apache/commons/lang/exception/Nestable.java b/src/main/java/org/apache/commons/lang3/exception/Nestable.java
similarity index 98%
rename from src/main/java/org/apache/commons/lang/exception/Nestable.java
rename to src/main/java/org/apache/commons/lang3/exception/Nestable.java
index da800e2..b78718a 100644
--- a/src/main/java/org/apache/commons/lang/exception/Nestable.java
+++ b/src/main/java/org/apache/commons/lang3/exception/Nestable.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.exception;
+package org.apache.commons.lang3.exception;
 
 import java.io.PrintStream;
 import java.io.PrintWriter;
@@ -166,7 +166,7 @@
     /**
      * Prints the stack trace for this exception only--root cause not
      * included--using the provided writer.  Used by
-     * {@link org.apache.commons.lang.exception.NestableDelegate} to write
+     * {@link org.apache.commons.lang3.exception.NestableDelegate} to write
      * individual stack traces to a buffer.  The implementation of
      * this method should call
      * <code>super.printStackTrace(out);</code> in most cases.
diff --git a/src/main/java/org/apache/commons/lang/exception/NestableDelegate.java b/src/main/java/org/apache/commons/lang3/exception/NestableDelegate.java
similarity index 97%
rename from src/main/java/org/apache/commons/lang/exception/NestableDelegate.java
rename to src/main/java/org/apache/commons/lang3/exception/NestableDelegate.java
index 433dfce..2ff62c6 100644
--- a/src/main/java/org/apache/commons/lang/exception/NestableDelegate.java
+++ b/src/main/java/org/apache/commons/lang3/exception/NestableDelegate.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.exception;
+package org.apache.commons.lang3.exception;
 
 import java.io.PrintStream;
 import java.io.PrintWriter;
@@ -30,9 +30,9 @@
  * <p>A shared implementation of the nestable exception functionality.</p>
  * <p>
  * The code is shared between 
- * {@link org.apache.commons.lang.exception.NestableError NestableError},
- * {@link org.apache.commons.lang.exception.NestableException NestableException} and
- * {@link org.apache.commons.lang.exception.NestableRuntimeException NestableRuntimeException}.
+ * {@link org.apache.commons.lang3.exception.NestableError NestableError},
+ * {@link org.apache.commons.lang3.exception.NestableException NestableException} and
+ * {@link org.apache.commons.lang3.exception.NestableRuntimeException NestableRuntimeException}.
  * </p>
  * 
  * @author Apache Software Foundation
@@ -63,7 +63,7 @@
     /**
      * Holds the reference to the exception or error that we're
      * wrapping (which must be a {@link
-     * org.apache.commons.lang.exception.Nestable} implementation).
+     * org.apache.commons.lang3.exception.Nestable} implementation).
      */
     private Throwable nestable = null;
     
diff --git a/src/main/java/org/apache/commons/lang/exception/NestableError.java b/src/main/java/org/apache/commons/lang3/exception/NestableError.java
similarity index 97%
rename from src/main/java/org/apache/commons/lang/exception/NestableError.java
rename to src/main/java/org/apache/commons/lang3/exception/NestableError.java
index 3b86b8e..0ca735c 100644
--- a/src/main/java/org/apache/commons/lang/exception/NestableError.java
+++ b/src/main/java/org/apache/commons/lang3/exception/NestableError.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.exception;
+package org.apache.commons.lang3.exception;
 
 import java.io.PrintStream;
 import java.io.PrintWriter;
@@ -23,7 +23,7 @@
  * The base class of all errors which can contain other exceptions.
  *
  * @author Daniel L. Rall
- * @see org.apache.commons.lang.exception.NestableException
+ * @see org.apache.commons.lang3.exception.NestableException
  * @since 1.0
  * @version $Id$
  */
diff --git a/src/main/java/org/apache/commons/lang/exception/NestableException.java b/src/main/java/org/apache/commons/lang3/exception/NestableException.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/exception/NestableException.java
rename to src/main/java/org/apache/commons/lang3/exception/NestableException.java
index d03e8f8..861fdff 100644
--- a/src/main/java/org/apache/commons/lang/exception/NestableException.java
+++ b/src/main/java/org/apache/commons/lang3/exception/NestableException.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.exception;
+package org.apache.commons.lang3.exception;
 
 import java.io.PrintStream;
 import java.io.PrintWriter;
diff --git a/src/main/java/org/apache/commons/lang/exception/NestableRuntimeException.java b/src/main/java/org/apache/commons/lang3/exception/NestableRuntimeException.java
similarity index 97%
rename from src/main/java/org/apache/commons/lang/exception/NestableRuntimeException.java
rename to src/main/java/org/apache/commons/lang3/exception/NestableRuntimeException.java
index 7d1c69f..7cda9b3 100644
--- a/src/main/java/org/apache/commons/lang/exception/NestableRuntimeException.java
+++ b/src/main/java/org/apache/commons/lang3/exception/NestableRuntimeException.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.exception;
+package org.apache.commons.lang3.exception;
 
 import java.io.PrintStream;
 import java.io.PrintWriter;
@@ -23,7 +23,7 @@
  * The base class of all runtime exceptions which can contain other
  * exceptions.
  *
- * @see org.apache.commons.lang.exception.NestableException
+ * @see org.apache.commons.lang3.exception.NestableException
  * @author <a href="mailto:Rafal.Krzewski@e-point.pl">Rafal Krzewski</a>
  * @author Daniel L. Rall
  * @author <a href="mailto:knielsen@apache.org">Kasper Nielsen</a>
diff --git a/src/main/java/org/apache/commons/lang/exception/package.html b/src/main/java/org/apache/commons/lang3/exception/package.html
similarity index 100%
rename from src/main/java/org/apache/commons/lang/exception/package.html
rename to src/main/java/org/apache/commons/lang3/exception/package.html
diff --git a/src/main/java/org/apache/commons/lang/math/DoubleRange.java b/src/main/java/org/apache/commons/lang3/math/DoubleRange.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/math/DoubleRange.java
rename to src/main/java/org/apache/commons/lang3/math/DoubleRange.java
index b021407..8776afa 100644
--- a/src/main/java/org/apache/commons/lang/math/DoubleRange.java
+++ b/src/main/java/org/apache/commons/lang3/math/DoubleRange.java
@@ -14,11 +14,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.math;
+package org.apache.commons.lang3.math;
 
 import java.io.Serializable;
 
-import org.apache.commons.lang.text.StrBuilder;
+import org.apache.commons.lang3.text.StrBuilder;
 
 /**
  * <p><code>DoubleRange</code> represents an inclusive range of <code>double</code>s.</p>
diff --git a/src/main/java/org/apache/commons/lang/math/FloatRange.java b/src/main/java/org/apache/commons/lang3/math/FloatRange.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/math/FloatRange.java
rename to src/main/java/org/apache/commons/lang3/math/FloatRange.java
index ef91b6b..8ba52b6 100644
--- a/src/main/java/org/apache/commons/lang/math/FloatRange.java
+++ b/src/main/java/org/apache/commons/lang3/math/FloatRange.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.math;
+package org.apache.commons.lang3.math;
 
 import java.io.Serializable;
 
diff --git a/src/main/java/org/apache/commons/lang/math/Fraction.java b/src/main/java/org/apache/commons/lang3/math/Fraction.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/math/Fraction.java
rename to src/main/java/org/apache/commons/lang3/math/Fraction.java
index 0eab43c..b9c7fc6 100644
--- a/src/main/java/org/apache/commons/lang/math/Fraction.java
+++ b/src/main/java/org/apache/commons/lang3/math/Fraction.java
@@ -14,11 +14,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.math;
+package org.apache.commons.lang3.math;
 
 import java.math.BigInteger;
 
-import org.apache.commons.lang.text.StrBuilder;
+import org.apache.commons.lang3.text.StrBuilder;
 
 /**
  * <p><code>Fraction</code> is a <code>Number</code> implementation that
diff --git a/src/main/java/org/apache/commons/lang/math/IEEE754rUtils.java b/src/main/java/org/apache/commons/lang3/math/IEEE754rUtils.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/math/IEEE754rUtils.java
rename to src/main/java/org/apache/commons/lang3/math/IEEE754rUtils.java
index c82f8bf..8d29925 100644
--- a/src/main/java/org/apache/commons/lang/math/IEEE754rUtils.java
+++ b/src/main/java/org/apache/commons/lang3/math/IEEE754rUtils.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.math;
+package org.apache.commons.lang3.math;
 
 /**
  * <p>Provides IEEE-754r variants of NumberUtils methods. </p>
diff --git a/src/main/java/org/apache/commons/lang/math/IntRange.java b/src/main/java/org/apache/commons/lang3/math/IntRange.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/math/IntRange.java
rename to src/main/java/org/apache/commons/lang3/math/IntRange.java
index 7bf02b7..cfe98d9 100644
--- a/src/main/java/org/apache/commons/lang/math/IntRange.java
+++ b/src/main/java/org/apache/commons/lang3/math/IntRange.java
@@ -14,11 +14,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.math;
+package org.apache.commons.lang3.math;
 
 import java.io.Serializable;
 
-import org.apache.commons.lang.text.StrBuilder;
+import org.apache.commons.lang3.text.StrBuilder;
 
 /**
  * <p><code>IntRange</code> represents an inclusive range of <code>int</code>s.</p>
diff --git a/src/main/java/org/apache/commons/lang/math/JVMRandom.java b/src/main/java/org/apache/commons/lang3/math/JVMRandom.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/math/JVMRandom.java
rename to src/main/java/org/apache/commons/lang3/math/JVMRandom.java
index d0f2922..368bb5c 100644
--- a/src/main/java/org/apache/commons/lang/math/JVMRandom.java
+++ b/src/main/java/org/apache/commons/lang3/math/JVMRandom.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.commons.lang.math;
+package org.apache.commons.lang3.math;
 
 import java.util.Random;
 
diff --git a/src/main/java/org/apache/commons/lang/math/LongRange.java b/src/main/java/org/apache/commons/lang3/math/LongRange.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/math/LongRange.java
rename to src/main/java/org/apache/commons/lang3/math/LongRange.java
index 7d73ee2..faaf599 100644
--- a/src/main/java/org/apache/commons/lang/math/LongRange.java
+++ b/src/main/java/org/apache/commons/lang3/math/LongRange.java
@@ -14,11 +14,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.math;
+package org.apache.commons.lang3.math;
 
 import java.io.Serializable;
 
-import org.apache.commons.lang.text.StrBuilder;
+import org.apache.commons.lang3.text.StrBuilder;
 
 /**
  * <p><code>LongRange</code> represents an inclusive range of <code>long</code>s.</p>
diff --git a/src/main/java/org/apache/commons/lang/math/NumberRange.java b/src/main/java/org/apache/commons/lang3/math/NumberRange.java
similarity index 98%
rename from src/main/java/org/apache/commons/lang/math/NumberRange.java
rename to src/main/java/org/apache/commons/lang3/math/NumberRange.java
index 359cf8b..62cec92 100644
--- a/src/main/java/org/apache/commons/lang/math/NumberRange.java
+++ b/src/main/java/org/apache/commons/lang3/math/NumberRange.java
@@ -14,11 +14,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.math;
+package org.apache.commons.lang3.math;
 
 import java.io.Serializable;
 
-import org.apache.commons.lang.text.StrBuilder;
+import org.apache.commons.lang3.text.StrBuilder;
 
 /**
  * <p><code>NumberRange</code> represents an inclusive range of 
diff --git a/src/main/java/org/apache/commons/lang/math/NumberUtils.java b/src/main/java/org/apache/commons/lang3/math/NumberUtils.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/math/NumberUtils.java
rename to src/main/java/org/apache/commons/lang3/math/NumberUtils.java
index a1c25e7..5d27ad1 100644
--- a/src/main/java/org/apache/commons/lang/math/NumberUtils.java
+++ b/src/main/java/org/apache/commons/lang3/math/NumberUtils.java
@@ -14,12 +14,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.math;
+package org.apache.commons.lang3.math;
 
 import java.math.BigDecimal;
 import java.math.BigInteger;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 
 /**
  * <p>Provides extra functionality for Java Number classes.</p>
diff --git a/src/main/java/org/apache/commons/lang/math/RandomUtils.java b/src/main/java/org/apache/commons/lang3/math/RandomUtils.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/math/RandomUtils.java
rename to src/main/java/org/apache/commons/lang3/math/RandomUtils.java
index a556f1c..4e99ce7 100644
--- a/src/main/java/org/apache/commons/lang/math/RandomUtils.java
+++ b/src/main/java/org/apache/commons/lang3/math/RandomUtils.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.commons.lang.math;
+package org.apache.commons.lang3.math;
 
 import java.util.Random;
 
diff --git a/src/main/java/org/apache/commons/lang/math/Range.java b/src/main/java/org/apache/commons/lang3/math/Range.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/math/Range.java
rename to src/main/java/org/apache/commons/lang3/math/Range.java
index 7e1ee9a..3e56b20 100644
--- a/src/main/java/org/apache/commons/lang/math/Range.java
+++ b/src/main/java/org/apache/commons/lang3/math/Range.java
@@ -14,9 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.math;
+package org.apache.commons.lang3.math;
 
-import org.apache.commons.lang.text.StrBuilder;
+import org.apache.commons.lang3.text.StrBuilder;
 
 /**
  * <p><code>Range</code> represents a range of numbers of the same type.</p>
diff --git a/src/main/java/org/apache/commons/lang/math/package.html b/src/main/java/org/apache/commons/lang3/math/package.html
similarity index 100%
rename from src/main/java/org/apache/commons/lang/math/package.html
rename to src/main/java/org/apache/commons/lang3/math/package.html
diff --git a/src/main/java/org/apache/commons/lang/mutable/Mutable.java b/src/main/java/org/apache/commons/lang3/mutable/Mutable.java
similarity index 97%
rename from src/main/java/org/apache/commons/lang/mutable/Mutable.java
rename to src/main/java/org/apache/commons/lang3/mutable/Mutable.java
index c2f3c71..39b6443 100644
--- a/src/main/java/org/apache/commons/lang/mutable/Mutable.java
+++ b/src/main/java/org/apache/commons/lang3/mutable/Mutable.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.commons.lang.mutable;
+package org.apache.commons.lang3.mutable;
 
 /**
  * Provides mutable access to a value.
diff --git a/src/main/java/org/apache/commons/lang/mutable/MutableBoolean.java b/src/main/java/org/apache/commons/lang3/mutable/MutableBoolean.java
similarity index 98%
rename from src/main/java/org/apache/commons/lang/mutable/MutableBoolean.java
rename to src/main/java/org/apache/commons/lang3/mutable/MutableBoolean.java
index 8cbc1ad..76c08b7 100644
--- a/src/main/java/org/apache/commons/lang/mutable/MutableBoolean.java
+++ b/src/main/java/org/apache/commons/lang3/mutable/MutableBoolean.java
@@ -15,11 +15,11 @@
  * limitations under the License.
  */
 
-package org.apache.commons.lang.mutable;
+package org.apache.commons.lang3.mutable;
 
 import java.io.Serializable;
 
-import org.apache.commons.lang.BooleanUtils;
+import org.apache.commons.lang3.BooleanUtils;
 
 /**
  * A mutable <code>boolean</code> wrapper.
diff --git a/src/main/java/org/apache/commons/lang/mutable/MutableByte.java b/src/main/java/org/apache/commons/lang3/mutable/MutableByte.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/mutable/MutableByte.java
rename to src/main/java/org/apache/commons/lang3/mutable/MutableByte.java
index 3464187..df5d495 100644
--- a/src/main/java/org/apache/commons/lang/mutable/MutableByte.java
+++ b/src/main/java/org/apache/commons/lang3/mutable/MutableByte.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.mutable;
+package org.apache.commons.lang3.mutable;
 
 /**
  * A mutable <code>byte</code> wrapper.
diff --git a/src/main/java/org/apache/commons/lang/mutable/MutableDouble.java b/src/main/java/org/apache/commons/lang3/mutable/MutableDouble.java
similarity index 98%
rename from src/main/java/org/apache/commons/lang/mutable/MutableDouble.java
rename to src/main/java/org/apache/commons/lang3/mutable/MutableDouble.java
index 604f921..ea307f9 100644
--- a/src/main/java/org/apache/commons/lang/mutable/MutableDouble.java
+++ b/src/main/java/org/apache/commons/lang3/mutable/MutableDouble.java
@@ -14,9 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.mutable;
+package org.apache.commons.lang3.mutable;
 
-import org.apache.commons.lang.math.NumberUtils;
+import org.apache.commons.lang3.math.NumberUtils;
 
 /**
  * A mutable <code>double</code> wrapper.
diff --git a/src/main/java/org/apache/commons/lang/mutable/MutableFloat.java b/src/main/java/org/apache/commons/lang3/mutable/MutableFloat.java
similarity index 98%
rename from src/main/java/org/apache/commons/lang/mutable/MutableFloat.java
rename to src/main/java/org/apache/commons/lang3/mutable/MutableFloat.java
index 105b8d1..3ce12ae 100644
--- a/src/main/java/org/apache/commons/lang/mutable/MutableFloat.java
+++ b/src/main/java/org/apache/commons/lang3/mutable/MutableFloat.java
@@ -14,9 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.mutable;
+package org.apache.commons.lang3.mutable;
 
-import org.apache.commons.lang.math.NumberUtils;
+import org.apache.commons.lang3.math.NumberUtils;
 
 /**
  * A mutable <code>float</code> wrapper.
diff --git a/src/main/java/org/apache/commons/lang/mutable/MutableInt.java b/src/main/java/org/apache/commons/lang3/mutable/MutableInt.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/mutable/MutableInt.java
rename to src/main/java/org/apache/commons/lang3/mutable/MutableInt.java
index 1e3b1a6..927792f 100644
--- a/src/main/java/org/apache/commons/lang/mutable/MutableInt.java
+++ b/src/main/java/org/apache/commons/lang3/mutable/MutableInt.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.mutable;
+package org.apache.commons.lang3.mutable;
 
 /**
  * A mutable <code>int</code> wrapper.
diff --git a/src/main/java/org/apache/commons/lang/mutable/MutableLong.java b/src/main/java/org/apache/commons/lang3/mutable/MutableLong.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/mutable/MutableLong.java
rename to src/main/java/org/apache/commons/lang3/mutable/MutableLong.java
index 9284745..40cb3e3 100644
--- a/src/main/java/org/apache/commons/lang/mutable/MutableLong.java
+++ b/src/main/java/org/apache/commons/lang3/mutable/MutableLong.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.mutable;
+package org.apache.commons.lang3.mutable;
 
 /**
  * A mutable <code>long</code> wrapper.
diff --git a/src/main/java/org/apache/commons/lang/mutable/MutableObject.java b/src/main/java/org/apache/commons/lang3/mutable/MutableObject.java
similarity index 98%
rename from src/main/java/org/apache/commons/lang/mutable/MutableObject.java
rename to src/main/java/org/apache/commons/lang3/mutable/MutableObject.java
index 3843f33..be97078 100644
--- a/src/main/java/org/apache/commons/lang/mutable/MutableObject.java
+++ b/src/main/java/org/apache/commons/lang3/mutable/MutableObject.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.commons.lang.mutable;
+package org.apache.commons.lang3.mutable;
 
 import java.io.Serializable;
 
diff --git a/src/main/java/org/apache/commons/lang/mutable/MutableShort.java b/src/main/java/org/apache/commons/lang3/mutable/MutableShort.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/mutable/MutableShort.java
rename to src/main/java/org/apache/commons/lang3/mutable/MutableShort.java
index a4fd2c5..ed81ec8 100644
--- a/src/main/java/org/apache/commons/lang/mutable/MutableShort.java
+++ b/src/main/java/org/apache/commons/lang3/mutable/MutableShort.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.mutable;
+package org.apache.commons.lang3.mutable;
 
 /**
  * A mutable <code>short</code> wrapper.
diff --git a/src/main/java/org/apache/commons/lang/mutable/package.html b/src/main/java/org/apache/commons/lang3/mutable/package.html
similarity index 100%
rename from src/main/java/org/apache/commons/lang/mutable/package.html
rename to src/main/java/org/apache/commons/lang3/mutable/package.html
diff --git a/src/main/java/org/apache/commons/lang/overview.html b/src/main/java/org/apache/commons/lang3/overview.html
similarity index 100%
rename from src/main/java/org/apache/commons/lang/overview.html
rename to src/main/java/org/apache/commons/lang3/overview.html
diff --git a/src/main/java/org/apache/commons/lang/package.html b/src/main/java/org/apache/commons/lang3/package.html
similarity index 100%
rename from src/main/java/org/apache/commons/lang/package.html
rename to src/main/java/org/apache/commons/lang3/package.html
diff --git a/src/main/java/org/apache/commons/lang/reflect/ConstructorUtils.java b/src/main/java/org/apache/commons/lang3/reflect/ConstructorUtils.java
similarity index 98%
rename from src/main/java/org/apache/commons/lang/reflect/ConstructorUtils.java
rename to src/main/java/org/apache/commons/lang3/reflect/ConstructorUtils.java
index 841d69c..9f8b642 100644
--- a/src/main/java/org/apache/commons/lang/reflect/ConstructorUtils.java
+++ b/src/main/java/org/apache/commons/lang3/reflect/ConstructorUtils.java
@@ -14,14 +14,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.reflect;
+package org.apache.commons.lang3.reflect;
 
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Modifier;
 
-import org.apache.commons.lang.ArrayUtils;
-import org.apache.commons.lang.ClassUtils;
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.ClassUtils;
 
 /**
  * <p> Utility reflection methods focussed on constructors, modelled after
diff --git a/src/main/java/org/apache/commons/lang/reflect/FieldUtils.java b/src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/reflect/FieldUtils.java
rename to src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java
index f170816..bb27ab1 100644
--- a/src/main/java/org/apache/commons/lang/reflect/FieldUtils.java
+++ b/src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java
@@ -14,13 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.reflect;
+package org.apache.commons.lang3.reflect;
 
 import java.lang.reflect.Field;
 import java.lang.reflect.Modifier;
 import java.util.Iterator;
 
-import org.apache.commons.lang.ClassUtils;
+import org.apache.commons.lang3.ClassUtils;
 
 /**
  * Utilities for working with fields by reflection. Adapted and refactored
diff --git a/src/main/java/org/apache/commons/lang/reflect/MemberUtils.java b/src/main/java/org/apache/commons/lang3/reflect/MemberUtils.java
similarity index 97%
rename from src/main/java/org/apache/commons/lang/reflect/MemberUtils.java
rename to src/main/java/org/apache/commons/lang3/reflect/MemberUtils.java
index 12efa7e..205e3ec 100644
--- a/src/main/java/org/apache/commons/lang/reflect/MemberUtils.java
+++ b/src/main/java/org/apache/commons/lang3/reflect/MemberUtils.java
@@ -14,16 +14,16 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.reflect;
+package org.apache.commons.lang3.reflect;
 
 import java.lang.reflect.AccessibleObject;
 import java.lang.reflect.Member;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
 
-import org.apache.commons.lang.ArrayUtils;
-import org.apache.commons.lang.ClassUtils;
-import org.apache.commons.lang.SystemUtils;
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.ClassUtils;
+import org.apache.commons.lang3.SystemUtils;
 
 /**
  * Contains common code for working with Methods/Constructors, extracted and
diff --git a/src/main/java/org/apache/commons/lang/reflect/MethodUtils.java b/src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/reflect/MethodUtils.java
rename to src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java
index 31d6667..faf0e10 100644
--- a/src/main/java/org/apache/commons/lang/reflect/MethodUtils.java
+++ b/src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java
@@ -14,14 +14,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.reflect;
+package org.apache.commons.lang3.reflect;
 
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
 
-import org.apache.commons.lang.ArrayUtils;
-import org.apache.commons.lang.ClassUtils;
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.ClassUtils;
 
 /**
  * <p> Utility reflection methods focused on methods, originally from Commons BeanUtils.
diff --git a/src/main/java/org/apache/commons/lang/reflect/package.html b/src/main/java/org/apache/commons/lang3/reflect/package.html
similarity index 100%
rename from src/main/java/org/apache/commons/lang/reflect/package.html
rename to src/main/java/org/apache/commons/lang3/reflect/package.html
diff --git a/src/main/java/org/apache/commons/lang/text/CompositeFormat.java b/src/main/java/org/apache/commons/lang3/text/CompositeFormat.java
similarity index 98%
rename from src/main/java/org/apache/commons/lang/text/CompositeFormat.java
rename to src/main/java/org/apache/commons/lang3/text/CompositeFormat.java
index 029ef0b..24ecc5c 100644
--- a/src/main/java/org/apache/commons/lang/text/CompositeFormat.java
+++ b/src/main/java/org/apache/commons/lang3/text/CompositeFormat.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.text;
+package org.apache.commons.lang3.text;
 
 import java.text.FieldPosition;
 import java.text.Format;
diff --git a/src/main/java/org/apache/commons/lang/text/ExtendedMessageFormat.java b/src/main/java/org/apache/commons/lang3/text/ExtendedMessageFormat.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/text/ExtendedMessageFormat.java
rename to src/main/java/org/apache/commons/lang3/text/ExtendedMessageFormat.java
index 1afa241..6216bfb 100644
--- a/src/main/java/org/apache/commons/lang/text/ExtendedMessageFormat.java
+++ b/src/main/java/org/apache/commons/lang3/text/ExtendedMessageFormat.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.text;
+package org.apache.commons.lang3.text;
 
 import java.text.Format;
 import java.text.MessageFormat;
@@ -25,8 +25,8 @@
 import java.util.Locale;
 import java.util.Map;
 
-import org.apache.commons.lang.ObjectUtils;
-import org.apache.commons.lang.Validate;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.Validate;
 
 /**
  * Extends <code>java.text.MessageFormat</code> to allow pluggable/additional formatting
diff --git a/src/main/java/org/apache/commons/lang/text/FormatFactory.java b/src/main/java/org/apache/commons/lang3/text/FormatFactory.java
similarity index 97%
rename from src/main/java/org/apache/commons/lang/text/FormatFactory.java
rename to src/main/java/org/apache/commons/lang3/text/FormatFactory.java
index 2c72d55..6444a82 100644
--- a/src/main/java/org/apache/commons/lang/text/FormatFactory.java
+++ b/src/main/java/org/apache/commons/lang3/text/FormatFactory.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.text;
+package org.apache.commons.lang3.text;
 
 import java.text.Format;
 import java.util.Locale;
diff --git a/src/main/java/org/apache/commons/lang/text/StrBuilder.java b/src/main/java/org/apache/commons/lang3/text/StrBuilder.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/text/StrBuilder.java
rename to src/main/java/org/apache/commons/lang3/text/StrBuilder.java
index 0b62774..db6fc06 100644
--- a/src/main/java/org/apache/commons/lang/text/StrBuilder.java
+++ b/src/main/java/org/apache/commons/lang3/text/StrBuilder.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.text;
+package org.apache.commons.lang3.text;
 
 import java.io.Reader;
 import java.io.Writer;
@@ -22,8 +22,8 @@
 import java.util.Iterator;
 import java.util.List;
 
-import org.apache.commons.lang.ArrayUtils;
-import org.apache.commons.lang.SystemUtils;
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.SystemUtils;
 
 /**
  * Builds a string from constituent parts providing a more flexible and powerful API
diff --git a/src/main/java/org/apache/commons/lang/text/StrLookup.java b/src/main/java/org/apache/commons/lang3/text/StrLookup.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/text/StrLookup.java
rename to src/main/java/org/apache/commons/lang3/text/StrLookup.java
index 0eb08c3..7feb3f5 100644
--- a/src/main/java/org/apache/commons/lang/text/StrLookup.java
+++ b/src/main/java/org/apache/commons/lang3/text/StrLookup.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.text;
+package org.apache.commons.lang3.text;
 
 import java.util.Map;
 
diff --git a/src/main/java/org/apache/commons/lang/text/StrMatcher.java b/src/main/java/org/apache/commons/lang3/text/StrMatcher.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/text/StrMatcher.java
rename to src/main/java/org/apache/commons/lang3/text/StrMatcher.java
index 0580dec..5f21255 100644
--- a/src/main/java/org/apache/commons/lang/text/StrMatcher.java
+++ b/src/main/java/org/apache/commons/lang3/text/StrMatcher.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.text;
+package org.apache.commons.lang3.text;
 
 import java.util.Arrays;
 
diff --git a/src/main/java/org/apache/commons/lang/text/StrSubstitutor.java b/src/main/java/org/apache/commons/lang3/text/StrSubstitutor.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/text/StrSubstitutor.java
rename to src/main/java/org/apache/commons/lang3/text/StrSubstitutor.java
index 89a5b50..40d404a 100644
--- a/src/main/java/org/apache/commons/lang/text/StrSubstitutor.java
+++ b/src/main/java/org/apache/commons/lang3/text/StrSubstitutor.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.text;
+package org.apache.commons.lang3.text;
 
 import java.util.ArrayList;
 import java.util.Enumeration;
diff --git a/src/main/java/org/apache/commons/lang/text/StrTokenizer.java b/src/main/java/org/apache/commons/lang3/text/StrTokenizer.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/text/StrTokenizer.java
rename to src/main/java/org/apache/commons/lang3/text/StrTokenizer.java
index a306776..fee0af9 100644
--- a/src/main/java/org/apache/commons/lang/text/StrTokenizer.java
+++ b/src/main/java/org/apache/commons/lang3/text/StrTokenizer.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.text;
+package org.apache.commons.lang3.text;
 
 import java.util.ArrayList;
 import java.util.Collections;
diff --git a/src/main/java/org/apache/commons/lang/text/package.html b/src/main/java/org/apache/commons/lang3/text/package.html
similarity index 100%
rename from src/main/java/org/apache/commons/lang/text/package.html
rename to src/main/java/org/apache/commons/lang3/text/package.html
diff --git a/src/main/java/org/apache/commons/lang/time/DateFormatUtils.java b/src/main/java/org/apache/commons/lang3/time/DateFormatUtils.java
similarity index 98%
rename from src/main/java/org/apache/commons/lang/time/DateFormatUtils.java
rename to src/main/java/org/apache/commons/lang3/time/DateFormatUtils.java
index 3d29b4e..2a01f30 100644
--- a/src/main/java/org/apache/commons/lang/time/DateFormatUtils.java
+++ b/src/main/java/org/apache/commons/lang3/time/DateFormatUtils.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.time;
+package org.apache.commons.lang3.time;
 
 import java.util.Calendar;
 import java.util.Date;
@@ -25,7 +25,7 @@
  * <p>Date and time formatting utilities and constants.</p>
  *
  * <p>Formatting is performed using the
- * {@link org.apache.commons.lang.time.FastDateFormat} class.</p>
+ * {@link org.apache.commons.lang3.time.FastDateFormat} class.</p>
  *
  * @author Apache Software Foundation
  * @author Apache Ant - DateUtils
diff --git a/src/main/java/org/apache/commons/lang/time/DateUtils.java b/src/main/java/org/apache/commons/lang3/time/DateUtils.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/time/DateUtils.java
rename to src/main/java/org/apache/commons/lang3/time/DateUtils.java
index c62d93c..84075f2 100644
--- a/src/main/java/org/apache/commons/lang/time/DateUtils.java
+++ b/src/main/java/org/apache/commons/lang3/time/DateUtils.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.time;
+package org.apache.commons.lang3.time;
 
 import java.text.ParseException;
 import java.text.ParsePosition;
@@ -25,7 +25,7 @@
 import java.util.NoSuchElementException;
 import java.util.TimeZone;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 
 /**
  * <p>A suite of utilities surrounding the use of the
diff --git a/src/main/java/org/apache/commons/lang/time/DurationFormatUtils.java b/src/main/java/org/apache/commons/lang3/time/DurationFormatUtils.java
similarity index 98%
rename from src/main/java/org/apache/commons/lang/time/DurationFormatUtils.java
rename to src/main/java/org/apache/commons/lang3/time/DurationFormatUtils.java
index cd2abc4..7aab9f7 100644
--- a/src/main/java/org/apache/commons/lang/time/DurationFormatUtils.java
+++ b/src/main/java/org/apache/commons/lang3/time/DurationFormatUtils.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.time;
+package org.apache.commons.lang3.time;
 
 import java.util.ArrayList;
 import java.util.Calendar;
@@ -22,8 +22,8 @@
 import java.util.GregorianCalendar;
 import java.util.TimeZone;
 
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.lang.text.StrBuilder;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.text.StrBuilder;
 
 /**
  * <p>Duration formatting utilities and constants. The following table describes the tokens 
@@ -63,7 +63,7 @@
      * <p>Pattern used with <code>FastDateFormat</code> and <code>SimpleDateFormat</code>
      * for the ISO8601 period format used in durations.</p>
      * 
-     * @see org.apache.commons.lang.time.FastDateFormat
+     * @see org.apache.commons.lang3.time.FastDateFormat
      * @see java.text.SimpleDateFormat
      */
     public static final String ISO_EXTENDED_FORMAT_PATTERN = "'P'yyyy'Y'M'M'd'DT'H'H'm'M's.S'S'";
diff --git a/src/main/java/org/apache/commons/lang/time/FastDateFormat.java b/src/main/java/org/apache/commons/lang3/time/FastDateFormat.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/time/FastDateFormat.java
rename to src/main/java/org/apache/commons/lang3/time/FastDateFormat.java
index ec0646f..237a6ca 100644
--- a/src/main/java/org/apache/commons/lang/time/FastDateFormat.java
+++ b/src/main/java/org/apache/commons/lang3/time/FastDateFormat.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.time;
+package org.apache.commons.lang3.time;
 
 import java.io.IOException;
 import java.io.ObjectInputStream;
@@ -34,8 +34,8 @@
 import java.util.Map;
 import java.util.TimeZone;
 
-import org.apache.commons.lang.Validate;
-import org.apache.commons.lang.text.StrBuilder;
+import org.apache.commons.lang3.Validate;
+import org.apache.commons.lang3.text.StrBuilder;
 
 /**
  * <p>FastDateFormat is a fast and thread-safe version of
diff --git a/src/main/java/org/apache/commons/lang/time/StopWatch.java b/src/main/java/org/apache/commons/lang3/time/StopWatch.java
similarity index 99%
rename from src/main/java/org/apache/commons/lang/time/StopWatch.java
rename to src/main/java/org/apache/commons/lang3/time/StopWatch.java
index 444f7c7..545d903 100644
--- a/src/main/java/org/apache/commons/lang/time/StopWatch.java
+++ b/src/main/java/org/apache/commons/lang3/time/StopWatch.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.commons.lang.time;
+package org.apache.commons.lang3.time;
 
 /**
  * <p>
diff --git a/src/main/java/org/apache/commons/lang/time/package.html b/src/main/java/org/apache/commons/lang3/time/package.html
similarity index 100%
rename from src/main/java/org/apache/commons/lang/time/package.html
rename to src/main/java/org/apache/commons/lang3/time/package.html
diff --git a/src/test/java/org/apache/commons/lang/enum/Broken1Enum.java b/src/test/java/org/apache/commons/lang/enum/Broken1Enum.java
deleted file mode 100644
index 3f19b82..0000000
--- a/src/test/java/org/apache/commons/lang/enum/Broken1Enum.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.lang.enum;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Broken color enumeration.
- *
- * @author Apache Software Foundation
- * @version $Id$
- */
-public final class Broken1Enum extends Enum {
-    public static final Broken1Enum RED = new Broken1Enum("Red");
-    public static final Broken1Enum GREEN = new Broken1Enum("Green");
-    public static final Broken1Enum GREENISH = new Broken1Enum("Green");  // duplicate not allowed
-
-    private Broken1Enum(String color) {
-        super(color);
-    }
-
-    public static Broken1Enum getEnum(String color) {
-        return (Broken1Enum) getEnum(Broken1Enum.class, color);
-    }
-
-    public static Map getEnumMap() {
-        return getEnumMap(Broken1Enum.class);
-    }
-
-    public static List getEnumList() {
-        return getEnumList(Broken1Enum.class);
-    }
-
-    public static Iterator iterator() {
-        return iterator(Broken1Enum.class);
-    }
-}
diff --git a/src/test/java/org/apache/commons/lang/enum/Broken2Enum.java b/src/test/java/org/apache/commons/lang/enum/Broken2Enum.java
deleted file mode 100644
index 7452a4d..0000000
--- a/src/test/java/org/apache/commons/lang/enum/Broken2Enum.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.lang.enum;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Broken color enumeration.
- *
- * @author Apache Software Foundation
- * @version $Id$
- */
-public final class Broken2Enum extends Enum {
-    public static final Broken2Enum RED = new Broken2Enum("Red");
-    public static final Broken2Enum GREEN = new Broken2Enum("Green");
-    public static final Broken2Enum BLUE = new Broken2Enum("");  // blank not allowed
-
-    private Broken2Enum(String color) {
-        super(color);
-    }
-
-    public static Broken2Enum getEnum(String color) {
-        return (Broken2Enum) getEnum(Broken2Enum.class, color);
-    }
-
-    public static Map getEnumMap() {
-        return getEnumMap(Broken2Enum.class);
-    }
-
-    public static List getEnumList() {
-        return getEnumList(Broken2Enum.class);
-    }
-
-    public static Iterator iterator() {
-        return iterator(Broken2Enum.class);
-    }
-}
diff --git a/src/test/java/org/apache/commons/lang/enum/Broken3Enum.java b/src/test/java/org/apache/commons/lang/enum/Broken3Enum.java
deleted file mode 100644
index 345eb56..0000000
--- a/src/test/java/org/apache/commons/lang/enum/Broken3Enum.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.lang.enum;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Broken color enumeration.
- *
- * @author Apache Software Foundation
- * @version $Id$
- */
-public final class Broken3Enum extends Enum {
-    public static final Broken3Enum RED = new Broken3Enum("Red");
-    public static final Broken3Enum GREEN = new Broken3Enum("Green");
-    public static final Broken3Enum BLUE = new Broken3Enum(null);  // null not allowed
-
-    private Broken3Enum(String color) {
-        super(color);
-    }
-
-    public static Broken3Enum getEnum(String color) {
-        return (Broken3Enum) getEnum(Broken3Enum.class, color);
-    }
-
-    public static Map getEnumMap() {
-        return getEnumMap(Broken3Enum.class);
-    }
-
-    public static List getEnumList() {
-        return getEnumList(Broken3Enum.class);
-    }
-
-    public static Iterator iterator() {
-        return iterator(Broken3Enum.class);
-    }
-}
diff --git a/src/test/java/org/apache/commons/lang/enum/Broken5OperationEnum.java b/src/test/java/org/apache/commons/lang/enum/Broken5OperationEnum.java
deleted file mode 100644
index 46aa286..0000000
--- a/src/test/java/org/apache/commons/lang/enum/Broken5OperationEnum.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.lang.enum;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Broken Operator enumeration, getEnumClass() is not an Enum class.
- *
- * @author Apache Software Foundation
- * @version $Id$
- */
-public abstract class Broken5OperationEnum extends Enum {
-    // This syntax works for JDK 1.3 and upwards:
-//    public static final OperationEnum PLUS = new OperationEnum("Plus") {
-//        public int eval(int a, int b) {
-//            return (a + b);
-//        }
-//    };
-//    public static final OperationEnum MINUS = new OperationEnum("Minus") {
-//        public int eval(int a, int b) {
-//            return (a - b);
-//        }
-//    };
-    // This syntax works for JDK 1.2 and upwards:
-    public static final Broken5OperationEnum PLUS = new PlusOperation();
-    private static class PlusOperation extends Broken5OperationEnum {
-        private PlusOperation() {
-            super("Plus");
-        }
-        public int eval(int a, int b) {
-            return (a + b);
-        }
-    }
-    public static final Broken5OperationEnum MINUS = new MinusOperation();
-    private static class MinusOperation extends Broken5OperationEnum {
-        private MinusOperation() {
-            super("Minus");
-        }
-        public int eval(int a, int b) {
-            return (a - b);
-        }
-    }
-
-    private Broken5OperationEnum(String name) {
-        super(name);
-    }
-    
-    public final Class getEnumClass() {
-        return String.class;
-    }
-
-    public abstract int eval(int a, int b);
-
-    public static Broken5OperationEnum getEnum(String name) {
-        return (Broken5OperationEnum) getEnum(Broken5OperationEnum.class, name);
-    }
-
-    public static Map getEnumMap() {
-        return getEnumMap(Broken5OperationEnum.class);
-    }
-
-    public static List getEnumList() {
-        return getEnumList(Broken5OperationEnum.class);
-    }
-
-    public static Iterator iterator() {
-        return iterator(Broken5OperationEnum.class);
-    }
-}
diff --git a/src/test/java/org/apache/commons/lang/enum/EnumUtilsTest.java b/src/test/java/org/apache/commons/lang/enum/EnumUtilsTest.java
deleted file mode 100644
index af432d9..0000000
--- a/src/test/java/org/apache/commons/lang/enum/EnumUtilsTest.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.lang.enum;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Modifier;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import junit.framework.TestCase;
-
-/**
- * Test cases for the {@link Enum} class.
- *
- * @author Apache Software Foundation
- * @version $Id$
- */
-
-public final class EnumUtilsTest extends TestCase {
-
-    public EnumUtilsTest(String name) {
-        super(name);
-    }
-
-    public void setUp() {
-    }
-
-    //-----------------------------------------------------------------------
-    public void testConstructor() {
-        assertNotNull(new EnumUtils());
-        Constructor[] cons = EnumUtils.class.getDeclaredConstructors();
-        assertEquals(1, cons.length);
-        assertEquals(true, Modifier.isPublic(cons[0].getModifiers()));
-        assertEquals(true, Modifier.isPublic(EnumUtils.class.getModifiers()));
-        assertEquals(false, Modifier.isFinal(EnumUtils.class.getModifiers()));
-    }
-    
-    //-----------------------------------------------------------------------
-    public void testIterator() {
-        Iterator it = EnumUtils.iterator(ColorEnum.class);
-        assertSame(ColorEnum.RED, it.next());
-        assertSame(ColorEnum.GREEN, it.next());
-        assertSame(ColorEnum.BLUE, it.next());
-        it = EnumUtils.iterator(DummyEnum.class);
-        assertEquals(false, it.hasNext());
-    }
-
-    public void testIteratorEx() {
-        try {
-            EnumUtils.iterator(null);
-            fail();
-        } catch (IllegalArgumentException ex) {}
-        try {
-            EnumUtils.iterator(Object.class);
-            fail();
-        } catch (IllegalArgumentException ex) {}
-    }
-
-    //-----------------------------------------------------------------------
-    public void testList() {
-        List list = EnumUtils.getEnumList(ColorEnum.class);
-        Iterator it = list.iterator();
-        assertSame(ColorEnum.RED, it.next());
-        assertSame(ColorEnum.GREEN, it.next());
-        assertSame(ColorEnum.BLUE, it.next());
-        list = EnumUtils.getEnumList(DummyEnum.class);
-        assertEquals(0, list.size());
-    }
-
-    public void testListEx() {
-        try {
-            EnumUtils.getEnumList(null);
-            fail();
-        } catch (IllegalArgumentException ex) {}
-        try {
-            EnumUtils.getEnumList(Object.class);
-            fail();
-        } catch (IllegalArgumentException ex) {}
-    }
-
-    //-----------------------------------------------------------------------
-    public void testMap() {
-        Map map = EnumUtils.getEnumMap(ColorEnum.class);
-        assertTrue(map.containsValue(ColorEnum.RED));
-        assertTrue(map.containsValue(ColorEnum.GREEN));
-        assertTrue(map.containsValue(ColorEnum.BLUE));
-        assertSame(ColorEnum.RED, map.get("Red"));
-        assertSame(ColorEnum.GREEN, map.get("Green"));
-        assertSame(ColorEnum.BLUE, map.get("Blue"));
-        map = EnumUtils.getEnumMap(DummyEnum.class);
-        assertEquals(0, map.size());
-    }
-
-    public void testMapEx() {
-        try {
-            EnumUtils.getEnumMap(null);
-            fail();
-        } catch (IllegalArgumentException ex) {}
-        try {
-            EnumUtils.getEnumMap(Object.class);
-            fail();
-        } catch (IllegalArgumentException ex) {}
-    }
-
-    //-----------------------------------------------------------------------
-    public void testGet() {
-        assertSame(ColorEnum.RED, EnumUtils.getEnum(ColorEnum.class, "Red"));
-        assertSame(ColorEnum.GREEN, EnumUtils.getEnum(ColorEnum.class, "Green"));
-        assertSame(ColorEnum.BLUE, EnumUtils.getEnum(ColorEnum.class, "Blue"));
-        assertSame(null, EnumUtils.getEnum(ColorEnum.class, "Pink"));
-        assertSame(null, EnumUtils.getEnum(DummyEnum.class, "Pink"));
-    }
-
-    public void testGetEx() {
-        try {
-            EnumUtils.getEnum(null, "");
-            fail();
-        } catch (IllegalArgumentException ex) {}
-        try {
-            EnumUtils.getEnum(Object.class, "Red");
-            fail();
-        } catch (IllegalArgumentException ex) {}
-    }
-
-    //-----------------------------------------------------------------------
-    public void testGetValue() {
-        assertSame(ValuedColorEnum.RED, EnumUtils.getEnum(ValuedColorEnum.class, 1));
-        assertSame(ValuedColorEnum.GREEN, EnumUtils.getEnum(ValuedColorEnum.class, 2));
-        assertSame(ValuedColorEnum.BLUE, EnumUtils.getEnum(ValuedColorEnum.class, 3));
-        assertSame(null, EnumUtils.getEnum(ValuedColorEnum.class, 4));
-        assertSame(null, EnumUtils.getEnum(DummyEnum.class, 5));
-    }
-
-    public void testGetValueEx() {
-        try {
-            EnumUtils.getEnum(null, 0);
-            fail();
-        } catch (IllegalArgumentException ex) {}
-        try {
-            EnumUtils.getEnum(Object.class, 2);
-            fail();
-        } catch (IllegalArgumentException ex) {}
-    }
-
-}
diff --git a/src/test/java/org/apache/commons/lang/enum/Extended3Enum.java b/src/test/java/org/apache/commons/lang/enum/Extended3Enum.java
deleted file mode 100644
index 0693f16..0000000
--- a/src/test/java/org/apache/commons/lang/enum/Extended3Enum.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.commons.lang.enum;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Extended enumeration.
- *
- * @author Apache Software Foundation
- * @version $Id$
- */
-public class Extended3Enum extends Extended2Enum {
-    public static final Extended1Enum DELTA = new Extended3Enum("Delta");
-
-    protected Extended3Enum(String name) {
-        super(name);
-    }
-
-    public static Extended1Enum getEnum(String name) {
-        return (Extended1Enum) Enum.getEnum(Extended3Enum.class, name);
-    }
-
-    public static Map getEnumMap() {
-        return Enum.getEnumMap(Extended3Enum.class);
-    }
-
-    public static List getEnumList() {
-        return Enum.getEnumList(Extended3Enum.class);
-    }
-
-    public static Iterator iterator() {
-        return Enum.iterator(Extended3Enum.class);
-    }
-
-}
diff --git a/src/test/java/org/apache/commons/lang/enum/NestBroken.java b/src/test/java/org/apache/commons/lang/enum/NestBroken.java
deleted file mode 100644
index c53c238..0000000
--- a/src/test/java/org/apache/commons/lang/enum/NestBroken.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.lang.enum;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Color enumeration which demonstrates how to break the enum system.
- * <p>
- * The class loader sees the two classes here as independent - the enum
- * class is nested, not an inner class. Calling getEnumList() on ColorEnum
- * will return an empty list, unless and until the NestBroken class is
- * referenced.
- *
- * @author Apache Software Foundation
- * @version $Id$
- */
-
-public final class NestBroken {
-    
-    public static final ColorEnum RED = new ColorEnum("Red");
-    public static final ColorEnum GREEN = new ColorEnum("Green");
-    public static final ColorEnum BLUE = new ColorEnum("Blue");
-    
-    public NestBroken() {
-        super();
-    }
-    
-    public static final class ColorEnum extends Enum {
-
-        private ColorEnum(String color) {
-            super(color);
-        }
-
-        public static ColorEnum getEnum(String color) {
-            return (ColorEnum) getEnum(ColorEnum.class, color);
-        }
-
-        public static Map getEnumMap() {
-            return getEnumMap(ColorEnum.class);
-        }
-
-        public static List getEnumList() {
-            return getEnumList(ColorEnum.class);
-        }
-
-        public static Iterator iterator() {
-            return iterator(ColorEnum.class);
-        }
-    }
-}
diff --git a/src/test/java/org/apache/commons/lang/enums/Broken1OperationEnum.java b/src/test/java/org/apache/commons/lang/enums/Broken1OperationEnum.java
deleted file mode 100644
index cc505b4..0000000
--- a/src/test/java/org/apache/commons/lang/enums/Broken1OperationEnum.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.lang.enums;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Broken Operator enumeration, null class.
- *
- * @author Apache Software Foundation
- * @version $Id$
- */
-public abstract class Broken1OperationEnum extends Enum {
-    // This syntax works for JDK 1.3 and upwards:
-//    public static final OperationEnum PLUS = new OperationEnum("Plus") {
-//        public int eval(int a, int b) {
-//            return (a + b);
-//        }
-//    };
-//    public static final OperationEnum MINUS = new OperationEnum("Minus") {
-//        public int eval(int a, int b) {
-//            return (a - b);
-//        }
-//    };
-    // This syntax works for JDK 1.2 and upwards:
-    public static final Broken1OperationEnum PLUS = new PlusOperation();
-    private static class PlusOperation extends Broken1OperationEnum {
-        private PlusOperation() {
-            super("Plus");
-        }
-        public int eval(int a, int b) {
-            return (a + b);
-        }
-    }
-    public static final Broken1OperationEnum MINUS = new MinusOperation();
-    private static class MinusOperation extends Broken1OperationEnum {
-        private MinusOperation() {
-            super("Minus");
-        }
-        public int eval(int a, int b) {
-            return (a - b);
-        }
-    }
-
-    private Broken1OperationEnum(String name) {
-        super(name);
-    }
-    
-    public final Class getEnumClass() {
-        return null;
-    }
-
-    public abstract int eval(int a, int b);
-
-    public static Broken1OperationEnum getEnum(String name) {
-        return (Broken1OperationEnum) getEnum(Broken1OperationEnum.class, name);
-    }
-
-    public static Map getEnumMap() {
-        return getEnumMap(Broken1OperationEnum.class);
-    }
-
-    public static List getEnumList() {
-        return getEnumList(Broken1OperationEnum.class);
-    }
-
-    public static Iterator iterator() {
-        return iterator(Broken1OperationEnum.class);
-    }
-}
diff --git a/src/test/java/org/apache/commons/lang/enums/Broken2OperationEnum.java b/src/test/java/org/apache/commons/lang/enums/Broken2OperationEnum.java
deleted file mode 100644
index efee938..0000000
--- a/src/test/java/org/apache/commons/lang/enums/Broken2OperationEnum.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.lang.enums;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Broken Operator enumeration, getEnumClass() not superclass.
- *
- * @author Apache Software Foundation
- * @version $Id$
- */
-public abstract class Broken2OperationEnum extends Enum {
-    // This syntax works for JDK 1.3 and upwards:
-//    public static final OperationEnum PLUS = new OperationEnum("Plus") {
-//        public int eval(int a, int b) {
-//            return (a + b);
-//        }
-//    };
-//    public static final OperationEnum MINUS = new OperationEnum("Minus") {
-//        public int eval(int a, int b) {
-//            return (a - b);
-//        }
-//    };
-    // This syntax works for JDK 1.2 and upwards:
-    public static final Broken2OperationEnum PLUS = new PlusOperation();
-    private static class PlusOperation extends Broken2OperationEnum {
-        private PlusOperation() {
-            super("Plus");
-        }
-        public int eval(int a, int b) {
-            return (a + b);
-        }
-    }
-    public static final Broken2OperationEnum MINUS = new MinusOperation();
-    private static class MinusOperation extends Broken2OperationEnum {
-        private MinusOperation() {
-            super("Minus");
-        }
-        public int eval(int a, int b) {
-            return (a - b);
-        }
-    }
-
-    private Broken2OperationEnum(String name) {
-        super(name);
-    }
-    
-    public final Class getEnumClass() {
-        return ColorEnum.class;
-    }
-
-    public abstract int eval(int a, int b);
-
-    public static Broken2OperationEnum getEnum(String name) {
-        return (Broken2OperationEnum) getEnum(Broken2OperationEnum.class, name);
-    }
-
-    public static Map getEnumMap() {
-        return getEnumMap(Broken2OperationEnum.class);
-    }
-
-    public static List getEnumList() {
-        return getEnumList(Broken2OperationEnum.class);
-    }
-
-    public static Iterator iterator() {
-        return iterator(Broken2OperationEnum.class);
-    }
-}
diff --git a/src/test/java/org/apache/commons/lang/enums/Broken3OperationEnum.java b/src/test/java/org/apache/commons/lang/enums/Broken3OperationEnum.java
deleted file mode 100644
index 7ec0250..0000000
--- a/src/test/java/org/apache/commons/lang/enums/Broken3OperationEnum.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.lang.enums;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Broken Operator enumeration, getEnumClass() is Enum.class.
- *
- * @author Apache Software Foundation
- * @version $Id$
- */
-public abstract class Broken3OperationEnum extends Enum {
-    // This syntax works for JDK 1.3 and upwards:
-//    public static final OperationEnum PLUS = new OperationEnum("Plus") {
-//        public int eval(int a, int b) {
-//            return (a + b);
-//        }
-//    };
-//    public static final OperationEnum MINUS = new OperationEnum("Minus") {
-//        public int eval(int a, int b) {
-//            return (a - b);
-//        }
-//    };
-    // This syntax works for JDK 1.2 and upwards:
-    public static final Broken3OperationEnum PLUS = new PlusOperation();
-    private static class PlusOperation extends Broken3OperationEnum {
-        private PlusOperation() {
-            super("Plus");
-        }
-        public int eval(int a, int b) {
-            return (a + b);
-        }
-    }
-    public static final Broken3OperationEnum MINUS = new MinusOperation();
-    private static class MinusOperation extends Broken3OperationEnum {
-        private MinusOperation() {
-            super("Minus");
-        }
-        public int eval(int a, int b) {
-            return (a - b);
-        }
-    }
-
-    private Broken3OperationEnum(String name) {
-        super(name);
-    }
-    
-    public final Class getEnumClass() {
-        return Enum.class;
-    }
-
-    public abstract int eval(int a, int b);
-
-    public static Broken3OperationEnum getEnum(String name) {
-        return (Broken3OperationEnum) getEnum(Broken3OperationEnum.class, name);
-    }
-
-    public static Map getEnumMap() {
-        return getEnumMap(Broken3OperationEnum.class);
-    }
-
-    public static List getEnumList() {
-        return getEnumList(Broken3OperationEnum.class);
-    }
-
-    public static Iterator iterator() {
-        return iterator(Broken3OperationEnum.class);
-    }
-}
diff --git a/src/test/java/org/apache/commons/lang/enums/Broken4OperationEnum.java b/src/test/java/org/apache/commons/lang/enums/Broken4OperationEnum.java
deleted file mode 100644
index 0c2369d..0000000
--- a/src/test/java/org/apache/commons/lang/enums/Broken4OperationEnum.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.lang.enums;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Broken Operator enumeration, getEnumClass() is ValuedEnum.class.
- *
- * @author Apache Software Foundation
- * @version $Id$
- */
-public abstract class Broken4OperationEnum extends Enum {
-    // This syntax works for JDK 1.3 and upwards:
-//    public static final OperationEnum PLUS = new OperationEnum("Plus") {
-//        public int eval(int a, int b) {
-//            return (a + b);
-//        }
-//    };
-//    public static final OperationEnum MINUS = new OperationEnum("Minus") {
-//        public int eval(int a, int b) {
-//            return (a - b);
-//        }
-//    };
-    // This syntax works for JDK 1.2 and upwards:
-    public static final Broken4OperationEnum PLUS = new PlusOperation();
-    private static class PlusOperation extends Broken4OperationEnum {
-        private PlusOperation() {
-            super("Plus");
-        }
-        public int eval(int a, int b) {
-            return (a + b);
-        }
-    }
-    public static final Broken4OperationEnum MINUS = new MinusOperation();
-    private static class MinusOperation extends Broken4OperationEnum {
-        private MinusOperation() {
-            super("Minus");
-        }
-        public int eval(int a, int b) {
-            return (a - b);
-        }
-    }
-
-    private Broken4OperationEnum(String name) {
-        super(name);
-    }
-    
-    public final Class getEnumClass() {
-        return ValuedEnum.class;
-    }
-
-    public abstract int eval(int a, int b);
-
-    public static Broken4OperationEnum getEnum(String name) {
-        return (Broken4OperationEnum) getEnum(Broken4OperationEnum.class, name);
-    }
-
-    public static Map getEnumMap() {
-        return getEnumMap(Broken4OperationEnum.class);
-    }
-
-    public static List getEnumList() {
-        return getEnumList(Broken4OperationEnum.class);
-    }
-
-    public static Iterator iterator() {
-        return iterator(Broken4OperationEnum.class);
-    }
-}
diff --git a/src/test/java/org/apache/commons/lang/enums/ColorEnum.java b/src/test/java/org/apache/commons/lang/enums/ColorEnum.java
deleted file mode 100644
index e188165..0000000
--- a/src/test/java/org/apache/commons/lang/enums/ColorEnum.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.lang.enums;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Color enumeration.
- *
- * @author Apache Software Foundation
- * @version $Id$
- */
-
-public final class ColorEnum extends Enum {
-    public static final ColorEnum RED = new ColorEnum("Red");
-    public static final ColorEnum GREEN = new ColorEnum("Green");
-    public static final ColorEnum BLUE = new ColorEnum("Blue");
-
-    private ColorEnum(String color) {
-        super(color);
-    }
-
-    public static ColorEnum getEnum(String color) {
-        return (ColorEnum) getEnum(ColorEnum.class, color);
-    }
-
-    public static Map getEnumMap() {
-        return getEnumMap(ColorEnum.class);
-    }
-
-    public static List getEnumList() {
-        return getEnumList(ColorEnum.class);
-    }
-
-    public static Iterator iterator() {
-        return iterator(ColorEnum.class);
-    }
-}
diff --git a/src/test/java/org/apache/commons/lang/enums/DummyEnum.java b/src/test/java/org/apache/commons/lang/enums/DummyEnum.java
deleted file mode 100644
index 7f3ad68..0000000
--- a/src/test/java/org/apache/commons/lang/enums/DummyEnum.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.lang.enums;
-
-/**
- * Dummy enumeration - no values.
- *
- * @author Apache Software Foundation
- * @version $Id$
- */
-public abstract class DummyEnum extends Enum {
-
-    private DummyEnum(String name) {
-        super(name);
-    }
-
-}
diff --git a/src/test/java/org/apache/commons/lang/enums/Extended1Enum.java b/src/test/java/org/apache/commons/lang/enums/Extended1Enum.java
deleted file mode 100644
index 9c12fd2..0000000
--- a/src/test/java/org/apache/commons/lang/enums/Extended1Enum.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.commons.lang.enums;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Base extended enumeration.
- *
- * @author Apache Software Foundation
- * @version $Id$
- */
-public class Extended1Enum extends Enum {
-    public static final Extended1Enum ALPHA = new Extended1Enum("Alpha");
-    public static final Extended1Enum BETA = new Extended1Enum("Beta");
-
-    protected Extended1Enum(String name) {
-        super(name);
-    }
-
-    public static Extended1Enum getEnum(String name) {
-        return (Extended1Enum) getEnum(Extended1Enum.class, name);
-    }
-
-    public static Map getEnumMap() {
-        return getEnumMap(Extended1Enum.class);
-    }
-
-    public static List getEnumList() {
-        return getEnumList(Extended1Enum.class);
-    }
-
-    public static Iterator iterator() {
-        return iterator(Extended1Enum.class);
-    }
-
-}
diff --git a/src/test/java/org/apache/commons/lang/enums/Extended2Enum.java b/src/test/java/org/apache/commons/lang/enums/Extended2Enum.java
deleted file mode 100644
index c68d905..0000000
--- a/src/test/java/org/apache/commons/lang/enums/Extended2Enum.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.commons.lang.enums;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Extended enumeration.
- *
- * @author Apache Software Foundation
- * @version $Id$
- */
-public class Extended2Enum extends Extended1Enum {
-    public static final Extended1Enum GAMMA = new Extended2Enum("Gamma");
-
-    protected Extended2Enum(String color) {
-        super(color);
-    }
-
-    public static Extended1Enum getEnum(String name) {
-        return (Extended1Enum) getEnum(Extended2Enum.class, name);
-    }
-
-    public static Map getEnumMap() {
-        return getEnumMap(Extended2Enum.class);
-    }
-
-    public static List getEnumList() {
-        return getEnumList(Extended2Enum.class);
-    }
-
-    public static Iterator iterator() {
-        return iterator(Extended2Enum.class);
-    }
-
-}
diff --git a/src/test/java/org/apache/commons/lang/enums/Nest.java b/src/test/java/org/apache/commons/lang/enums/Nest.java
deleted file mode 100644
index 9f651a0..0000000
--- a/src/test/java/org/apache/commons/lang/enums/Nest.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.lang.enums;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Color enumeration demonstrating a normal simple nesting case.
- * All is well here as the nested enum class is really no different
- * to any other class.
- *
- * @author Apache Software Foundation
- * @version $Id$
- */
-
-public final class Nest {
-    
-    public Nest() {
-        super();
-    }
-    
-    public static final class ColorEnum extends Enum {
-        public static final ColorEnum RED = new ColorEnum("Red");
-        public static final ColorEnum GREEN = new ColorEnum("Green");
-        public static final ColorEnum BLUE = new ColorEnum("Blue");
-
-        private ColorEnum(String color) {
-            super(color);
-        }
-
-        public static ColorEnum getEnum(String color) {
-            return (ColorEnum) getEnum(ColorEnum.class, color);
-        }
-
-        public static Map getEnumMap() {
-            return getEnumMap(ColorEnum.class);
-        }
-
-        public static List getEnumList() {
-            return getEnumList(ColorEnum.class);
-        }
-
-        public static Iterator iterator() {
-            return iterator(ColorEnum.class);
-        }
-    }
-}
diff --git a/src/test/java/org/apache/commons/lang/enums/NestLinked.java b/src/test/java/org/apache/commons/lang/enums/NestLinked.java
deleted file mode 100644
index 4eb87f6..0000000
--- a/src/test/java/org/apache/commons/lang/enums/NestLinked.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.lang.enums;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Color enumeration which demonstrates how to define the constants in a
- * different class to the Enum. The extra <code>static{}</code> block is
- * needed to ensure that the enum constants are created before the
- * static methods on the ColorEnum are used.
- * <p>
- * The class loader sees the two classes here as independent - the enum
- * class is nested, not an inner class. The static block thus forces the
- * class load of the outer class, which is needed to initialise the enums.
- *
- * @author Apache Software Foundation
- * @version $Id$
- */
-
-public final class NestLinked {
-    
-    public static final ColorEnum RED = new ColorEnum("Red");
-    public static final ColorEnum GREEN = new ColorEnum("Green");
-    public static final ColorEnum BLUE = new ColorEnum("Blue");
-    
-    public NestLinked() {
-        super();
-    }
-    
-    public static final class ColorEnum extends Enum {
-
-        static {
-            // Explicitly reference the class where the enums are defined
-            Object obj = NestLinked.RED;
-        }
-        
-        private ColorEnum(String color) {
-            super(color);
-        }
-
-        public static ColorEnum getEnum(String color) {
-            return (ColorEnum) getEnum(ColorEnum.class, color);
-        }
-
-        public static Map getEnumMap() {
-            return getEnumMap(ColorEnum.class);
-        }
-
-        public static List getEnumList() {
-            return getEnumList(ColorEnum.class);
-        }
-
-        public static Iterator iterator() {
-            return iterator(ColorEnum.class);
-        }
-    }
-}
diff --git a/src/test/java/org/apache/commons/lang/enums/NestReferenced.java b/src/test/java/org/apache/commons/lang/enums/NestReferenced.java
deleted file mode 100644
index 76c956e..0000000
--- a/src/test/java/org/apache/commons/lang/enums/NestReferenced.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.lang.enums;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Color enumeration which demonstrates how to provide a view of the constants
- * in a different class to the Enum. This technique is the safest, however it
- * is obviously inconvenient as it involves defining two sets of constants.
- * See NestedLinked for an alternative.
- *
- * @author Apache Software Foundation
- * @version $Id$
- */
-
-public final class NestReferenced {
-    
-    public static final ColorEnum RED = ColorEnum.RED;
-    public static final ColorEnum GREEN = ColorEnum.GREEN;
-    public static final ColorEnum BLUE = ColorEnum.BLUE;
-    
-    public NestReferenced() {
-        super();
-    }
-    
-    public static final class ColorEnum extends Enum {
-
-        // must be defined here, not just in outer class
-        private static final ColorEnum RED = new ColorEnum("Red");
-        private static final ColorEnum GREEN = new ColorEnum("Green");
-        private static final ColorEnum BLUE = new ColorEnum("Blue");
-        
-        private ColorEnum(String color) {
-            super(color);
-        }
-
-        public static ColorEnum getEnum(String color) {
-            return (ColorEnum) getEnum(ColorEnum.class, color);
-        }
-
-        public static Map getEnumMap() {
-            return getEnumMap(ColorEnum.class);
-        }
-
-        public static List getEnumList() {
-            return getEnumList(ColorEnum.class);
-        }
-
-        public static Iterator iterator() {
-            return iterator(ColorEnum.class);
-        }
-    }
-}
diff --git a/src/test/java/org/apache/commons/lang/enums/OperationEnum.java b/src/test/java/org/apache/commons/lang/enums/OperationEnum.java
deleted file mode 100644
index 64bd094..0000000
--- a/src/test/java/org/apache/commons/lang/enums/OperationEnum.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.lang.enums;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Operator enumeration.
- *
- * @author Apache Software Foundation
- * @version $Id$
- */
-public abstract class OperationEnum extends Enum {
-    // This syntax works for JDK 1.3 and upwards:
-//    public static final OperationEnum PLUS = new OperationEnum("Plus") {
-//        public int eval(int a, int b) {
-//            return (a + b);
-//        }
-//    };
-//    public static final OperationEnum MINUS = new OperationEnum("Minus") {
-//        public int eval(int a, int b) {
-//            return (a - b);
-//        }
-//    };
-    // This syntax works for JDK 1.2 and upwards:
-    public static final OperationEnum PLUS = new PlusOperation();
-    private static class PlusOperation extends OperationEnum {
-        private PlusOperation() {
-            super("Plus");
-        }
-        public int eval(int a, int b) {
-            return (a + b);
-        }
-    }
-    public static final OperationEnum MINUS = new MinusOperation();
-    private static class MinusOperation extends OperationEnum {
-        private MinusOperation() {
-            super("Minus");
-        }
-        public int eval(int a, int b) {
-            return (a - b);
-        }
-    }
-
-    private OperationEnum(String name) {
-        super(name);
-    }
-    
-    public final Class getEnumClass() {
-        return OperationEnum.class;
-    }
-
-    public abstract int eval(int a, int b);
-
-    public static OperationEnum getEnum(String name) {
-        return (OperationEnum) getEnum(OperationEnum.class, name);
-    }
-
-    public static Map getEnumMap() {
-        return getEnumMap(OperationEnum.class);
-    }
-
-    public static List getEnumList() {
-        return getEnumList(OperationEnum.class);
-    }
-
-    public static Iterator iterator() {
-        return iterator(OperationEnum.class);
-    }
-}
diff --git a/src/test/java/org/apache/commons/lang/enums/ValuedColorEnum.java b/src/test/java/org/apache/commons/lang/enums/ValuedColorEnum.java
deleted file mode 100644
index 22c89cb..0000000
--- a/src/test/java/org/apache/commons/lang/enums/ValuedColorEnum.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.lang.enums;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Color enumeration.
- *
- * @author Apache Software Foundation
- * @version $Id$
- */
-
-public final class ValuedColorEnum extends ValuedEnum {
-    public static final ValuedColorEnum RED = new ValuedColorEnum("Red", 1);
-    public static final ValuedColorEnum GREEN = new ValuedColorEnum("Green", 2);
-    public static final ValuedColorEnum BLUE = new ValuedColorEnum("Blue", 3);
-
-    private ValuedColorEnum(String color, int value) {
-        super(color, value);
-    }
-
-    public static ValuedColorEnum getEnum(String color) {
-        return (ValuedColorEnum) getEnum(ValuedColorEnum.class, color);
-    }
-
-    public static ValuedColorEnum getEnum(int value) {
-        return (ValuedColorEnum) getEnum(ValuedColorEnum.class, value);
-    }
-
-    public static Map getEnumMap() {
-        return getEnumMap(ValuedColorEnum.class);
-    }
-
-    public static List getEnumList() {
-        return getEnumList(ValuedColorEnum.class);
-    }
-
-    public static Iterator iterator() {
-        return iterator(ValuedColorEnum.class);
-    }
-}
diff --git a/src/test/java/org/apache/commons/lang/ArrayUtilsAddTest.java b/src/test/java/org/apache/commons/lang3/ArrayUtilsAddTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/ArrayUtilsAddTest.java
rename to src/test/java/org/apache/commons/lang3/ArrayUtilsAddTest.java
index 57c73d4..14b23f8 100644
--- a/src/test/java/org/apache/commons/lang/ArrayUtilsAddTest.java
+++ b/src/test/java/org/apache/commons/lang3/ArrayUtilsAddTest.java
@@ -15,10 +15,12 @@
  * limitations under the License.
  */
 
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 import java.util.Arrays;
 
+import org.apache.commons.lang3.ArrayUtils;
+
 import junit.framework.TestCase;
 
 /**
diff --git a/src/test/java/org/apache/commons/lang/ArrayUtilsRemoveTest.java b/src/test/java/org/apache/commons/lang3/ArrayUtilsRemoveTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/ArrayUtilsRemoveTest.java
rename to src/test/java/org/apache/commons/lang3/ArrayUtilsRemoveTest.java
index 6bdc6b3..5bb9b01 100644
--- a/src/test/java/org/apache/commons/lang/ArrayUtilsRemoveTest.java
+++ b/src/test/java/org/apache/commons/lang3/ArrayUtilsRemoveTest.java
@@ -15,10 +15,12 @@
  * limitations under the License.
  */
 
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 import java.util.Arrays;
 
+import org.apache.commons.lang3.ArrayUtils;
+
 import junit.framework.TestCase;
 
 /**
diff --git a/src/test/java/org/apache/commons/lang/ArrayUtilsTest.java b/src/test/java/org/apache/commons/lang3/ArrayUtilsTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/ArrayUtilsTest.java
rename to src/test/java/org/apache/commons/lang3/ArrayUtilsTest.java
index d5e36b9..dbc9752 100644
--- a/src/test/java/org/apache/commons/lang/ArrayUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/ArrayUtilsTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Modifier;
@@ -22,10 +22,13 @@
 import java.util.Date;
 import java.util.Map;
 
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.StringUtils;
+
 import junit.framework.TestCase;
 
 /**
- * Unit tests {@link org.apache.commons.lang.ArrayUtils}.
+ * Unit tests {@link org.apache.commons.lang3.ArrayUtils}.
  *
  * @author Apache Software Foundation
  * @author Moritz Petersen
diff --git a/src/test/java/org/apache/commons/lang/BitFieldTest.java b/src/test/java/org/apache/commons/lang3/BitFieldTest.java
similarity index 98%
rename from src/test/java/org/apache/commons/lang/BitFieldTest.java
rename to src/test/java/org/apache/commons/lang3/BitFieldTest.java
index 9c77d9b..f253c3b 100644
--- a/src/test/java/org/apache/commons/lang/BitFieldTest.java
+++ b/src/test/java/org/apache/commons/lang3/BitFieldTest.java
@@ -14,7 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
+
+import org.apache.commons.lang3.BitField;
 
 import junit.framework.TestCase;
 
diff --git a/src/test/java/org/apache/commons/lang/BooleanUtilsTest.java b/src/test/java/org/apache/commons/lang3/BooleanUtilsTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/BooleanUtilsTest.java
rename to src/test/java/org/apache/commons/lang3/BooleanUtilsTest.java
index 83aafb9..e2028a7 100644
--- a/src/test/java/org/apache/commons/lang/BooleanUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/BooleanUtilsTest.java
@@ -14,15 +14,17 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Modifier;
 
+import org.apache.commons.lang3.BooleanUtils;
+
 import junit.framework.TestCase;
 
 /**
- * Unit tests {@link org.apache.commons.lang.BooleanUtils}.
+ * Unit tests {@link org.apache.commons.lang3.BooleanUtils}.
  *
  * @author Apache Software Foundation
  * @author Matthew Hawthorne
diff --git a/src/test/java/org/apache/commons/lang/CharEncodingTest.java b/src/test/java/org/apache/commons/lang3/CharEncodingTest.java
similarity index 96%
rename from src/test/java/org/apache/commons/lang/CharEncodingTest.java
rename to src/test/java/org/apache/commons/lang3/CharEncodingTest.java
index af8a473..65c700e 100644
--- a/src/test/java/org/apache/commons/lang/CharEncodingTest.java
+++ b/src/test/java/org/apache/commons/lang3/CharEncodingTest.java
@@ -15,7 +15,10 @@
  * limitations under the License.
  */
 
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
+
+import org.apache.commons.lang3.CharEncoding;
+import org.apache.commons.lang3.SystemUtils;
 
 import junit.framework.TestCase;
 
diff --git a/src/test/java/org/apache/commons/lang/CharRangeTest.java b/src/test/java/org/apache/commons/lang3/CharRangeTest.java
similarity index 98%
rename from src/test/java/org/apache/commons/lang/CharRangeTest.java
rename to src/test/java/org/apache/commons/lang3/CharRangeTest.java
index bfa29b2..a4e047d 100644
--- a/src/test/java/org/apache/commons/lang/CharRangeTest.java
+++ b/src/test/java/org/apache/commons/lang3/CharRangeTest.java
@@ -16,16 +16,19 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 import java.lang.reflect.Modifier;
 import java.util.Iterator;
 import java.util.NoSuchElementException;
 
+import org.apache.commons.lang3.CharRange;
+import org.apache.commons.lang3.SerializationUtils;
+
 import junit.framework.TestCase;
 
 /**
- * Unit tests {@link org.apache.commons.lang.CharRange}.
+ * Unit tests {@link org.apache.commons.lang3.CharRange}.
  *
  * @author Apache Software Foundation
  * @version $Id$
diff --git a/src/test/java/org/apache/commons/lang/CharSetTest.java b/src/test/java/org/apache/commons/lang3/CharSetTest.java
similarity index 98%
rename from src/test/java/org/apache/commons/lang/CharSetTest.java
rename to src/test/java/org/apache/commons/lang3/CharSetTest.java
index a8470e3..24fce7a 100644
--- a/src/test/java/org/apache/commons/lang/CharSetTest.java
+++ b/src/test/java/org/apache/commons/lang3/CharSetTest.java
@@ -16,14 +16,19 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 import java.lang.reflect.Modifier;
 
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.CharRange;
+import org.apache.commons.lang3.CharSet;
+import org.apache.commons.lang3.SerializationUtils;
+
 import junit.framework.TestCase;
 
 /**
- * Unit tests {@link org.apache.commons.lang.CharSet}.
+ * Unit tests {@link org.apache.commons.lang3.CharSet}.
  *
  * @author Apache Software Foundation
  * @author Phil Steitz
diff --git a/src/test/java/org/apache/commons/lang/CharSetUtilsTest.java b/src/test/java/org/apache/commons/lang3/CharSetUtilsTest.java
similarity index 98%
rename from src/test/java/org/apache/commons/lang/CharSetUtilsTest.java
rename to src/test/java/org/apache/commons/lang3/CharSetUtilsTest.java
index 81c4c48..e4b1d73 100644
--- a/src/test/java/org/apache/commons/lang/CharSetUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/CharSetUtilsTest.java
@@ -14,15 +14,17 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Modifier;
 
+import org.apache.commons.lang3.CharSetUtils;
+
 import junit.framework.TestCase;
 
 /**
- * Unit tests {@link org.apache.commons.lang.CharSetUtils}.
+ * Unit tests {@link org.apache.commons.lang3.CharSetUtils}.
  *
  * @author Apache Software Foundation
  * @author <a href="mailto:ridesmet@users.sourceforge.net">Ringo De Smet</a>
diff --git a/src/test/java/org/apache/commons/lang/CharUtilsPerfRun.java b/src/test/java/org/apache/commons/lang3/CharUtilsPerfRun.java
similarity index 97%
rename from src/test/java/org/apache/commons/lang/CharUtilsPerfRun.java
rename to src/test/java/org/apache/commons/lang3/CharUtilsPerfRun.java
index b410ef4..37eb12c 100644
--- a/src/test/java/org/apache/commons/lang/CharUtilsPerfRun.java
+++ b/src/test/java/org/apache/commons/lang3/CharUtilsPerfRun.java
@@ -15,11 +15,14 @@
  * limitations under the License.
  */
 
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 import java.text.NumberFormat;
 import java.util.Calendar;
 
+import org.apache.commons.lang3.CharSet;
+import org.apache.commons.lang3.CharUtils;
+
 /**
  * Tests the difference in performance between CharUtils and CharSet.
  * 
diff --git a/src/test/java/org/apache/commons/lang/CharUtilsTest.java b/src/test/java/org/apache/commons/lang3/CharUtilsTest.java
similarity index 98%
rename from src/test/java/org/apache/commons/lang/CharUtilsTest.java
rename to src/test/java/org/apache/commons/lang3/CharUtilsTest.java
index dfc4c30..7bb375b 100644
--- a/src/test/java/org/apache/commons/lang/CharUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/CharUtilsTest.java
@@ -14,15 +14,18 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Modifier;
 
+import org.apache.commons.lang3.BooleanUtils;
+import org.apache.commons.lang3.CharUtils;
+
 import junit.framework.TestCase;
 
 /**
- * Unit tests {@link org.apache.commons.lang.CharUtils}.
+ * Unit tests {@link org.apache.commons.lang3.CharUtils}.
  *
  * @author Apache Software Foundation
  * @version $Id$
diff --git a/src/test/java/org/apache/commons/lang/ClassUtilsTest.java b/src/test/java/org/apache/commons/lang3/ClassUtilsTest.java
similarity index 94%
rename from src/test/java/org/apache/commons/lang/ClassUtilsTest.java
rename to src/test/java/org/apache/commons/lang3/ClassUtilsTest.java
index b9353e6..9383225 100644
--- a/src/test/java/org/apache/commons/lang/ClassUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/ClassUtilsTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Method;
@@ -27,12 +27,15 @@
 import java.util.Map;
 import java.util.Set;
 
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.ClassUtils;
+
 import junit.framework.TestCase;
 
 
 
 /**
- * Unit tests {@link org.apache.commons.lang.ClassUtils}.
+ * Unit tests {@link org.apache.commons.lang3.ClassUtils}.
  *
  * @author Apache Software Foundation
  * @author Gary D. Gregory
@@ -111,8 +114,8 @@
 
     // -------------------------------------------------------------------------
     public void test_getPackageName_Object() {
-        assertEquals("org.apache.commons.lang", ClassUtils.getPackageName(new ClassUtils(), "<null>"));
-        assertEquals("org.apache.commons.lang", ClassUtils.getPackageName(new Inner(), "<null>"));
+        assertEquals("org.apache.commons.lang3", ClassUtils.getPackageName(new ClassUtils(), "<null>"));
+        assertEquals("org.apache.commons.lang3", ClassUtils.getPackageName(new Inner(), "<null>"));
         assertEquals("<null>", ClassUtils.getPackageName(null, "<null>"));
     }
     
@@ -141,7 +144,7 @@
     }
     
     public void test_getPackageName_String() {
-        assertEquals("org.apache.commons.lang", ClassUtils.getPackageName(ClassUtils.class.getName()));
+        assertEquals("org.apache.commons.lang3", ClassUtils.getPackageName(ClassUtils.class.getName()));
         assertEquals("java.util", ClassUtils.getPackageName(Map.Entry.class.getName()));
         assertEquals("", ClassUtils.getPackageName((String)null));
         assertEquals("", ClassUtils.getPackageName(""));
@@ -490,8 +493,8 @@
         assertEquals("String.class -> String.class",
             String.class, ClassUtils.primitiveToWrapper(String.class));
         assertEquals("ClassUtils.class -> ClassUtils.class",
-            org.apache.commons.lang.ClassUtils.class, 
-            ClassUtils.primitiveToWrapper(org.apache.commons.lang.ClassUtils.class));
+            org.apache.commons.lang3.ClassUtils.class, 
+            ClassUtils.primitiveToWrapper(org.apache.commons.lang3.ClassUtils.class));
         assertEquals("Void.TYPE -> Void.TYPE",
             Void.TYPE, ClassUtils.primitiveToWrapper(Void.TYPE));
             
@@ -605,10 +608,10 @@
     }
 
     public void testGetInnerClass() throws ClassNotFoundException {
-        assertEquals( Inner.DeeplyNested.class, ClassUtils.getClass( "org.apache.commons.lang.ClassUtilsTest.Inner.DeeplyNested" ) );
-        assertEquals( Inner.DeeplyNested.class, ClassUtils.getClass( "org.apache.commons.lang.ClassUtilsTest.Inner$DeeplyNested" ) );
-        assertEquals( Inner.DeeplyNested.class, ClassUtils.getClass( "org.apache.commons.lang.ClassUtilsTest$Inner$DeeplyNested" ) );
-        assertEquals( Inner.DeeplyNested.class, ClassUtils.getClass( "org.apache.commons.lang.ClassUtilsTest$Inner.DeeplyNested" ) );
+        assertEquals( Inner.DeeplyNested.class, ClassUtils.getClass( "org.apache.commons.lang3.ClassUtilsTest.Inner.DeeplyNested" ) );
+        assertEquals( Inner.DeeplyNested.class, ClassUtils.getClass( "org.apache.commons.lang3.ClassUtilsTest.Inner$DeeplyNested" ) );
+        assertEquals( Inner.DeeplyNested.class, ClassUtils.getClass( "org.apache.commons.lang3.ClassUtilsTest$Inner$DeeplyNested" ) );
+        assertEquals( Inner.DeeplyNested.class, ClassUtils.getClass( "org.apache.commons.lang3.ClassUtilsTest$Inner.DeeplyNested" ) );
     }
 
     public void testGetClassByNormalNameArrays() throws ClassNotFoundException {
@@ -757,11 +760,11 @@
     }
 
     public void test_getShortCanonicalName_String() {
-        assertEquals("ClassUtils", ClassUtils.getShortCanonicalName("org.apache.commons.lang.ClassUtils"));
-        assertEquals("ClassUtils[]", ClassUtils.getShortCanonicalName("[Lorg.apache.commons.lang.ClassUtils;"));
-        assertEquals("ClassUtils[][]", ClassUtils.getShortCanonicalName("[[Lorg.apache.commons.lang.ClassUtils;"));
-        assertEquals("ClassUtils[]", ClassUtils.getShortCanonicalName("org.apache.commons.lang.ClassUtils[]"));
-        assertEquals("ClassUtils[][]", ClassUtils.getShortCanonicalName("org.apache.commons.lang.ClassUtils[][]"));
+        assertEquals("ClassUtils", ClassUtils.getShortCanonicalName("org.apache.commons.lang3.ClassUtils"));
+        assertEquals("ClassUtils[]", ClassUtils.getShortCanonicalName("[Lorg.apache.commons.lang3.ClassUtils;"));
+        assertEquals("ClassUtils[][]", ClassUtils.getShortCanonicalName("[[Lorg.apache.commons.lang3.ClassUtils;"));
+        assertEquals("ClassUtils[]", ClassUtils.getShortCanonicalName("org.apache.commons.lang3.ClassUtils[]"));
+        assertEquals("ClassUtils[][]", ClassUtils.getShortCanonicalName("org.apache.commons.lang3.ClassUtils[][]"));
         assertEquals("int[]", ClassUtils.getShortCanonicalName("[I"));
         assertEquals("int[][]", ClassUtils.getShortCanonicalName("[[I"));
         assertEquals("int[]", ClassUtils.getShortCanonicalName("int[]"));
@@ -770,32 +773,32 @@
 
     public void test_getPackageCanonicalName_Object() {
         assertEquals("<null>", ClassUtils.getPackageCanonicalName(null, "<null>"));
-        assertEquals("org.apache.commons.lang", ClassUtils.getPackageCanonicalName(new ClassUtils(), "<null>"));
-        assertEquals("org.apache.commons.lang", ClassUtils.getPackageCanonicalName(new ClassUtils[0], "<null>"));
-        assertEquals("org.apache.commons.lang", ClassUtils.getPackageCanonicalName(new ClassUtils[0][0], "<null>"));
+        assertEquals("org.apache.commons.lang3", ClassUtils.getPackageCanonicalName(new ClassUtils(), "<null>"));
+        assertEquals("org.apache.commons.lang3", ClassUtils.getPackageCanonicalName(new ClassUtils[0], "<null>"));
+        assertEquals("org.apache.commons.lang3", ClassUtils.getPackageCanonicalName(new ClassUtils[0][0], "<null>"));
         assertEquals("", ClassUtils.getPackageCanonicalName(new int[0], "<null>"));
         assertEquals("", ClassUtils.getPackageCanonicalName(new int[0][0], "<null>"));
     }
 
     public void test_getPackageCanonicalName_Class() {
-        assertEquals("org.apache.commons.lang", ClassUtils.getPackageCanonicalName(ClassUtils.class));
-        assertEquals("org.apache.commons.lang", ClassUtils.getPackageCanonicalName(ClassUtils[].class));
-        assertEquals("org.apache.commons.lang", ClassUtils.getPackageCanonicalName(ClassUtils[][].class));
+        assertEquals("org.apache.commons.lang3", ClassUtils.getPackageCanonicalName(ClassUtils.class));
+        assertEquals("org.apache.commons.lang3", ClassUtils.getPackageCanonicalName(ClassUtils[].class));
+        assertEquals("org.apache.commons.lang3", ClassUtils.getPackageCanonicalName(ClassUtils[][].class));
         assertEquals("", ClassUtils.getPackageCanonicalName(int[].class));
         assertEquals("", ClassUtils.getPackageCanonicalName(int[][].class));
     }
 
     public void test_getPackageCanonicalName_String() {
-        assertEquals("org.apache.commons.lang", 
-            ClassUtils.getPackageCanonicalName("org.apache.commons.lang.ClassUtils"));
-        assertEquals("org.apache.commons.lang", 
-            ClassUtils.getPackageCanonicalName("[Lorg.apache.commons.lang.ClassUtils;"));
-        assertEquals("org.apache.commons.lang", 
-            ClassUtils.getPackageCanonicalName("[[Lorg.apache.commons.lang.ClassUtils;"));
-        assertEquals("org.apache.commons.lang", 
-            ClassUtils.getPackageCanonicalName("org.apache.commons.lang.ClassUtils[]"));
-        assertEquals("org.apache.commons.lang", 
-            ClassUtils.getPackageCanonicalName("org.apache.commons.lang.ClassUtils[][]"));
+        assertEquals("org.apache.commons.lang3", 
+            ClassUtils.getPackageCanonicalName("org.apache.commons.lang3.ClassUtils"));
+        assertEquals("org.apache.commons.lang3", 
+            ClassUtils.getPackageCanonicalName("[Lorg.apache.commons.lang3.ClassUtils;"));
+        assertEquals("org.apache.commons.lang3", 
+            ClassUtils.getPackageCanonicalName("[[Lorg.apache.commons.lang3.ClassUtils;"));
+        assertEquals("org.apache.commons.lang3", 
+            ClassUtils.getPackageCanonicalName("org.apache.commons.lang3.ClassUtils[]"));
+        assertEquals("org.apache.commons.lang3", 
+            ClassUtils.getPackageCanonicalName("org.apache.commons.lang3.ClassUtils[][]"));
         assertEquals("", ClassUtils.getPackageCanonicalName("[I"));
         assertEquals("", ClassUtils.getPackageCanonicalName("[[I"));
         assertEquals("", ClassUtils.getPackageCanonicalName("int[]"));
diff --git a/src/test/java/org/apache/commons/lang/EntitiesPerformanceTest.java b/src/test/java/org/apache/commons/lang3/EntitiesPerformanceTest.java
similarity index 98%
rename from src/test/java/org/apache/commons/lang/EntitiesPerformanceTest.java
rename to src/test/java/org/apache/commons/lang3/EntitiesPerformanceTest.java
index afd882f..9855142 100644
--- a/src/test/java/org/apache/commons/lang/EntitiesPerformanceTest.java
+++ b/src/test/java/org/apache/commons/lang3/EntitiesPerformanceTest.java
@@ -14,7 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
+
+import org.apache.commons.lang3.Entities;
 
 import junit.framework.TestCase;
 
diff --git a/src/test/java/org/apache/commons/lang/EntitiesTest.java b/src/test/java/org/apache/commons/lang3/EntitiesTest.java
similarity index 97%
rename from src/test/java/org/apache/commons/lang/EntitiesTest.java
rename to src/test/java/org/apache/commons/lang3/EntitiesTest.java
index 8cb96f6..6088b4b 100644
--- a/src/test/java/org/apache/commons/lang/EntitiesTest.java
+++ b/src/test/java/org/apache/commons/lang3/EntitiesTest.java
@@ -14,10 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 import java.io.StringWriter;
 
+import org.apache.commons.lang3.Entities;
+import org.apache.commons.lang3.StringEscapeUtils;
+
 import junit.framework.TestCase;
 
 /**
diff --git a/src/test/java/org/apache/commons/lang/IllegalClassExceptionTest.java b/src/test/java/org/apache/commons/lang3/IllegalClassExceptionTest.java
similarity index 97%
rename from src/test/java/org/apache/commons/lang/IllegalClassExceptionTest.java
rename to src/test/java/org/apache/commons/lang3/IllegalClassExceptionTest.java
index bad5130..b59c206 100644
--- a/src/test/java/org/apache/commons/lang/IllegalClassExceptionTest.java
+++ b/src/test/java/org/apache/commons/lang3/IllegalClassExceptionTest.java
@@ -14,7 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
+
+import org.apache.commons.lang3.IllegalClassException;
 
 import junit.framework.TestCase;
 
diff --git a/src/test/java/org/apache/commons/lang/IncompleteArgumentExceptionTest.java b/src/test/java/org/apache/commons/lang3/IncompleteArgumentExceptionTest.java
similarity index 96%
rename from src/test/java/org/apache/commons/lang/IncompleteArgumentExceptionTest.java
rename to src/test/java/org/apache/commons/lang3/IncompleteArgumentExceptionTest.java
index e943348..15cc1d8 100644
--- a/src/test/java/org/apache/commons/lang/IncompleteArgumentExceptionTest.java
+++ b/src/test/java/org/apache/commons/lang3/IncompleteArgumentExceptionTest.java
@@ -14,7 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
+
+import org.apache.commons.lang3.IncompleteArgumentException;
 
 import junit.framework.TestCase;
 
diff --git a/src/test/java/org/apache/commons/lang/IntHashMapTest.java b/src/test/java/org/apache/commons/lang3/IntHashMapTest.java
similarity index 97%
rename from src/test/java/org/apache/commons/lang/IntHashMapTest.java
rename to src/test/java/org/apache/commons/lang3/IntHashMapTest.java
index 6e0cc8d..3e67651 100644
--- a/src/test/java/org/apache/commons/lang/IntHashMapTest.java
+++ b/src/test/java/org/apache/commons/lang3/IntHashMapTest.java
@@ -14,7 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
+
+import org.apache.commons.lang3.IntHashMap;
 
 import junit.framework.TestCase;
 
diff --git a/src/test/java/org/apache/commons/lang/LocaleUtilsTest.java b/src/test/java/org/apache/commons/lang3/LocaleUtilsTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/LocaleUtilsTest.java
rename to src/test/java/org/apache/commons/lang3/LocaleUtilsTest.java
index 1c7f885..7e46bec 100644
--- a/src/test/java/org/apache/commons/lang/LocaleUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/LocaleUtilsTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Modifier;
@@ -26,6 +26,9 @@
 import java.util.Locale;
 import java.util.Set;
 
+import org.apache.commons.lang3.LocaleUtils;
+import org.apache.commons.lang3.SystemUtils;
+
 import junit.framework.TestCase;
 
 /**
diff --git a/src/test/java/org/apache/commons/lang/NotImplementedExceptionTest.java b/src/test/java/org/apache/commons/lang3/NotImplementedExceptionTest.java
similarity index 97%
rename from src/test/java/org/apache/commons/lang/NotImplementedExceptionTest.java
rename to src/test/java/org/apache/commons/lang3/NotImplementedExceptionTest.java
index da5aad7..0649f84 100644
--- a/src/test/java/org/apache/commons/lang/NotImplementedExceptionTest.java
+++ b/src/test/java/org/apache/commons/lang3/NotImplementedExceptionTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 import java.io.ByteArrayOutputStream;
 import java.io.PrintStream;
@@ -24,7 +24,9 @@
 
 import junit.framework.TestCase;
 
-import org.apache.commons.lang.exception.NestableException;
+import org.apache.commons.lang3.NotImplementedException;
+import org.apache.commons.lang3.SystemUtils;
+import org.apache.commons.lang3.exception.NestableException;
 
 /**
  * JUnit tests.
diff --git a/src/test/java/org/apache/commons/lang/NullArgumentExceptionTest.java b/src/test/java/org/apache/commons/lang3/NullArgumentExceptionTest.java
similarity index 94%
rename from src/test/java/org/apache/commons/lang/NullArgumentExceptionTest.java
rename to src/test/java/org/apache/commons/lang3/NullArgumentExceptionTest.java
index 08a2101..b86ed54 100644
--- a/src/test/java/org/apache/commons/lang/NullArgumentExceptionTest.java
+++ b/src/test/java/org/apache/commons/lang3/NullArgumentExceptionTest.java
@@ -14,7 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
+
+import org.apache.commons.lang3.NullArgumentException;
 
 import junit.framework.TestCase;
 
diff --git a/src/test/java/org/apache/commons/lang/NumberRangeTest.java b/src/test/java/org/apache/commons/lang3/NumberRangeTest.java
similarity index 98%
rename from src/test/java/org/apache/commons/lang/NumberRangeTest.java
rename to src/test/java/org/apache/commons/lang3/NumberRangeTest.java
index 7dc9a98..310af17 100644
--- a/src/test/java/org/apache/commons/lang/NumberRangeTest.java
+++ b/src/test/java/org/apache/commons/lang3/NumberRangeTest.java
@@ -14,7 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
+
+import org.apache.commons.lang3.NumberRange;
 
 import junit.framework.TestCase;
 
diff --git a/src/test/java/org/apache/commons/lang/NumberUtilsTest.java b/src/test/java/org/apache/commons/lang3/NumberUtilsTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/NumberUtilsTest.java
rename to src/test/java/org/apache/commons/lang3/NumberUtilsTest.java
index 9c59bb9..763fef2 100644
--- a/src/test/java/org/apache/commons/lang/NumberUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/NumberUtilsTest.java
@@ -14,15 +14,18 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 import java.math.BigDecimal;
 import java.math.BigInteger;
 
+import org.apache.commons.lang3.NumberUtils;
+import org.apache.commons.lang3.SystemUtils;
+
 import junit.framework.TestCase;
 
 /**
- * Unit tests {@link org.apache.commons.lang.NumberUtils}.
+ * Unit tests {@link org.apache.commons.lang3.NumberUtils}.
  *
  * @author Apache Software Foundation
  * @author <a href="mailto:rand_mcneely@yahoo.com">Rand McNeely</a>
diff --git a/src/test/java/org/apache/commons/lang/ObjectUtilsTest.java b/src/test/java/org/apache/commons/lang3/ObjectUtilsTest.java
similarity index 97%
rename from src/test/java/org/apache/commons/lang/ObjectUtilsTest.java
rename to src/test/java/org/apache/commons/lang3/ObjectUtilsTest.java
index b1862b8..3c13d62 100644
--- a/src/test/java/org/apache/commons/lang/ObjectUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/ObjectUtilsTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Modifier;
@@ -23,11 +23,13 @@
 
 import junit.framework.TestCase;
 
-import org.apache.commons.lang.exception.CloneFailedException;
-import org.apache.commons.lang.mutable.MutableObject;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.SerializationUtils;
+import org.apache.commons.lang3.exception.CloneFailedException;
+import org.apache.commons.lang3.mutable.MutableObject;
 
 /**
- * Unit tests {@link org.apache.commons.lang.ObjectUtils}.
+ * Unit tests {@link org.apache.commons.lang3.ObjectUtils}.
  *
  * @author Apache Software Foundation
  * @author <a href="mailto:jmcnally@collab.net">John McNally</a>
diff --git a/src/test/java/org/apache/commons/lang/RandomStringUtilsTest.java b/src/test/java/org/apache/commons/lang3/RandomStringUtilsTest.java
similarity index 98%
rename from src/test/java/org/apache/commons/lang/RandomStringUtilsTest.java
rename to src/test/java/org/apache/commons/lang3/RandomStringUtilsTest.java
index 966b973..41ede62 100644
--- a/src/test/java/org/apache/commons/lang/RandomStringUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/RandomStringUtilsTest.java
@@ -14,15 +14,17 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Modifier;
 import java.util.Random;
 
+import org.apache.commons.lang3.RandomStringUtils;
+
 
 /**
- * Unit tests {@link org.apache.commons.lang.RandomStringUtils}.
+ * Unit tests {@link org.apache.commons.lang3.RandomStringUtils}.
  *
  * @author <a href="mailto:steven@caswell.name">Steven Caswell</a>
  * @author <a href="mailto:ridesmet@users.sourceforge.net">Ringo De Smet</a>
diff --git a/src/test/java/org/apache/commons/lang/SerializationUtilsTest.java b/src/test/java/org/apache/commons/lang3/SerializationUtilsTest.java
similarity index 98%
rename from src/test/java/org/apache/commons/lang/SerializationUtilsTest.java
rename to src/test/java/org/apache/commons/lang3/SerializationUtilsTest.java
index 4bb2bd6..f8919a6 100644
--- a/src/test/java/org/apache/commons/lang/SerializationUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/SerializationUtilsTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -28,10 +28,13 @@
 import java.lang.reflect.Modifier;
 import java.util.HashMap;
 
+import org.apache.commons.lang3.SerializationException;
+import org.apache.commons.lang3.SerializationUtils;
+
 import junit.framework.TestCase;
 
 /**
- * Unit tests {@link org.apache.commons.lang.SerializationUtils}.
+ * Unit tests {@link org.apache.commons.lang3.SerializationUtils}.
  *
  * @author Apache Software Foundation
  * @author <a href="mailto:ridesmet@users.sourceforge.net">Ringo De Smet</a>
diff --git a/src/test/java/org/apache/commons/lang/StringEscapeUtilsTest.java b/src/test/java/org/apache/commons/lang3/StringEscapeUtilsTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/StringEscapeUtilsTest.java
rename to src/test/java/org/apache/commons/lang3/StringEscapeUtilsTest.java
index 71f7e9e..6022300 100644
--- a/src/test/java/org/apache/commons/lang/StringEscapeUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/StringEscapeUtilsTest.java
@@ -14,13 +14,15 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 import java.io.IOException;
 import java.io.StringWriter;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Modifier;
 
+import org.apache.commons.lang3.StringEscapeUtils;
+
 import junit.framework.TestCase;
 
 /**
diff --git a/src/test/java/org/apache/commons/lang/StringUtilsEqualsIndexOfTest.java b/src/test/java/org/apache/commons/lang3/StringUtilsEqualsIndexOfTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/StringUtilsEqualsIndexOfTest.java
rename to src/test/java/org/apache/commons/lang3/StringUtilsEqualsIndexOfTest.java
index d385729..065aeae 100644
--- a/src/test/java/org/apache/commons/lang/StringUtilsEqualsIndexOfTest.java
+++ b/src/test/java/org/apache/commons/lang3/StringUtilsEqualsIndexOfTest.java
@@ -14,14 +14,16 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 import java.util.Locale;
 
+import org.apache.commons.lang3.StringUtils;
+
 import junit.framework.TestCase;
 
 /**
- * Unit tests {@link org.apache.commons.lang.StringUtils} - Substring methods
+ * Unit tests {@link org.apache.commons.lang3.StringUtils} - Substring methods
  *
  * @author Apache Software Foundation
  * @author <a href="mailto:ridesmet@users.sourceforge.net">Ringo De Smet</a>
diff --git a/src/test/java/org/apache/commons/lang/StringUtilsIsTest.java b/src/test/java/org/apache/commons/lang3/StringUtilsIsTest.java
similarity index 97%
rename from src/test/java/org/apache/commons/lang/StringUtilsIsTest.java
rename to src/test/java/org/apache/commons/lang3/StringUtilsIsTest.java
index 47d6499..42073c2 100644
--- a/src/test/java/org/apache/commons/lang/StringUtilsIsTest.java
+++ b/src/test/java/org/apache/commons/lang3/StringUtilsIsTest.java
@@ -14,12 +14,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
+
+import org.apache.commons.lang3.StringUtils;
 
 import junit.framework.TestCase;
 
 /**
- * Unit tests {@link org.apache.commons.lang.StringUtils} - Substring methods
+ * Unit tests {@link org.apache.commons.lang3.StringUtils} - Substring methods
  *
  * @author Apache Software Foundation
  * @author Michael Davey
diff --git a/src/test/java/org/apache/commons/lang/StringUtilsStartsEndsWithTest.java b/src/test/java/org/apache/commons/lang3/StringUtilsStartsEndsWithTest.java
similarity index 97%
rename from src/test/java/org/apache/commons/lang/StringUtilsStartsEndsWithTest.java
rename to src/test/java/org/apache/commons/lang3/StringUtilsStartsEndsWithTest.java
index 440ada9..6e44414 100644
--- a/src/test/java/org/apache/commons/lang/StringUtilsStartsEndsWithTest.java
+++ b/src/test/java/org/apache/commons/lang3/StringUtilsStartsEndsWithTest.java
@@ -14,12 +14,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
+
+import org.apache.commons.lang3.StringUtils;
 
 import junit.framework.TestCase;
 
 /**
- * Unit tests {@link org.apache.commons.lang.StringUtils} - StartsWith/EndsWith methods
+ * Unit tests {@link org.apache.commons.lang3.StringUtils} - StartsWith/EndsWith methods
  *
  * @version $Id$
  */
diff --git a/src/test/java/org/apache/commons/lang/StringUtilsSubstringTest.java b/src/test/java/org/apache/commons/lang3/StringUtilsSubstringTest.java
similarity index 98%
rename from src/test/java/org/apache/commons/lang/StringUtilsSubstringTest.java
rename to src/test/java/org/apache/commons/lang3/StringUtilsSubstringTest.java
index b604796..e1f0891 100644
--- a/src/test/java/org/apache/commons/lang/StringUtilsSubstringTest.java
+++ b/src/test/java/org/apache/commons/lang3/StringUtilsSubstringTest.java
@@ -14,12 +14,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
+
+import org.apache.commons.lang3.StringUtils;
 
 import junit.framework.TestCase;
 
 /**
- * Unit tests {@link org.apache.commons.lang.StringUtils} - Substring methods
+ * Unit tests {@link org.apache.commons.lang3.StringUtils} - Substring methods
  *
  * @author Apache Software Foundation
  * @author <a href="mailto:ridesmet@users.sourceforge.net">Ringo De Smet</a>
diff --git a/src/test/java/org/apache/commons/lang/StringUtilsTest.java b/src/test/java/org/apache/commons/lang3/StringUtilsTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/StringUtilsTest.java
rename to src/test/java/org/apache/commons/lang3/StringUtilsTest.java
index 7cc0cf0..e88b47e 100644
--- a/src/test/java/org/apache/commons/lang/StringUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/StringUtilsTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Modifier;
@@ -24,10 +24,14 @@
 import java.util.Iterator;
 import java.util.Locale;
 
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.WordUtils;
+
 import junit.framework.TestCase;
 
 /**
- * Unit tests {@link org.apache.commons.lang.StringUtils}.
+ * Unit tests {@link org.apache.commons.lang3.StringUtils}.
  *
  * @author Apache Software Foundation
  * @author Daniel L. Rall
diff --git a/src/test/java/org/apache/commons/lang/StringUtilsTrimEmptyTest.java b/src/test/java/org/apache/commons/lang3/StringUtilsTrimEmptyTest.java
similarity index 98%
rename from src/test/java/org/apache/commons/lang/StringUtilsTrimEmptyTest.java
rename to src/test/java/org/apache/commons/lang3/StringUtilsTrimEmptyTest.java
index 6fe55bc..9173a0a 100644
--- a/src/test/java/org/apache/commons/lang/StringUtilsTrimEmptyTest.java
+++ b/src/test/java/org/apache/commons/lang3/StringUtilsTrimEmptyTest.java
@@ -14,12 +14,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
+
+import org.apache.commons.lang3.StringUtils;
 
 import junit.framework.TestCase;
 
 /**
- * Unit tests {@link org.apache.commons.lang.StringUtils} - Trim/Empty methods
+ * Unit tests {@link org.apache.commons.lang3.StringUtils} - Trim/Empty methods
  *
  * @author Apache Software Foundation
  * @author <a href="mailto:ridesmet@users.sourceforge.net">Ringo De Smet</a>
diff --git a/src/test/java/org/apache/commons/lang/SystemUtilsTest.java b/src/test/java/org/apache/commons/lang3/SystemUtilsTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/SystemUtilsTest.java
rename to src/test/java/org/apache/commons/lang3/SystemUtilsTest.java
index 2f077be..de42fc4 100644
--- a/src/test/java/org/apache/commons/lang/SystemUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/SystemUtilsTest.java
@@ -17,18 +17,20 @@
  * under the License.
  */
 
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 import java.io.File;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Modifier;
 import java.util.Locale;
 
+import org.apache.commons.lang3.SystemUtils;
+
 import junit.framework.Assert;
 import junit.framework.TestCase;
 
 /**
- * Unit tests {@link org.apache.commons.lang.SystemUtils}.
+ * Unit tests {@link org.apache.commons.lang3.SystemUtils}.
  * 
  * Only limited testing can be performed.
  * 
diff --git a/src/test/java/org/apache/commons/lang/UnhandledExceptionTest.java b/src/test/java/org/apache/commons/lang3/UnhandledExceptionTest.java
similarity index 92%
rename from src/test/java/org/apache/commons/lang/UnhandledExceptionTest.java
rename to src/test/java/org/apache/commons/lang3/UnhandledExceptionTest.java
index 6982868..7e989c2 100644
--- a/src/test/java/org/apache/commons/lang/UnhandledExceptionTest.java
+++ b/src/test/java/org/apache/commons/lang3/UnhandledExceptionTest.java
@@ -14,11 +14,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 import junit.framework.TestCase;
 
-import org.apache.commons.lang.exception.Nestable;
+import org.apache.commons.lang3.UnhandledException;
+import org.apache.commons.lang3.exception.Nestable;
 
 /**
  * JUnit tests.
diff --git a/src/test/java/org/apache/commons/lang/ValidateTest.java b/src/test/java/org/apache/commons/lang3/ValidateTest.java
similarity index 98%
rename from src/test/java/org/apache/commons/lang/ValidateTest.java
rename to src/test/java/org/apache/commons/lang3/ValidateTest.java
index 0a2147b..4751a65 100644
--- a/src/test/java/org/apache/commons/lang/ValidateTest.java
+++ b/src/test/java/org/apache/commons/lang3/ValidateTest.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Modifier;
@@ -26,10 +26,12 @@
 import java.util.List;
 import java.util.Map;
 
+import org.apache.commons.lang3.Validate;
+
 import junit.framework.TestCase;
 
 /**
- * Unit tests {@link org.apache.commons.lang.Validate}.
+ * Unit tests {@link org.apache.commons.lang3.Validate}.
  *
  * @author Apache Software Foundation
  * @author Norm Deane
diff --git a/src/test/java/org/apache/commons/lang/WordUtilsTest.java b/src/test/java/org/apache/commons/lang3/WordUtilsTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/WordUtilsTest.java
rename to src/test/java/org/apache/commons/lang3/WordUtilsTest.java
index 6174553..19aa7bb 100644
--- a/src/test/java/org/apache/commons/lang/WordUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/WordUtilsTest.java
@@ -14,11 +14,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang;
+package org.apache.commons.lang3;
 
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Modifier;
 
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.WordUtils;
+
 import junit.framework.TestCase;
 
 /**
diff --git a/src/test/java/org/apache/commons/lang/builder/CompareToBuilderTest.java b/src/test/java/org/apache/commons/lang3/builder/CompareToBuilderTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/builder/CompareToBuilderTest.java
rename to src/test/java/org/apache/commons/lang3/builder/CompareToBuilderTest.java
index 86de96e..ba201e4 100644
--- a/src/test/java/org/apache/commons/lang/builder/CompareToBuilderTest.java
+++ b/src/test/java/org/apache/commons/lang3/builder/CompareToBuilderTest.java
@@ -14,14 +14,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.builder;
+package org.apache.commons.lang3.builder;
 
 import java.math.BigInteger;
 
 import junit.framework.TestCase;
 
 /**
- * Unit tests {@link org.apache.commons.lang.builder.CompareToBuilder}.
+ * Unit tests {@link org.apache.commons.lang3.builder.CompareToBuilder}.
  *
  * @author Apache Software Foundation
  * @author <a href="mailto:sdowney@panix.com">Steve Downey</a>
diff --git a/src/test/java/org/apache/commons/lang/builder/DefaultToStringStyleTest.java b/src/test/java/org/apache/commons/lang3/builder/DefaultToStringStyleTest.java
similarity index 96%
rename from src/test/java/org/apache/commons/lang/builder/DefaultToStringStyleTest.java
rename to src/test/java/org/apache/commons/lang3/builder/DefaultToStringStyleTest.java
index 4aef68b..d022497 100644
--- a/src/test/java/org/apache/commons/lang/builder/DefaultToStringStyleTest.java
+++ b/src/test/java/org/apache/commons/lang3/builder/DefaultToStringStyleTest.java
@@ -14,17 +14,17 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.builder;
+package org.apache.commons.lang3.builder;
 
 import java.util.ArrayList;
 import java.util.HashMap;
 
-import org.apache.commons.lang.builder.ToStringStyleTest.Person;
+import org.apache.commons.lang3.builder.ToStringStyleTest.Person;
 
 import junit.framework.TestCase;
 
 /**
- * Unit tests {@link org.apache.commons.lang.builder.DefaultToStringStyleTest}.
+ * Unit tests {@link org.apache.commons.lang3.builder.DefaultToStringStyleTest}.
  *
  * @author Apache Software Foundation
  * @version $Id$
diff --git a/src/test/java/org/apache/commons/lang/builder/EqualsBuilderTest.java b/src/test/java/org/apache/commons/lang3/builder/EqualsBuilderTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/builder/EqualsBuilderTest.java
rename to src/test/java/org/apache/commons/lang3/builder/EqualsBuilderTest.java
index c83e600..1b2762a 100644
--- a/src/test/java/org/apache/commons/lang/builder/EqualsBuilderTest.java
+++ b/src/test/java/org/apache/commons/lang3/builder/EqualsBuilderTest.java
@@ -14,14 +14,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.builder;
+package org.apache.commons.lang3.builder;
 
 import java.util.Arrays;
 
 import junit.framework.TestCase;
 
 /**
- * Unit tests {@link org.apache.commons.lang.builder.EqualsBuilder}.
+ * Unit tests {@link org.apache.commons.lang3.builder.EqualsBuilder}.
  *
  * @author Apache Software Foundation
  * @author <a href="mailto:sdowney@panix.com">Steve Downey</a>
diff --git a/src/test/java/org/apache/commons/lang/builder/HashCodeBuilderAndEqualsBuilderTest.java b/src/test/java/org/apache/commons/lang3/builder/HashCodeBuilderAndEqualsBuilderTest.java
similarity index 95%
rename from src/test/java/org/apache/commons/lang/builder/HashCodeBuilderAndEqualsBuilderTest.java
rename to src/test/java/org/apache/commons/lang3/builder/HashCodeBuilderAndEqualsBuilderTest.java
index 8ee70c9..155e4ef 100644
--- a/src/test/java/org/apache/commons/lang/builder/HashCodeBuilderAndEqualsBuilderTest.java
+++ b/src/test/java/org/apache/commons/lang3/builder/HashCodeBuilderAndEqualsBuilderTest.java
@@ -14,13 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.builder;
+package org.apache.commons.lang3.builder;
 
 import junit.framework.TestCase;
 
 /**
- * Tests {@link org.apache.commons.lang.builder.HashCodeBuilder} and
- * {@link org.apache.commons.lang.builder.EqualsBuilderTest} to insure that equal
+ * Tests {@link org.apache.commons.lang3.builder.HashCodeBuilder} and
+ * {@link org.apache.commons.lang3.builder.EqualsBuilderTest} to insure that equal
  * objects must have equal hash codes.
  * 
  * @author Gary Gregory
diff --git a/src/test/java/org/apache/commons/lang/builder/HashCodeBuilderTest.java b/src/test/java/org/apache/commons/lang3/builder/HashCodeBuilderTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/builder/HashCodeBuilderTest.java
rename to src/test/java/org/apache/commons/lang3/builder/HashCodeBuilderTest.java
index e7bd65e..4346f64 100644
--- a/src/test/java/org/apache/commons/lang/builder/HashCodeBuilderTest.java
+++ b/src/test/java/org/apache/commons/lang3/builder/HashCodeBuilderTest.java
@@ -15,12 +15,12 @@
  * limitations under the License.
  */
 
-package org.apache.commons.lang.builder;
+package org.apache.commons.lang3.builder;
 
 import junit.framework.TestCase;
 
 /**
- * Unit tests {@link org.apache.commons.lang.builder.HashCodeBuilder}.
+ * Unit tests {@link org.apache.commons.lang3.builder.HashCodeBuilder}.
  * 
  * @author Apache Software Foundation
  * @version $Id$
diff --git a/src/test/java/org/apache/commons/lang/builder/MultiLineToStringStyleTest.java b/src/test/java/org/apache/commons/lang3/builder/MultiLineToStringStyleTest.java
similarity index 97%
rename from src/test/java/org/apache/commons/lang/builder/MultiLineToStringStyleTest.java
rename to src/test/java/org/apache/commons/lang3/builder/MultiLineToStringStyleTest.java
index acc2c56..571dda4 100644
--- a/src/test/java/org/apache/commons/lang/builder/MultiLineToStringStyleTest.java
+++ b/src/test/java/org/apache/commons/lang3/builder/MultiLineToStringStyleTest.java
@@ -14,18 +14,18 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.builder;
+package org.apache.commons.lang3.builder;
 
 import java.util.ArrayList;
 import java.util.HashMap;
 
 import junit.framework.TestCase;
 
-import org.apache.commons.lang.SystemUtils;
-import org.apache.commons.lang.builder.ToStringStyleTest.Person;
+import org.apache.commons.lang3.SystemUtils;
+import org.apache.commons.lang3.builder.ToStringStyleTest.Person;
 
 /**
- * Unit tests {@link org.apache.commons.lang.builder.MultiLineToStringStyleTest}.
+ * Unit tests {@link org.apache.commons.lang3.builder.MultiLineToStringStyleTest}.
  *
  * @author Apache Software Foundation
  * @version $Id$
diff --git a/src/test/java/org/apache/commons/lang/builder/NoFieldNamesToStringStyleTest.java b/src/test/java/org/apache/commons/lang3/builder/NoFieldNamesToStringStyleTest.java
similarity index 96%
rename from src/test/java/org/apache/commons/lang/builder/NoFieldNamesToStringStyleTest.java
rename to src/test/java/org/apache/commons/lang3/builder/NoFieldNamesToStringStyleTest.java
index bed3ac7..e585582 100644
--- a/src/test/java/org/apache/commons/lang/builder/NoFieldNamesToStringStyleTest.java
+++ b/src/test/java/org/apache/commons/lang3/builder/NoFieldNamesToStringStyleTest.java
@@ -14,16 +14,16 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.builder;
+package org.apache.commons.lang3.builder;
 
 import java.util.ArrayList;
 import java.util.HashMap;
 
-import org.apache.commons.lang.builder.ToStringStyleTest.Person;
+import org.apache.commons.lang3.builder.ToStringStyleTest.Person;
 import junit.framework.TestCase;
 
 /**
- * Unit tests {@link org.apache.commons.lang.builder.NoFieldNamesToStringStyleTest}.
+ * Unit tests {@link org.apache.commons.lang3.builder.NoFieldNamesToStringStyleTest}.
  *
  * @author Apache Software Foundation
  * @version $Id$
diff --git a/src/test/java/org/apache/commons/lang/builder/ReflectionToStringBuilderExcludeTest.java b/src/test/java/org/apache/commons/lang3/builder/ReflectionToStringBuilderExcludeTest.java
similarity index 97%
rename from src/test/java/org/apache/commons/lang/builder/ReflectionToStringBuilderExcludeTest.java
rename to src/test/java/org/apache/commons/lang3/builder/ReflectionToStringBuilderExcludeTest.java
index 27970bc..20fc30b 100644
--- a/src/test/java/org/apache/commons/lang/builder/ReflectionToStringBuilderExcludeTest.java
+++ b/src/test/java/org/apache/commons/lang3/builder/ReflectionToStringBuilderExcludeTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.commons.lang.builder;
+package org.apache.commons.lang3.builder;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -24,7 +24,7 @@
 import junit.framework.Assert;
 import junit.framework.TestCase;
 
-import org.apache.commons.lang.ArrayUtils;
+import org.apache.commons.lang3.ArrayUtils;
 
 /**
  * @author <a href="mailto:ggregory@seagullsw.com">ggregory</a>
diff --git a/src/test/java/org/apache/commons/lang/builder/ShortPrefixToStringStyleTest.java b/src/test/java/org/apache/commons/lang3/builder/ShortPrefixToStringStyleTest.java
similarity index 96%
rename from src/test/java/org/apache/commons/lang/builder/ShortPrefixToStringStyleTest.java
rename to src/test/java/org/apache/commons/lang3/builder/ShortPrefixToStringStyleTest.java
index 55ac6ad..a74021d 100644
--- a/src/test/java/org/apache/commons/lang/builder/ShortPrefixToStringStyleTest.java
+++ b/src/test/java/org/apache/commons/lang3/builder/ShortPrefixToStringStyleTest.java
@@ -14,17 +14,17 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.builder;
+package org.apache.commons.lang3.builder;
 
 import java.util.ArrayList;
 import java.util.HashMap;
 
-import org.apache.commons.lang.builder.ToStringStyleTest.Person;
+import org.apache.commons.lang3.builder.ToStringStyleTest.Person;
 
 import junit.framework.TestCase;
 
 /**
- * Unit tests {@link org.apache.commons.lang.builder.ToStringStyle#SHORT_PREFIX_STYLE}.
+ * Unit tests {@link org.apache.commons.lang3.builder.ToStringStyle#SHORT_PREFIX_STYLE}.
  * 
  * @author <a href="mailto:ggregory@seagullsw.com">Gary Gregory</a>
  * @version $Id$
diff --git a/src/test/java/org/apache/commons/lang/builder/SimpleToStringStyleTest.java b/src/test/java/org/apache/commons/lang3/builder/SimpleToStringStyleTest.java
similarity index 96%
rename from src/test/java/org/apache/commons/lang/builder/SimpleToStringStyleTest.java
rename to src/test/java/org/apache/commons/lang3/builder/SimpleToStringStyleTest.java
index 491089c..a9313b5 100644
--- a/src/test/java/org/apache/commons/lang/builder/SimpleToStringStyleTest.java
+++ b/src/test/java/org/apache/commons/lang3/builder/SimpleToStringStyleTest.java
@@ -14,16 +14,16 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.builder;
+package org.apache.commons.lang3.builder;
 
 import java.util.ArrayList;
 import java.util.HashMap;
 
-import org.apache.commons.lang.builder.ToStringStyleTest.Person;
+import org.apache.commons.lang3.builder.ToStringStyleTest.Person;
 import junit.framework.TestCase;
 
 /**
- * Unit tests {@link org.apache.commons.lang.builder.SimpleToStringStyleTest}.
+ * Unit tests {@link org.apache.commons.lang3.builder.SimpleToStringStyleTest}.
  *
  * @author Apache Software Foundation
  * @version $Id$
diff --git a/src/test/java/org/apache/commons/lang/builder/StandardToStringStyleTest.java b/src/test/java/org/apache/commons/lang3/builder/StandardToStringStyleTest.java
similarity index 97%
rename from src/test/java/org/apache/commons/lang/builder/StandardToStringStyleTest.java
rename to src/test/java/org/apache/commons/lang3/builder/StandardToStringStyleTest.java
index 16be153..c58a832 100644
--- a/src/test/java/org/apache/commons/lang/builder/StandardToStringStyleTest.java
+++ b/src/test/java/org/apache/commons/lang3/builder/StandardToStringStyleTest.java
@@ -14,17 +14,17 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.builder;
+package org.apache.commons.lang3.builder;
 
 import java.util.ArrayList;
 import java.util.HashMap;
 
-import org.apache.commons.lang.builder.ToStringStyleTest.Person;
+import org.apache.commons.lang3.builder.ToStringStyleTest.Person;
 
 import junit.framework.TestCase;
 
 /**
- * Unit tests {@link org.apache.commons.lang.builder.ToStringStyle}.
+ * Unit tests {@link org.apache.commons.lang3.builder.ToStringStyle}.
  *
  * @author Apache Software Foundation
  * @version $Id$
diff --git a/src/test/java/org/apache/commons/lang/builder/ToStringBuilderTest.java b/src/test/java/org/apache/commons/lang3/builder/ToStringBuilderTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/builder/ToStringBuilderTest.java
rename to src/test/java/org/apache/commons/lang3/builder/ToStringBuilderTest.java
index a908926..2ddaee7 100644
--- a/src/test/java/org/apache/commons/lang/builder/ToStringBuilderTest.java
+++ b/src/test/java/org/apache/commons/lang3/builder/ToStringBuilderTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.builder;
+package org.apache.commons.lang3.builder;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -23,7 +23,7 @@
 import junit.framework.TestCase;
 
 /**
- * Unit tests for {@link org.apache.commons.lang.builder.ToStringBuilder}.
+ * Unit tests for {@link org.apache.commons.lang3.builder.ToStringBuilder}.
  *
  * @author Apache Software Foundation
  * @author <a href="mailto:ggregory@seagullsw.com">Gary Gregory</a>
diff --git a/src/test/java/org/apache/commons/lang/builder/ToStringStyleTest.java b/src/test/java/org/apache/commons/lang3/builder/ToStringStyleTest.java
similarity index 98%
rename from src/test/java/org/apache/commons/lang/builder/ToStringStyleTest.java
rename to src/test/java/org/apache/commons/lang3/builder/ToStringStyleTest.java
index aeeb941..379d687 100644
--- a/src/test/java/org/apache/commons/lang/builder/ToStringStyleTest.java
+++ b/src/test/java/org/apache/commons/lang3/builder/ToStringStyleTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.builder;
+package org.apache.commons.lang3.builder;
 
 import junit.framework.TestCase;
 
diff --git a/src/test/java/org/apache/commons/lang/enums/Broken1Enum.java b/src/test/java/org/apache/commons/lang3/enum/Broken1Enum.java
similarity index 97%
copy from src/test/java/org/apache/commons/lang/enums/Broken1Enum.java
copy to src/test/java/org/apache/commons/lang3/enum/Broken1Enum.java
index a448526..2004f7d 100644
--- a/src/test/java/org/apache/commons/lang/enums/Broken1Enum.java
+++ b/src/test/java/org/apache/commons/lang3/enum/Broken1Enum.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enums;
+package org.apache.commons.lang3.enum;
 
 import java.util.Iterator;
 import java.util.List;
diff --git a/src/test/java/org/apache/commons/lang/enum/Broken1OperationEnum.java b/src/test/java/org/apache/commons/lang3/enum/Broken1OperationEnum.java
similarity index 98%
rename from src/test/java/org/apache/commons/lang/enum/Broken1OperationEnum.java
rename to src/test/java/org/apache/commons/lang3/enum/Broken1OperationEnum.java
index 237b1e6..85e97d9 100644
--- a/src/test/java/org/apache/commons/lang/enum/Broken1OperationEnum.java
+++ b/src/test/java/org/apache/commons/lang3/enum/Broken1OperationEnum.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enum;
+package org.apache.commons.lang3.enum;
 
 import java.util.Iterator;
 import java.util.List;
diff --git a/src/test/java/org/apache/commons/lang/enums/Broken2Enum.java b/src/test/java/org/apache/commons/lang3/enum/Broken2Enum.java
similarity index 97%
copy from src/test/java/org/apache/commons/lang/enums/Broken2Enum.java
copy to src/test/java/org/apache/commons/lang3/enum/Broken2Enum.java
index 101e709..e110266 100644
--- a/src/test/java/org/apache/commons/lang/enums/Broken2Enum.java
+++ b/src/test/java/org/apache/commons/lang3/enum/Broken2Enum.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enums;
+package org.apache.commons.lang3.enum;
 
 import java.util.Iterator;
 import java.util.List;
diff --git a/src/test/java/org/apache/commons/lang/enum/Broken2OperationEnum.java b/src/test/java/org/apache/commons/lang3/enum/Broken2OperationEnum.java
similarity index 98%
copy from src/test/java/org/apache/commons/lang/enum/Broken2OperationEnum.java
copy to src/test/java/org/apache/commons/lang3/enum/Broken2OperationEnum.java
index 15f3d9c..054f9fa 100644
--- a/src/test/java/org/apache/commons/lang/enum/Broken2OperationEnum.java
+++ b/src/test/java/org/apache/commons/lang3/enum/Broken2OperationEnum.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enum;
+package org.apache.commons.lang3.enum;
 
 import java.util.Iterator;
 import java.util.List;
diff --git a/src/test/java/org/apache/commons/lang/enums/Broken3Enum.java b/src/test/java/org/apache/commons/lang3/enum/Broken3Enum.java
similarity index 97%
copy from src/test/java/org/apache/commons/lang/enums/Broken3Enum.java
copy to src/test/java/org/apache/commons/lang3/enum/Broken3Enum.java
index b5b3f77..7d4b386 100644
--- a/src/test/java/org/apache/commons/lang/enums/Broken3Enum.java
+++ b/src/test/java/org/apache/commons/lang3/enum/Broken3Enum.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enums;
+package org.apache.commons.lang3.enum;
 
 import java.util.Iterator;
 import java.util.List;
diff --git a/src/test/java/org/apache/commons/lang/enum/Broken3OperationEnum.java b/src/test/java/org/apache/commons/lang3/enum/Broken3OperationEnum.java
similarity index 98%
copy from src/test/java/org/apache/commons/lang/enum/Broken3OperationEnum.java
copy to src/test/java/org/apache/commons/lang3/enum/Broken3OperationEnum.java
index 596dd9b..79eae63 100644
--- a/src/test/java/org/apache/commons/lang/enum/Broken3OperationEnum.java
+++ b/src/test/java/org/apache/commons/lang3/enum/Broken3OperationEnum.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enum;
+package org.apache.commons.lang3.enum;
 
 import java.util.Iterator;
 import java.util.List;
diff --git a/src/test/java/org/apache/commons/lang/enum/Broken4OperationEnum.java b/src/test/java/org/apache/commons/lang3/enum/Broken4OperationEnum.java
similarity index 98%
copy from src/test/java/org/apache/commons/lang/enum/Broken4OperationEnum.java
copy to src/test/java/org/apache/commons/lang3/enum/Broken4OperationEnum.java
index e5528e2..8e1fed7 100644
--- a/src/test/java/org/apache/commons/lang/enum/Broken4OperationEnum.java
+++ b/src/test/java/org/apache/commons/lang3/enum/Broken4OperationEnum.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enum;
+package org.apache.commons.lang3.enum;
 
 import java.util.Iterator;
 import java.util.List;
diff --git a/src/test/java/org/apache/commons/lang/enums/Broken5OperationEnum.java b/src/test/java/org/apache/commons/lang3/enum/Broken5OperationEnum.java
similarity index 98%
rename from src/test/java/org/apache/commons/lang/enums/Broken5OperationEnum.java
rename to src/test/java/org/apache/commons/lang3/enum/Broken5OperationEnum.java
index 66a0262..4f2100a 100644
--- a/src/test/java/org/apache/commons/lang/enums/Broken5OperationEnum.java
+++ b/src/test/java/org/apache/commons/lang3/enum/Broken5OperationEnum.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enums;
+package org.apache.commons.lang3.enum;
 
 import java.util.Iterator;
 import java.util.List;
diff --git a/src/test/java/org/apache/commons/lang/enum/ColorEnum.java b/src/test/java/org/apache/commons/lang3/enum/ColorEnum.java
similarity index 97%
copy from src/test/java/org/apache/commons/lang/enum/ColorEnum.java
copy to src/test/java/org/apache/commons/lang3/enum/ColorEnum.java
index 9751479..70101e8 100644
--- a/src/test/java/org/apache/commons/lang/enum/ColorEnum.java
+++ b/src/test/java/org/apache/commons/lang3/enum/ColorEnum.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enum;
+package org.apache.commons.lang3.enum;
 
 import java.util.Iterator;
 import java.util.List;
diff --git a/src/test/java/org/apache/commons/lang/enum/DummyEnum.java b/src/test/java/org/apache/commons/lang3/enum/DummyEnum.java
similarity index 96%
rename from src/test/java/org/apache/commons/lang/enum/DummyEnum.java
rename to src/test/java/org/apache/commons/lang3/enum/DummyEnum.java
index 27d2eef..7494f5e 100644
--- a/src/test/java/org/apache/commons/lang/enum/DummyEnum.java
+++ b/src/test/java/org/apache/commons/lang3/enum/DummyEnum.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enum;
+package org.apache.commons.lang3.enum;
 
 /**
  * Dummy enumeration - no values.
diff --git a/src/test/java/org/apache/commons/lang/enum/EnumTest.java b/src/test/java/org/apache/commons/lang3/enum/EnumTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/enum/EnumTest.java
rename to src/test/java/org/apache/commons/lang3/enum/EnumTest.java
index 768aa6d..b00da76 100644
--- a/src/test/java/org/apache/commons/lang/enum/EnumTest.java
+++ b/src/test/java/org/apache/commons/lang3/enum/EnumTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.commons.lang.enum;
+package org.apache.commons.lang3.enum;
 
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
@@ -30,7 +30,7 @@
 import junit.framework.AssertionFailedError;
 import junit.framework.TestCase;
 
-import org.apache.commons.lang.SerializationUtils;
+import org.apache.commons.lang3.SerializationUtils;
 
 /**
  * Test cases for the {@link Enum} class.
@@ -42,7 +42,7 @@
 
 public final class EnumTest extends TestCase {
 
-    private static final String ENUM_CLASS_NAME = "org.apache.commons.lang.enum.ColorEnum";
+    private static final String ENUM_CLASS_NAME = "org.apache.commons.lang3.enum.ColorEnum";
 
     public EnumTest(String name) {
         super(name);
diff --git a/src/test/java/org/apache/commons/lang/enums/EnumUtilsTest.java b/src/test/java/org/apache/commons/lang3/enum/EnumUtilsTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/enums/EnumUtilsTest.java
rename to src/test/java/org/apache/commons/lang3/enum/EnumUtilsTest.java
index c0ab1e1..356ba2b 100644
--- a/src/test/java/org/apache/commons/lang/enums/EnumUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/enum/EnumUtilsTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enums;
+package org.apache.commons.lang3.enum;
 
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Modifier;
@@ -156,4 +156,5 @@
             fail();
         } catch (IllegalArgumentException ex) {}
     }
+
 }
diff --git a/src/test/java/org/apache/commons/lang/enum/Extended1Enum.java b/src/test/java/org/apache/commons/lang3/enum/Extended1Enum.java
similarity index 97%
copy from src/test/java/org/apache/commons/lang/enum/Extended1Enum.java
copy to src/test/java/org/apache/commons/lang3/enum/Extended1Enum.java
index 4e80783..47e34c7 100644
--- a/src/test/java/org/apache/commons/lang/enum/Extended1Enum.java
+++ b/src/test/java/org/apache/commons/lang3/enum/Extended1Enum.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.commons.lang.enum;
+package org.apache.commons.lang3.enum;
 
 import java.util.Iterator;
 import java.util.List;
diff --git a/src/test/java/org/apache/commons/lang/enum/Extended2Enum.java b/src/test/java/org/apache/commons/lang3/enum/Extended2Enum.java
similarity index 97%
copy from src/test/java/org/apache/commons/lang/enum/Extended2Enum.java
copy to src/test/java/org/apache/commons/lang3/enum/Extended2Enum.java
index b4f8aa7..2207bdf 100644
--- a/src/test/java/org/apache/commons/lang/enum/Extended2Enum.java
+++ b/src/test/java/org/apache/commons/lang3/enum/Extended2Enum.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.commons.lang.enum;
+package org.apache.commons.lang3.enum;
 
 import java.util.Iterator;
 import java.util.List;
diff --git a/src/test/java/org/apache/commons/lang/enums/Extended3Enum.java b/src/test/java/org/apache/commons/lang3/enum/Extended3Enum.java
similarity index 97%
rename from src/test/java/org/apache/commons/lang/enums/Extended3Enum.java
rename to src/test/java/org/apache/commons/lang3/enum/Extended3Enum.java
index c489543..60af4fa 100644
--- a/src/test/java/org/apache/commons/lang/enums/Extended3Enum.java
+++ b/src/test/java/org/apache/commons/lang3/enum/Extended3Enum.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.commons.lang.enums;
+package org.apache.commons.lang3.enum;
 
 import java.util.Iterator;
 import java.util.List;
diff --git a/src/test/java/org/apache/commons/lang/enum/Nest.java b/src/test/java/org/apache/commons/lang3/enum/Nest.java
similarity index 97%
copy from src/test/java/org/apache/commons/lang/enum/Nest.java
copy to src/test/java/org/apache/commons/lang3/enum/Nest.java
index 9141965..5b6d4cd 100644
--- a/src/test/java/org/apache/commons/lang/enum/Nest.java
+++ b/src/test/java/org/apache/commons/lang3/enum/Nest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enum;
+package org.apache.commons.lang3.enum;
 
 import java.util.Iterator;
 import java.util.List;
diff --git a/src/test/java/org/apache/commons/lang/enums/NestBroken.java b/src/test/java/org/apache/commons/lang3/enum/NestBroken.java
similarity index 97%
copy from src/test/java/org/apache/commons/lang/enums/NestBroken.java
copy to src/test/java/org/apache/commons/lang3/enum/NestBroken.java
index 852d8d8..1b7c880 100644
--- a/src/test/java/org/apache/commons/lang/enums/NestBroken.java
+++ b/src/test/java/org/apache/commons/lang3/enum/NestBroken.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enums;
+package org.apache.commons.lang3.enum;
 
 import java.util.Iterator;
 import java.util.List;
diff --git a/src/test/java/org/apache/commons/lang/enum/NestLinked.java b/src/test/java/org/apache/commons/lang3/enum/NestLinked.java
similarity index 98%
rename from src/test/java/org/apache/commons/lang/enum/NestLinked.java
rename to src/test/java/org/apache/commons/lang3/enum/NestLinked.java
index 2c2026e..0b4ea99 100644
--- a/src/test/java/org/apache/commons/lang/enum/NestLinked.java
+++ b/src/test/java/org/apache/commons/lang3/enum/NestLinked.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enum;
+package org.apache.commons.lang3.enum;
 
 import java.util.Iterator;
 import java.util.List;
diff --git a/src/test/java/org/apache/commons/lang/enum/NestReferenced.java b/src/test/java/org/apache/commons/lang3/enum/NestReferenced.java
similarity index 98%
rename from src/test/java/org/apache/commons/lang/enum/NestReferenced.java
rename to src/test/java/org/apache/commons/lang3/enum/NestReferenced.java
index ec868e8..216e1f2 100644
--- a/src/test/java/org/apache/commons/lang/enum/NestReferenced.java
+++ b/src/test/java/org/apache/commons/lang3/enum/NestReferenced.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enum;
+package org.apache.commons.lang3.enum;
 
 import java.util.Iterator;
 import java.util.List;
diff --git a/src/test/java/org/apache/commons/lang/enum/OperationEnum.java b/src/test/java/org/apache/commons/lang3/enum/OperationEnum.java
similarity index 98%
copy from src/test/java/org/apache/commons/lang/enum/OperationEnum.java
copy to src/test/java/org/apache/commons/lang3/enum/OperationEnum.java
index b485202..b5be0f7 100644
--- a/src/test/java/org/apache/commons/lang/enum/OperationEnum.java
+++ b/src/test/java/org/apache/commons/lang3/enum/OperationEnum.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enum;
+package org.apache.commons.lang3.enum;
 
 import java.util.Iterator;
 import java.util.List;
diff --git a/src/test/java/org/apache/commons/lang/enum/ValuedColorEnum.java b/src/test/java/org/apache/commons/lang3/enum/ValuedColorEnum.java
similarity index 97%
copy from src/test/java/org/apache/commons/lang/enum/ValuedColorEnum.java
copy to src/test/java/org/apache/commons/lang3/enum/ValuedColorEnum.java
index deae7cf..8b2cf26 100644
--- a/src/test/java/org/apache/commons/lang/enum/ValuedColorEnum.java
+++ b/src/test/java/org/apache/commons/lang3/enum/ValuedColorEnum.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enum;
+package org.apache.commons.lang3.enum;
 
 import java.util.Iterator;
 import java.util.List;
diff --git a/src/test/java/org/apache/commons/lang/enum/ValuedEnumTest.java b/src/test/java/org/apache/commons/lang3/enum/ValuedEnumTest.java
similarity index 97%
rename from src/test/java/org/apache/commons/lang/enum/ValuedEnumTest.java
rename to src/test/java/org/apache/commons/lang3/enum/ValuedEnumTest.java
index 1ab3690..b103170 100644
--- a/src/test/java/org/apache/commons/lang/enum/ValuedEnumTest.java
+++ b/src/test/java/org/apache/commons/lang3/enum/ValuedEnumTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enum;
+package org.apache.commons.lang3.enum;
 
 import java.util.Iterator;
 import java.util.List;
@@ -22,7 +22,7 @@
 
 import junit.framework.TestCase;
 
-import org.apache.commons.lang.SerializationUtils;
+import org.apache.commons.lang3.SerializationUtils;
 
 /**
  * Test cases for the {@link Enum} class.
diff --git a/src/test/java/org/apache/commons/lang/enums/Broken1Enum.java b/src/test/java/org/apache/commons/lang3/enums/Broken1Enum.java
similarity index 97%
rename from src/test/java/org/apache/commons/lang/enums/Broken1Enum.java
rename to src/test/java/org/apache/commons/lang3/enums/Broken1Enum.java
index a448526..3c1628a 100644
--- a/src/test/java/org/apache/commons/lang/enums/Broken1Enum.java
+++ b/src/test/java/org/apache/commons/lang3/enums/Broken1Enum.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enums;
+package org.apache.commons.lang3.enums;
 
 import java.util.Iterator;
 import java.util.List;
diff --git a/src/test/java/org/apache/commons/lang/enum/Broken1OperationEnum.java b/src/test/java/org/apache/commons/lang3/enums/Broken1OperationEnum.java
similarity index 98%
copy from src/test/java/org/apache/commons/lang/enum/Broken1OperationEnum.java
copy to src/test/java/org/apache/commons/lang3/enums/Broken1OperationEnum.java
index 237b1e6..3d1d08e 100644
--- a/src/test/java/org/apache/commons/lang/enum/Broken1OperationEnum.java
+++ b/src/test/java/org/apache/commons/lang3/enums/Broken1OperationEnum.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enum;
+package org.apache.commons.lang3.enums;
 
 import java.util.Iterator;
 import java.util.List;
diff --git a/src/test/java/org/apache/commons/lang/enums/Broken2Enum.java b/src/test/java/org/apache/commons/lang3/enums/Broken2Enum.java
similarity index 97%
rename from src/test/java/org/apache/commons/lang/enums/Broken2Enum.java
rename to src/test/java/org/apache/commons/lang3/enums/Broken2Enum.java
index 101e709..da10680 100644
--- a/src/test/java/org/apache/commons/lang/enums/Broken2Enum.java
+++ b/src/test/java/org/apache/commons/lang3/enums/Broken2Enum.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enums;
+package org.apache.commons.lang3.enums;
 
 import java.util.Iterator;
 import java.util.List;
diff --git a/src/test/java/org/apache/commons/lang/enum/Broken2OperationEnum.java b/src/test/java/org/apache/commons/lang3/enums/Broken2OperationEnum.java
similarity index 98%
rename from src/test/java/org/apache/commons/lang/enum/Broken2OperationEnum.java
rename to src/test/java/org/apache/commons/lang3/enums/Broken2OperationEnum.java
index 15f3d9c..dae6feb 100644
--- a/src/test/java/org/apache/commons/lang/enum/Broken2OperationEnum.java
+++ b/src/test/java/org/apache/commons/lang3/enums/Broken2OperationEnum.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enum;
+package org.apache.commons.lang3.enums;
 
 import java.util.Iterator;
 import java.util.List;
diff --git a/src/test/java/org/apache/commons/lang/enums/Broken3Enum.java b/src/test/java/org/apache/commons/lang3/enums/Broken3Enum.java
similarity index 97%
rename from src/test/java/org/apache/commons/lang/enums/Broken3Enum.java
rename to src/test/java/org/apache/commons/lang3/enums/Broken3Enum.java
index b5b3f77..75fde33 100644
--- a/src/test/java/org/apache/commons/lang/enums/Broken3Enum.java
+++ b/src/test/java/org/apache/commons/lang3/enums/Broken3Enum.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enums;
+package org.apache.commons.lang3.enums;
 
 import java.util.Iterator;
 import java.util.List;
diff --git a/src/test/java/org/apache/commons/lang/enum/Broken3OperationEnum.java b/src/test/java/org/apache/commons/lang3/enums/Broken3OperationEnum.java
similarity index 98%
rename from src/test/java/org/apache/commons/lang/enum/Broken3OperationEnum.java
rename to src/test/java/org/apache/commons/lang3/enums/Broken3OperationEnum.java
index 596dd9b..73ebd84 100644
--- a/src/test/java/org/apache/commons/lang/enum/Broken3OperationEnum.java
+++ b/src/test/java/org/apache/commons/lang3/enums/Broken3OperationEnum.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enum;
+package org.apache.commons.lang3.enums;
 
 import java.util.Iterator;
 import java.util.List;
diff --git a/src/test/java/org/apache/commons/lang/enum/Broken4OperationEnum.java b/src/test/java/org/apache/commons/lang3/enums/Broken4OperationEnum.java
similarity index 98%
rename from src/test/java/org/apache/commons/lang/enum/Broken4OperationEnum.java
rename to src/test/java/org/apache/commons/lang3/enums/Broken4OperationEnum.java
index e5528e2..f025aeb 100644
--- a/src/test/java/org/apache/commons/lang/enum/Broken4OperationEnum.java
+++ b/src/test/java/org/apache/commons/lang3/enums/Broken4OperationEnum.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enum;
+package org.apache.commons.lang3.enums;
 
 import java.util.Iterator;
 import java.util.List;
diff --git a/src/test/java/org/apache/commons/lang/enums/Broken5OperationEnum.java b/src/test/java/org/apache/commons/lang3/enums/Broken5OperationEnum.java
similarity index 98%
copy from src/test/java/org/apache/commons/lang/enums/Broken5OperationEnum.java
copy to src/test/java/org/apache/commons/lang3/enums/Broken5OperationEnum.java
index 66a0262..8b576c8 100644
--- a/src/test/java/org/apache/commons/lang/enums/Broken5OperationEnum.java
+++ b/src/test/java/org/apache/commons/lang3/enums/Broken5OperationEnum.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enums;
+package org.apache.commons.lang3.enums;
 
 import java.util.Iterator;
 import java.util.List;
diff --git a/src/test/java/org/apache/commons/lang/enum/ColorEnum.java b/src/test/java/org/apache/commons/lang3/enums/ColorEnum.java
similarity index 97%
rename from src/test/java/org/apache/commons/lang/enum/ColorEnum.java
rename to src/test/java/org/apache/commons/lang3/enums/ColorEnum.java
index 9751479..2de275d 100644
--- a/src/test/java/org/apache/commons/lang/enum/ColorEnum.java
+++ b/src/test/java/org/apache/commons/lang3/enums/ColorEnum.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enum;
+package org.apache.commons.lang3.enums;
 
 import java.util.Iterator;
 import java.util.List;
diff --git a/src/test/java/org/apache/commons/lang/enum/DummyEnum.java b/src/test/java/org/apache/commons/lang3/enums/DummyEnum.java
similarity index 95%
copy from src/test/java/org/apache/commons/lang/enum/DummyEnum.java
copy to src/test/java/org/apache/commons/lang3/enums/DummyEnum.java
index 27d2eef..70e88e3 100644
--- a/src/test/java/org/apache/commons/lang/enum/DummyEnum.java
+++ b/src/test/java/org/apache/commons/lang3/enums/DummyEnum.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enum;
+package org.apache.commons.lang3.enums;
 
 /**
  * Dummy enumeration - no values.
diff --git a/src/test/java/org/apache/commons/lang/enums/EnumEqualsTest.java b/src/test/java/org/apache/commons/lang3/enums/EnumEqualsTest.java
similarity index 96%
rename from src/test/java/org/apache/commons/lang/enums/EnumEqualsTest.java
rename to src/test/java/org/apache/commons/lang3/enums/EnumEqualsTest.java
index 3a1646e..2552e19 100644
--- a/src/test/java/org/apache/commons/lang/enums/EnumEqualsTest.java
+++ b/src/test/java/org/apache/commons/lang3/enums/EnumEqualsTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enums;
+package org.apache.commons.lang3.enums;
 
 import java.net.URLClassLoader;
 
@@ -89,8 +89,8 @@
             URLClassLoader urlCL = (URLClassLoader) cl;
             URLClassLoader urlCL1 = new URLClassLoader(urlCL.getURLs(), null);
             URLClassLoader urlCL2 = new URLClassLoader(urlCL.getURLs(), null);
-            Class otherEnumClass1 = urlCL1.loadClass("org.apache.commons.lang.enums.ColorEnum");
-            Class otherEnumClass2 = urlCL2.loadClass("org.apache.commons.lang.enums.ColorEnum");
+            Class otherEnumClass1 = urlCL1.loadClass("org.apache.commons.lang3.enums.ColorEnum");
+            Class otherEnumClass2 = urlCL2.loadClass("org.apache.commons.lang3.enums.ColorEnum");
             Object blue1 = otherEnumClass1.getDeclaredField("BLUE").get(null);
             Object blue2 = otherEnumClass2.getDeclaredField("BLUE").get(null);
             assertEquals(true, blue1.equals(blue2));
@@ -103,8 +103,8 @@
             URLClassLoader urlCL = (URLClassLoader) cl;
             URLClassLoader urlCL1 = new URLClassLoader(urlCL.getURLs(), null);
             URLClassLoader urlCL2 = new URLClassLoader(urlCL.getURLs(), null);
-            Class otherEnumClass1 = urlCL1.loadClass("org.apache.commons.lang.enums.ColorEnum");
-            Class otherEnumClass2 = urlCL2.loadClass("org.apache.commons.lang.enums.ColorEnum");
+            Class otherEnumClass1 = urlCL1.loadClass("org.apache.commons.lang3.enums.ColorEnum");
+            Class otherEnumClass2 = urlCL2.loadClass("org.apache.commons.lang3.enums.ColorEnum");
             Object blue1 = otherEnumClass1.getDeclaredField("BLUE").get(null);
             Object blue2 = otherEnumClass2.getDeclaredField("RED").get(null);
             assertEquals(false, blue1.equals(blue2));
diff --git a/src/test/java/org/apache/commons/lang/enums/EnumTest.java b/src/test/java/org/apache/commons/lang3/enums/EnumTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/enums/EnumTest.java
rename to src/test/java/org/apache/commons/lang3/enums/EnumTest.java
index b5a212f..98cb3d1 100644
--- a/src/test/java/org/apache/commons/lang/enums/EnumTest.java
+++ b/src/test/java/org/apache/commons/lang3/enums/EnumTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enums;
+package org.apache.commons.lang3.enums;
 
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
@@ -29,7 +29,7 @@
 import junit.framework.AssertionFailedError;
 import junit.framework.TestCase;
 
-import org.apache.commons.lang.SerializationUtils;
+import org.apache.commons.lang3.SerializationUtils;
 
 /**
  * Test cases for the {@link Enum} class.
@@ -41,7 +41,7 @@
 
 public final class EnumTest extends TestCase {
 
-    private static final String ENUMS_CLASS_NAME = "org.apache.commons.lang.enums.ColorEnum";
+    private static final String ENUMS_CLASS_NAME = "org.apache.commons.lang3.enums.ColorEnum";
 
     public EnumTest(String name) {
         super(name);
diff --git a/src/test/java/org/apache/commons/lang/enums/EnumUtilsLang76Test.java b/src/test/java/org/apache/commons/lang3/enums/EnumUtilsLang76Test.java
similarity index 97%
rename from src/test/java/org/apache/commons/lang/enums/EnumUtilsLang76Test.java
rename to src/test/java/org/apache/commons/lang3/enums/EnumUtilsLang76Test.java
index b2b8aee..bd215bf 100644
--- a/src/test/java/org/apache/commons/lang/enums/EnumUtilsLang76Test.java
+++ b/src/test/java/org/apache/commons/lang3/enums/EnumUtilsLang76Test.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enums;
+package org.apache.commons.lang3.enums;
 
 import junit.framework.TestCase;
 
diff --git a/src/test/java/org/apache/commons/lang/enums/EnumUtilsTest.java b/src/test/java/org/apache/commons/lang3/enums/EnumUtilsTest.java
similarity index 99%
copy from src/test/java/org/apache/commons/lang/enums/EnumUtilsTest.java
copy to src/test/java/org/apache/commons/lang3/enums/EnumUtilsTest.java
index c0ab1e1..72c0dd2 100644
--- a/src/test/java/org/apache/commons/lang/enums/EnumUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/enums/EnumUtilsTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enums;
+package org.apache.commons.lang3.enums;
 
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Modifier;
diff --git a/src/test/java/org/apache/commons/lang/enum/Extended1Enum.java b/src/test/java/org/apache/commons/lang3/enums/Extended1Enum.java
similarity index 97%
rename from src/test/java/org/apache/commons/lang/enum/Extended1Enum.java
rename to src/test/java/org/apache/commons/lang3/enums/Extended1Enum.java
index 4e80783..4a538eb 100644
--- a/src/test/java/org/apache/commons/lang/enum/Extended1Enum.java
+++ b/src/test/java/org/apache/commons/lang3/enums/Extended1Enum.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.commons.lang.enum;
+package org.apache.commons.lang3.enums;
 
 import java.util.Iterator;
 import java.util.List;
diff --git a/src/test/java/org/apache/commons/lang/enum/Extended2Enum.java b/src/test/java/org/apache/commons/lang3/enums/Extended2Enum.java
similarity index 97%
rename from src/test/java/org/apache/commons/lang/enum/Extended2Enum.java
rename to src/test/java/org/apache/commons/lang3/enums/Extended2Enum.java
index b4f8aa7..1f53f01 100644
--- a/src/test/java/org/apache/commons/lang/enum/Extended2Enum.java
+++ b/src/test/java/org/apache/commons/lang3/enums/Extended2Enum.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.commons.lang.enum;
+package org.apache.commons.lang3.enums;
 
 import java.util.Iterator;
 import java.util.List;
diff --git a/src/test/java/org/apache/commons/lang/enums/Extended3Enum.java b/src/test/java/org/apache/commons/lang3/enums/Extended3Enum.java
similarity index 97%
copy from src/test/java/org/apache/commons/lang/enums/Extended3Enum.java
copy to src/test/java/org/apache/commons/lang3/enums/Extended3Enum.java
index c489543..4616b97 100644
--- a/src/test/java/org/apache/commons/lang/enums/Extended3Enum.java
+++ b/src/test/java/org/apache/commons/lang3/enums/Extended3Enum.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.commons.lang.enums;
+package org.apache.commons.lang3.enums;
 
 import java.util.Iterator;
 import java.util.List;
diff --git a/src/test/java/org/apache/commons/lang/enum/Nest.java b/src/test/java/org/apache/commons/lang3/enums/Nest.java
similarity index 97%
rename from src/test/java/org/apache/commons/lang/enum/Nest.java
rename to src/test/java/org/apache/commons/lang3/enums/Nest.java
index 9141965..1ba6a4c 100644
--- a/src/test/java/org/apache/commons/lang/enum/Nest.java
+++ b/src/test/java/org/apache/commons/lang3/enums/Nest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enum;
+package org.apache.commons.lang3.enums;
 
 import java.util.Iterator;
 import java.util.List;
diff --git a/src/test/java/org/apache/commons/lang/enums/NestBroken.java b/src/test/java/org/apache/commons/lang3/enums/NestBroken.java
similarity index 97%
rename from src/test/java/org/apache/commons/lang/enums/NestBroken.java
rename to src/test/java/org/apache/commons/lang3/enums/NestBroken.java
index 852d8d8..19559a6 100644
--- a/src/test/java/org/apache/commons/lang/enums/NestBroken.java
+++ b/src/test/java/org/apache/commons/lang3/enums/NestBroken.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enums;
+package org.apache.commons.lang3.enums;
 
 import java.util.Iterator;
 import java.util.List;
diff --git a/src/test/java/org/apache/commons/lang/enum/NestLinked.java b/src/test/java/org/apache/commons/lang3/enums/NestLinked.java
similarity index 98%
copy from src/test/java/org/apache/commons/lang/enum/NestLinked.java
copy to src/test/java/org/apache/commons/lang3/enums/NestLinked.java
index 2c2026e..83b6586 100644
--- a/src/test/java/org/apache/commons/lang/enum/NestLinked.java
+++ b/src/test/java/org/apache/commons/lang3/enums/NestLinked.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enum;
+package org.apache.commons.lang3.enums;
 
 import java.util.Iterator;
 import java.util.List;
diff --git a/src/test/java/org/apache/commons/lang/enum/NestReferenced.java b/src/test/java/org/apache/commons/lang3/enums/NestReferenced.java
similarity index 98%
copy from src/test/java/org/apache/commons/lang/enum/NestReferenced.java
copy to src/test/java/org/apache/commons/lang3/enums/NestReferenced.java
index ec868e8..b317d29 100644
--- a/src/test/java/org/apache/commons/lang/enum/NestReferenced.java
+++ b/src/test/java/org/apache/commons/lang3/enums/NestReferenced.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enum;
+package org.apache.commons.lang3.enums;
 
 import java.util.Iterator;
 import java.util.List;
diff --git a/src/test/java/org/apache/commons/lang/enum/OperationEnum.java b/src/test/java/org/apache/commons/lang3/enums/OperationEnum.java
similarity index 98%
rename from src/test/java/org/apache/commons/lang/enum/OperationEnum.java
rename to src/test/java/org/apache/commons/lang3/enums/OperationEnum.java
index b485202..98acd61 100644
--- a/src/test/java/org/apache/commons/lang/enum/OperationEnum.java
+++ b/src/test/java/org/apache/commons/lang3/enums/OperationEnum.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enum;
+package org.apache.commons.lang3.enums;
 
 import java.util.Iterator;
 import java.util.List;
diff --git a/src/test/java/org/apache/commons/lang/enum/ValuedColorEnum.java b/src/test/java/org/apache/commons/lang3/enums/ValuedColorEnum.java
similarity index 97%
rename from src/test/java/org/apache/commons/lang/enum/ValuedColorEnum.java
rename to src/test/java/org/apache/commons/lang3/enums/ValuedColorEnum.java
index deae7cf..e2e3b86 100644
--- a/src/test/java/org/apache/commons/lang/enum/ValuedColorEnum.java
+++ b/src/test/java/org/apache/commons/lang3/enums/ValuedColorEnum.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enum;
+package org.apache.commons.lang3.enums;
 
 import java.util.Iterator;
 import java.util.List;
diff --git a/src/test/java/org/apache/commons/lang/enums/ValuedEnumTest.java b/src/test/java/org/apache/commons/lang3/enums/ValuedEnumTest.java
similarity index 95%
rename from src/test/java/org/apache/commons/lang/enums/ValuedEnumTest.java
rename to src/test/java/org/apache/commons/lang3/enums/ValuedEnumTest.java
index 6e50632..79edeb0 100644
--- a/src/test/java/org/apache/commons/lang/enums/ValuedEnumTest.java
+++ b/src/test/java/org/apache/commons/lang3/enums/ValuedEnumTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enums;
+package org.apache.commons.lang3.enums;
 
 import java.net.URLClassLoader;
 import java.util.Iterator;
@@ -23,7 +23,7 @@
 
 import junit.framework.TestCase;
 
-import org.apache.commons.lang.SerializationUtils;
+import org.apache.commons.lang3.SerializationUtils;
 
 /**
  * Test cases for the {@link Enum} class.
@@ -65,8 +65,8 @@
             URLClassLoader urlCL = (URLClassLoader) cl;
             URLClassLoader urlCL1 = new URLClassLoader(urlCL.getURLs(), null);
             URLClassLoader urlCL2 = new URLClassLoader(urlCL.getURLs(), null);
-            Class otherEnumClass1 = urlCL1.loadClass("org.apache.commons.lang.enums.ValuedColorEnum");
-            Class otherEnumClass2 = urlCL2.loadClass("org.apache.commons.lang.enums.ValuedColorEnum");
+            Class otherEnumClass1 = urlCL1.loadClass("org.apache.commons.lang3.enums.ValuedColorEnum");
+            Class otherEnumClass2 = urlCL2.loadClass("org.apache.commons.lang3.enums.ValuedColorEnum");
             Object blue1 = otherEnumClass1.getDeclaredField("BLUE").get(null);
             Object blue2 = otherEnumClass2.getDeclaredField("BLUE").get(null);
             assertTrue(((Comparable) blue1).compareTo(blue2) == 0);
@@ -79,8 +79,8 @@
             URLClassLoader urlCL = (URLClassLoader) cl;
             URLClassLoader urlCL1 = new URLClassLoader(urlCL.getURLs(), null);
             URLClassLoader urlCL2 = new URLClassLoader(urlCL.getURLs(), null);
-            Class otherEnumClass1 = urlCL1.loadClass("org.apache.commons.lang.enums.ValuedColorEnum");
-            Class otherEnumClass2 = urlCL2.loadClass("org.apache.commons.lang.enums.ValuedColorEnum");
+            Class otherEnumClass1 = urlCL1.loadClass("org.apache.commons.lang3.enums.ValuedColorEnum");
+            Class otherEnumClass2 = urlCL2.loadClass("org.apache.commons.lang3.enums.ValuedColorEnum");
             Object blue1 = otherEnumClass1.getDeclaredField("BLUE").get(null);
             Object blue2 = otherEnumClass2.getDeclaredField("RED").get(null);
             assertTrue(((Comparable) blue1).compareTo(blue2) != 0);
@@ -134,8 +134,8 @@
             URLClassLoader urlCL = (URLClassLoader) cl;
             URLClassLoader urlCL1 = new URLClassLoader(urlCL.getURLs(), null);
             URLClassLoader urlCL2 = new URLClassLoader(urlCL.getURLs(), null);
-            Class otherEnumClass1 = urlCL1.loadClass("org.apache.commons.lang.enums.ValuedColorEnum");
-            Class otherEnumClass2 = urlCL2.loadClass("org.apache.commons.lang.enums.ValuedColorEnum");
+            Class otherEnumClass1 = urlCL1.loadClass("org.apache.commons.lang3.enums.ValuedColorEnum");
+            Class otherEnumClass2 = urlCL2.loadClass("org.apache.commons.lang3.enums.ValuedColorEnum");
             Object blue1 = otherEnumClass1.getDeclaredField("BLUE").get(null);
             Object blue2 = otherEnumClass2.getDeclaredField("BLUE").get(null);
             assertEquals(true, blue1.equals(blue2));
@@ -148,8 +148,8 @@
             URLClassLoader urlCL = (URLClassLoader) cl;
             URLClassLoader urlCL1 = new URLClassLoader(urlCL.getURLs(), null);
             URLClassLoader urlCL2 = new URLClassLoader(urlCL.getURLs(), null);
-            Class otherEnumClass1 = urlCL1.loadClass("org.apache.commons.lang.enums.ValuedColorEnum");
-            Class otherEnumClass2 = urlCL2.loadClass("org.apache.commons.lang.enums.ValuedColorEnum");
+            Class otherEnumClass1 = urlCL1.loadClass("org.apache.commons.lang3.enums.ValuedColorEnum");
+            Class otherEnumClass2 = urlCL2.loadClass("org.apache.commons.lang3.enums.ValuedColorEnum");
             Object blue1 = otherEnumClass1.getDeclaredField("BLUE").get(null);
             Object blue2 = otherEnumClass2.getDeclaredField("RED").get(null);
             assertEquals(false, blue1.equals(blue2));
diff --git a/src/test/java/org/apache/commons/lang/enums/ValuedLanguageEnum.java b/src/test/java/org/apache/commons/lang3/enums/ValuedLanguageEnum.java
similarity index 97%
rename from src/test/java/org/apache/commons/lang/enums/ValuedLanguageEnum.java
rename to src/test/java/org/apache/commons/lang3/enums/ValuedLanguageEnum.java
index cb66a19..bbb22c8 100644
--- a/src/test/java/org/apache/commons/lang/enums/ValuedLanguageEnum.java
+++ b/src/test/java/org/apache/commons/lang3/enums/ValuedLanguageEnum.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.enums;
+package org.apache.commons.lang3.enums;
 
 import java.util.Iterator;
 import java.util.List;
diff --git a/src/test/java/org/apache/commons/lang/exception/AbstractNestableTest.java b/src/test/java/org/apache/commons/lang3/exception/AbstractNestableTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/exception/AbstractNestableTest.java
rename to src/test/java/org/apache/commons/lang3/exception/AbstractNestableTest.java
index ddcefe9..d68127a 100644
--- a/src/test/java/org/apache/commons/lang/exception/AbstractNestableTest.java
+++ b/src/test/java/org/apache/commons/lang3/exception/AbstractNestableTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.exception;
+package org.apache.commons.lang3.exception;
 
 import java.io.ByteArrayOutputStream;
 import java.io.PrintStream;
diff --git a/src/test/java/org/apache/commons/lang/exception/ExceptionUtilsTest.java b/src/test/java/org/apache/commons/lang3/exception/ExceptionUtilsTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/exception/ExceptionUtilsTest.java
rename to src/test/java/org/apache/commons/lang3/exception/ExceptionUtilsTest.java
index 75d5664..4ce7f9d 100644
--- a/src/test/java/org/apache/commons/lang/exception/ExceptionUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/exception/ExceptionUtilsTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.exception;
+package org.apache.commons.lang3.exception;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
@@ -29,10 +29,10 @@
 
 import junit.framework.Assert;
 
-import org.apache.commons.lang.SystemUtils;
+import org.apache.commons.lang3.SystemUtils;
 
 /**
- * Tests {@link org.apache.commons.lang.exception.ExceptionUtils}.
+ * Tests {@link org.apache.commons.lang3.exception.ExceptionUtils}.
  * 
  * <h3>Notes</h3>
  * <p>
diff --git a/src/test/java/org/apache/commons/lang/exception/NestableDelegateTest.java b/src/test/java/org/apache/commons/lang3/exception/NestableDelegateTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/exception/NestableDelegateTest.java
rename to src/test/java/org/apache/commons/lang3/exception/NestableDelegateTest.java
index 268ba69..7a46443 100644
--- a/src/test/java/org/apache/commons/lang/exception/NestableDelegateTest.java
+++ b/src/test/java/org/apache/commons/lang3/exception/NestableDelegateTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.exception;
+package org.apache.commons.lang3.exception;
 
 import java.io.ByteArrayOutputStream;
 import java.io.EOFException;
diff --git a/src/test/java/org/apache/commons/lang/exception/NestableErrorTest.java b/src/test/java/org/apache/commons/lang3/exception/NestableErrorTest.java
similarity index 98%
rename from src/test/java/org/apache/commons/lang/exception/NestableErrorTest.java
rename to src/test/java/org/apache/commons/lang3/exception/NestableErrorTest.java
index b47eb86..f955b9d 100644
--- a/src/test/java/org/apache/commons/lang/exception/NestableErrorTest.java
+++ b/src/test/java/org/apache/commons/lang3/exception/NestableErrorTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.exception;
+package org.apache.commons.lang3.exception;
 
 import java.io.EOFException;
 
diff --git a/src/test/java/org/apache/commons/lang/exception/NestableExceptionTest.java b/src/test/java/org/apache/commons/lang3/exception/NestableExceptionTest.java
similarity index 94%
rename from src/test/java/org/apache/commons/lang/exception/NestableExceptionTest.java
rename to src/test/java/org/apache/commons/lang3/exception/NestableExceptionTest.java
index 75b2a25..f7ee8ae 100644
--- a/src/test/java/org/apache/commons/lang/exception/NestableExceptionTest.java
+++ b/src/test/java/org/apache/commons/lang3/exception/NestableExceptionTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.exception;
+package org.apache.commons.lang3.exception;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -217,14 +217,14 @@
             }
         }
         String msg = baos.toString();
-        assertTrue( "printStackTrace() starts with outer message", msg.startsWith("org.apache.commons.lang.exception.NestableException: outer"));
-        assertTrue( "printStackTrace() contains 1st nested message", msg.indexOf("Caused by: org.apache.commons.lang.exception.NestableException: inner") >= 0);
+        assertTrue( "printStackTrace() starts with outer message", msg.startsWith("org.apache.commons.lang3.exception.NestableException: outer"));
+        assertTrue( "printStackTrace() contains 1st nested message", msg.indexOf("Caused by: org.apache.commons.lang3.exception.NestableException: inner") >= 0);
         assertTrue( "printStackTrace() contains 2nd nested message", msg.indexOf("Caused by: java.lang.Exception: another exception") >= 0);
         assertTrue( "printStackTrace() inner message after outer message", 
-            msg.indexOf("org.apache.commons.lang.exception.NestableException: outer") <
-            msg.indexOf("Caused by: org.apache.commons.lang.exception.NestableException: inner"));
+            msg.indexOf("org.apache.commons.lang3.exception.NestableException: outer") <
+            msg.indexOf("Caused by: org.apache.commons.lang3.exception.NestableException: inner"));
         assertTrue( "printStackTrace() cause message after inner message",
-            msg.indexOf("Caused by: org.apache.commons.lang.exception.NestableException: inner") <
+            msg.indexOf("Caused by: org.apache.commons.lang3.exception.NestableException: inner") <
             msg.indexOf("Caused by: java.lang.Exception: another exception"));
     }
     
diff --git a/src/test/java/org/apache/commons/lang/exception/NestableRuntimeExceptionTest.java b/src/test/java/org/apache/commons/lang3/exception/NestableRuntimeExceptionTest.java
similarity index 93%
rename from src/test/java/org/apache/commons/lang/exception/NestableRuntimeExceptionTest.java
rename to src/test/java/org/apache/commons/lang3/exception/NestableRuntimeExceptionTest.java
index 61c7e53..1493e22 100644
--- a/src/test/java/org/apache/commons/lang/exception/NestableRuntimeExceptionTest.java
+++ b/src/test/java/org/apache/commons/lang3/exception/NestableRuntimeExceptionTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.exception;
+package org.apache.commons.lang3.exception;
 
 import java.io.ByteArrayOutputStream;
 import java.io.EOFException;
@@ -217,14 +217,14 @@
             }
         }
         String msg = baos.toString();
-        assertTrue( "printStackTrace() starts with outer message", msg.startsWith("org.apache.commons.lang.exception.NestableRuntimeException: outer"));
-        assertTrue( "printStackTrace() contains 1st nested message", msg.indexOf("Caused by: org.apache.commons.lang.exception.NestableRuntimeException: inner") >= 0);
+        assertTrue( "printStackTrace() starts with outer message", msg.startsWith("org.apache.commons.lang3.exception.NestableRuntimeException: outer"));
+        assertTrue( "printStackTrace() contains 1st nested message", msg.indexOf("Caused by: org.apache.commons.lang3.exception.NestableRuntimeException: inner") >= 0);
         assertTrue( "printStackTrace() contains 2nd nested message", msg.indexOf("Caused by: java.lang.Exception: another exception") >= 0);
         assertTrue( "printStackTrace() inner message after outer message", 
-            msg.indexOf("org.apache.commons.lang.exception.NestableRuntimeException: outer") <
-            msg.indexOf("Caused by: org.apache.commons.lang.exception.NestableRuntimeException: inner"));
+            msg.indexOf("org.apache.commons.lang3.exception.NestableRuntimeException: outer") <
+            msg.indexOf("Caused by: org.apache.commons.lang3.exception.NestableRuntimeException: inner"));
         assertTrue( "printStackTrace() cause message after inner message",
-            msg.indexOf("Caused by: org.apache.commons.lang.exception.NestableRuntimeException: inner") <
+            msg.indexOf("Caused by: org.apache.commons.lang3.exception.NestableRuntimeException: inner") <
             msg.indexOf("Caused by: java.lang.Exception: another exception"));
     }
     
diff --git a/src/test/java/org/apache/commons/lang/math/AbstractRangeTest.java b/src/test/java/org/apache/commons/lang3/math/AbstractRangeTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/math/AbstractRangeTest.java
rename to src/test/java/org/apache/commons/lang3/math/AbstractRangeTest.java
index 5a35e2d..4799bf8 100644
--- a/src/test/java/org/apache/commons/lang/math/AbstractRangeTest.java
+++ b/src/test/java/org/apache/commons/lang3/math/AbstractRangeTest.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.commons.lang.math;
+package org.apache.commons.lang3.math;
 
 import junit.framework.TestCase;
 
diff --git a/src/test/java/org/apache/commons/lang/math/DoubleRangeTest.java b/src/test/java/org/apache/commons/lang3/math/DoubleRangeTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/math/DoubleRangeTest.java
rename to src/test/java/org/apache/commons/lang3/math/DoubleRangeTest.java
index 2da8598..642535c 100644
--- a/src/test/java/org/apache/commons/lang/math/DoubleRangeTest.java
+++ b/src/test/java/org/apache/commons/lang3/math/DoubleRangeTest.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.commons.lang.math;
+package org.apache.commons.lang3.math;
 
 /**
  * Test cases for the {@link DoubleRange} class.
diff --git a/src/test/java/org/apache/commons/lang/math/FloatRangeTest.java b/src/test/java/org/apache/commons/lang3/math/FloatRangeTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/math/FloatRangeTest.java
rename to src/test/java/org/apache/commons/lang3/math/FloatRangeTest.java
index 382a830..8796b4b 100644
--- a/src/test/java/org/apache/commons/lang/math/FloatRangeTest.java
+++ b/src/test/java/org/apache/commons/lang3/math/FloatRangeTest.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.commons.lang.math;
+package org.apache.commons.lang3.math;
 
 /**
  * Test cases for the {@link FloatRange} class.
diff --git a/src/test/java/org/apache/commons/lang/math/FractionTest.java b/src/test/java/org/apache/commons/lang3/math/FractionTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/math/FractionTest.java
rename to src/test/java/org/apache/commons/lang3/math/FractionTest.java
index 5d0e882..e0a35c0 100644
--- a/src/test/java/org/apache/commons/lang/math/FractionTest.java
+++ b/src/test/java/org/apache/commons/lang3/math/FractionTest.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.commons.lang.math;
+package org.apache.commons.lang3.math;
 
 import junit.framework.TestCase;
 
diff --git a/src/test/java/org/apache/commons/lang/math/IEEE754rUtilsTest.java b/src/test/java/org/apache/commons/lang3/math/IEEE754rUtilsTest.java
similarity index 97%
rename from src/test/java/org/apache/commons/lang/math/IEEE754rUtilsTest.java
rename to src/test/java/org/apache/commons/lang3/math/IEEE754rUtilsTest.java
index 89495f4..9c5d9e4 100644
--- a/src/test/java/org/apache/commons/lang/math/IEEE754rUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/math/IEEE754rUtilsTest.java
@@ -14,12 +14,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.math;
+package org.apache.commons.lang3.math;
 
 import junit.framework.TestCase;
 
 /**
- * Unit tests {@link org.apache.commons.lang.math.IEEE754rUtils}.
+ * Unit tests {@link org.apache.commons.lang3.math.IEEE754rUtils}.
  *
  * @version $Id$
  */
diff --git a/src/test/java/org/apache/commons/lang/math/IntRangeTest.java b/src/test/java/org/apache/commons/lang3/math/IntRangeTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/math/IntRangeTest.java
rename to src/test/java/org/apache/commons/lang3/math/IntRangeTest.java
index 1c62eed..8b00220 100644
--- a/src/test/java/org/apache/commons/lang/math/IntRangeTest.java
+++ b/src/test/java/org/apache/commons/lang3/math/IntRangeTest.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.commons.lang.math;
+package org.apache.commons.lang3.math;
 
 import java.util.Arrays;
 
diff --git a/src/test/java/org/apache/commons/lang/math/LongRangeTest.java b/src/test/java/org/apache/commons/lang3/math/LongRangeTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/math/LongRangeTest.java
rename to src/test/java/org/apache/commons/lang3/math/LongRangeTest.java
index b74608f..b1371e7 100644
--- a/src/test/java/org/apache/commons/lang/math/LongRangeTest.java
+++ b/src/test/java/org/apache/commons/lang3/math/LongRangeTest.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.commons.lang.math;
+package org.apache.commons.lang3.math;
 
 import java.util.Arrays;
 
diff --git a/src/test/java/org/apache/commons/lang/math/NumberRangeTest.java b/src/test/java/org/apache/commons/lang3/math/NumberRangeTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/math/NumberRangeTest.java
rename to src/test/java/org/apache/commons/lang3/math/NumberRangeTest.java
index 28395b9..e332b62 100644
--- a/src/test/java/org/apache/commons/lang/math/NumberRangeTest.java
+++ b/src/test/java/org/apache/commons/lang3/math/NumberRangeTest.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.commons.lang.math;
+package org.apache.commons.lang3.math;
 
 /**
  * Test cases for the {@link NumberRange} class.
diff --git a/src/test/java/org/apache/commons/lang/math/NumberUtilsTest.java b/src/test/java/org/apache/commons/lang3/math/NumberUtilsTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/math/NumberUtilsTest.java
rename to src/test/java/org/apache/commons/lang3/math/NumberUtilsTest.java
index e71367a..72e05fa 100644
--- a/src/test/java/org/apache/commons/lang/math/NumberUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/math/NumberUtilsTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.math;
+package org.apache.commons.lang3.math;
 
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Modifier;
@@ -23,10 +23,10 @@
 
 import junit.framework.TestCase;
 
-import org.apache.commons.lang.SystemUtils;
+import org.apache.commons.lang3.SystemUtils;
 
 /**
- * Unit tests {@link org.apache.commons.lang.math.NumberUtils}.
+ * Unit tests {@link org.apache.commons.lang3.math.NumberUtils}.
  *
  * @author Apache Software Foundation
  * @author <a href="mailto:rand_mcneely@yahoo.com">Rand McNeely</a>
diff --git a/src/test/java/org/apache/commons/lang/math/RandomUtilsFreqTest.java b/src/test/java/org/apache/commons/lang3/math/RandomUtilsFreqTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/math/RandomUtilsFreqTest.java
rename to src/test/java/org/apache/commons/lang3/math/RandomUtilsFreqTest.java
index dbeaa07..817f00b 100644
--- a/src/test/java/org/apache/commons/lang/math/RandomUtilsFreqTest.java
+++ b/src/test/java/org/apache/commons/lang3/math/RandomUtilsFreqTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.math;
+package org.apache.commons.lang3.math;
 
 import java.util.Random;
 
diff --git a/src/test/java/org/apache/commons/lang/math/RandomUtilsTest.java b/src/test/java/org/apache/commons/lang3/math/RandomUtilsTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/math/RandomUtilsTest.java
rename to src/test/java/org/apache/commons/lang3/math/RandomUtilsTest.java
index f7e7056..ba206d2 100644
--- a/src/test/java/org/apache/commons/lang/math/RandomUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/math/RandomUtilsTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.math;
+package org.apache.commons.lang3.math;
 
 import java.util.Random;
 
diff --git a/src/test/java/org/apache/commons/lang/math/RangeTest.java b/src/test/java/org/apache/commons/lang3/math/RangeTest.java
similarity index 96%
rename from src/test/java/org/apache/commons/lang/math/RangeTest.java
rename to src/test/java/org/apache/commons/lang3/math/RangeTest.java
index 896c736..b54a250 100644
--- a/src/test/java/org/apache/commons/lang/math/RangeTest.java
+++ b/src/test/java/org/apache/commons/lang3/math/RangeTest.java
@@ -15,13 +15,13 @@
  * limitations under the License.
  */
 
-package org.apache.commons.lang.math;
+package org.apache.commons.lang3.math;
 
 import junit.framework.TestCase;
 
 /**
  * <p>
- * Tests the base methods in the {@link org.apache.commons.lang.math.Range} class.
+ * Tests the base methods in the {@link org.apache.commons.lang3.math.Range} class.
  * </p>
  * 
  * @author Nathan Beyer
diff --git a/src/test/java/org/apache/commons/lang/mutable/MutableBooleanTest.java b/src/test/java/org/apache/commons/lang3/mutable/MutableBooleanTest.java
similarity index 98%
rename from src/test/java/org/apache/commons/lang/mutable/MutableBooleanTest.java
rename to src/test/java/org/apache/commons/lang3/mutable/MutableBooleanTest.java
index 486df12..4096574 100644
--- a/src/test/java/org/apache/commons/lang/mutable/MutableBooleanTest.java
+++ b/src/test/java/org/apache/commons/lang3/mutable/MutableBooleanTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.commons.lang.mutable;
+package org.apache.commons.lang3.mutable;
 
 import junit.framework.TestCase;
 
diff --git a/src/test/java/org/apache/commons/lang/mutable/MutableByteTest.java b/src/test/java/org/apache/commons/lang3/mutable/MutableByteTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/mutable/MutableByteTest.java
rename to src/test/java/org/apache/commons/lang3/mutable/MutableByteTest.java
index 162cd6d..6f3d274 100644
--- a/src/test/java/org/apache/commons/lang/mutable/MutableByteTest.java
+++ b/src/test/java/org/apache/commons/lang3/mutable/MutableByteTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.mutable;
+package org.apache.commons.lang3.mutable;
 
 import junit.framework.TestCase;
 
diff --git a/src/test/java/org/apache/commons/lang/mutable/MutableDoubleTest.java b/src/test/java/org/apache/commons/lang3/mutable/MutableDoubleTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/mutable/MutableDoubleTest.java
rename to src/test/java/org/apache/commons/lang3/mutable/MutableDoubleTest.java
index e217be0..86dfb0c 100644
--- a/src/test/java/org/apache/commons/lang/mutable/MutableDoubleTest.java
+++ b/src/test/java/org/apache/commons/lang3/mutable/MutableDoubleTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.mutable;
+package org.apache.commons.lang3.mutable;
 
 import junit.framework.TestCase;
 
diff --git a/src/test/java/org/apache/commons/lang/mutable/MutableFloatTest.java b/src/test/java/org/apache/commons/lang3/mutable/MutableFloatTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/mutable/MutableFloatTest.java
rename to src/test/java/org/apache/commons/lang3/mutable/MutableFloatTest.java
index cd75ee1..d02aeda 100644
--- a/src/test/java/org/apache/commons/lang/mutable/MutableFloatTest.java
+++ b/src/test/java/org/apache/commons/lang3/mutable/MutableFloatTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.mutable;
+package org.apache.commons.lang3.mutable;
 
 import junit.framework.TestCase;
 
diff --git a/src/test/java/org/apache/commons/lang/mutable/MutableIntTest.java b/src/test/java/org/apache/commons/lang3/mutable/MutableIntTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/mutable/MutableIntTest.java
rename to src/test/java/org/apache/commons/lang3/mutable/MutableIntTest.java
index fd9050f..6e90f3c 100644
--- a/src/test/java/org/apache/commons/lang/mutable/MutableIntTest.java
+++ b/src/test/java/org/apache/commons/lang3/mutable/MutableIntTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.mutable;
+package org.apache.commons.lang3.mutable;
 
 import junit.framework.TestCase;
 
diff --git a/src/test/java/org/apache/commons/lang/mutable/MutableLongTest.java b/src/test/java/org/apache/commons/lang3/mutable/MutableLongTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/mutable/MutableLongTest.java
rename to src/test/java/org/apache/commons/lang3/mutable/MutableLongTest.java
index 2b893c3..8a558d5 100644
--- a/src/test/java/org/apache/commons/lang/mutable/MutableLongTest.java
+++ b/src/test/java/org/apache/commons/lang3/mutable/MutableLongTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.mutable;
+package org.apache.commons.lang3.mutable;
 
 import junit.framework.TestCase;
 
diff --git a/src/test/java/org/apache/commons/lang/mutable/MutableObjectTest.java b/src/test/java/org/apache/commons/lang3/mutable/MutableObjectTest.java
similarity index 98%
rename from src/test/java/org/apache/commons/lang/mutable/MutableObjectTest.java
rename to src/test/java/org/apache/commons/lang3/mutable/MutableObjectTest.java
index c4a632a..590d190 100644
--- a/src/test/java/org/apache/commons/lang/mutable/MutableObjectTest.java
+++ b/src/test/java/org/apache/commons/lang3/mutable/MutableObjectTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.mutable;
+package org.apache.commons.lang3.mutable;
 
 import junit.framework.TestCase;
 
diff --git a/src/test/java/org/apache/commons/lang/mutable/MutableShortTest.java b/src/test/java/org/apache/commons/lang3/mutable/MutableShortTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/mutable/MutableShortTest.java
rename to src/test/java/org/apache/commons/lang3/mutable/MutableShortTest.java
index 82175d3..e87947d 100644
--- a/src/test/java/org/apache/commons/lang/mutable/MutableShortTest.java
+++ b/src/test/java/org/apache/commons/lang3/mutable/MutableShortTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.mutable;
+package org.apache.commons.lang3.mutable;
 
 import junit.framework.TestCase;
 
diff --git a/src/test/java/org/apache/commons/lang/reflect/ConstructorUtilsTest.java b/src/test/java/org/apache/commons/lang3/reflect/ConstructorUtilsTest.java
similarity index 97%
rename from src/test/java/org/apache/commons/lang/reflect/ConstructorUtilsTest.java
rename to src/test/java/org/apache/commons/lang3/reflect/ConstructorUtilsTest.java
index b4ac60d..1e7c2e3 100644
--- a/src/test/java/org/apache/commons/lang/reflect/ConstructorUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/reflect/ConstructorUtilsTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.reflect;
+package org.apache.commons.lang3.reflect;
 
 import java.lang.reflect.Constructor;
 import java.util.Arrays;
@@ -23,8 +23,10 @@
 
 import junit.framework.TestCase;
 
-import org.apache.commons.lang.ArrayUtils;
-import org.apache.commons.lang.math.NumberUtils;
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.math.NumberUtils;
+import org.apache.commons.lang3.reflect.ConstructorUtils;
+import org.apache.commons.lang3.reflect.MethodUtils;
 
 /**
  * Unit tests ConstructorUtils
diff --git a/src/test/java/org/apache/commons/lang/reflect/FieldUtilsTest.java b/src/test/java/org/apache/commons/lang3/reflect/FieldUtilsTest.java
similarity index 98%
rename from src/test/java/org/apache/commons/lang/reflect/FieldUtilsTest.java
rename to src/test/java/org/apache/commons/lang3/reflect/FieldUtilsTest.java
index da8d6b0..aa8a3d4 100644
--- a/src/test/java/org/apache/commons/lang/reflect/FieldUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/reflect/FieldUtilsTest.java
@@ -14,17 +14,18 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.reflect;
+package org.apache.commons.lang3.reflect;
 
 import java.lang.reflect.Field;
 
-import org.apache.commons.lang.reflect.testbed.Ambig;
-import org.apache.commons.lang.reflect.testbed.Foo;
-import org.apache.commons.lang.reflect.testbed.PrivatelyShadowedChild;
-import org.apache.commons.lang.reflect.testbed.PublicChild;
-import org.apache.commons.lang.reflect.testbed.PubliclyShadowedChild;
-import org.apache.commons.lang.reflect.testbed.StaticContainer;
-import org.apache.commons.lang.reflect.testbed.StaticContainerChild;
+import org.apache.commons.lang3.reflect.FieldUtils;
+import org.apache.commons.lang3.reflect.testbed.Ambig;
+import org.apache.commons.lang3.reflect.testbed.Foo;
+import org.apache.commons.lang3.reflect.testbed.PrivatelyShadowedChild;
+import org.apache.commons.lang3.reflect.testbed.PublicChild;
+import org.apache.commons.lang3.reflect.testbed.PubliclyShadowedChild;
+import org.apache.commons.lang3.reflect.testbed.StaticContainer;
+import org.apache.commons.lang3.reflect.testbed.StaticContainerChild;
 
 import junit.framework.TestCase;
 /**
diff --git a/src/test/java/org/apache/commons/lang/reflect/MethodUtilsTest.java b/src/test/java/org/apache/commons/lang3/reflect/MethodUtilsTest.java
similarity index 97%
rename from src/test/java/org/apache/commons/lang/reflect/MethodUtilsTest.java
rename to src/test/java/org/apache/commons/lang3/reflect/MethodUtilsTest.java
index 6eac36e..c10e031 100644
--- a/src/test/java/org/apache/commons/lang/reflect/MethodUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/reflect/MethodUtilsTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.reflect;
+package org.apache.commons.lang3.reflect;
 
 import java.lang.reflect.Method;
 import java.util.Arrays;
@@ -23,10 +23,11 @@
 
 import junit.framework.TestCase;
 
-import org.apache.commons.lang.ArrayUtils;
-import org.apache.commons.lang.math.NumberUtils;
-import org.apache.commons.lang.mutable.Mutable;
-import org.apache.commons.lang.mutable.MutableObject;
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.math.NumberUtils;
+import org.apache.commons.lang3.mutable.Mutable;
+import org.apache.commons.lang3.mutable.MutableObject;
+import org.apache.commons.lang3.reflect.MethodUtils;
 
 /**
  * Unit tests MethodUtils
diff --git a/src/test/java/org/apache/commons/lang/reflect/testbed/Ambig.java b/src/test/java/org/apache/commons/lang3/reflect/testbed/Ambig.java
similarity index 94%
rename from src/test/java/org/apache/commons/lang/reflect/testbed/Ambig.java
rename to src/test/java/org/apache/commons/lang3/reflect/testbed/Ambig.java
index 5d1f7dc..10031e6 100644
--- a/src/test/java/org/apache/commons/lang/reflect/testbed/Ambig.java
+++ b/src/test/java/org/apache/commons/lang3/reflect/testbed/Ambig.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.reflect.testbed;
+package org.apache.commons.lang3.reflect.testbed;
 
 /**
  * @author mbenson
diff --git a/src/test/java/org/apache/commons/lang/reflect/testbed/Bar.java b/src/test/java/org/apache/commons/lang3/reflect/testbed/Bar.java
similarity index 94%
rename from src/test/java/org/apache/commons/lang/reflect/testbed/Bar.java
rename to src/test/java/org/apache/commons/lang3/reflect/testbed/Bar.java
index dbf87b6..34ae2d2 100644
--- a/src/test/java/org/apache/commons/lang/reflect/testbed/Bar.java
+++ b/src/test/java/org/apache/commons/lang3/reflect/testbed/Bar.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.reflect.testbed;
+package org.apache.commons.lang3.reflect.testbed;
 
 /**
  * @author mbenson
diff --git a/src/test/java/org/apache/commons/lang/reflect/testbed/Foo.java b/src/test/java/org/apache/commons/lang3/reflect/testbed/Foo.java
similarity index 94%
rename from src/test/java/org/apache/commons/lang/reflect/testbed/Foo.java
rename to src/test/java/org/apache/commons/lang3/reflect/testbed/Foo.java
index 6e3513f..b38654b 100644
--- a/src/test/java/org/apache/commons/lang/reflect/testbed/Foo.java
+++ b/src/test/java/org/apache/commons/lang3/reflect/testbed/Foo.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.reflect.testbed;
+package org.apache.commons.lang3.reflect.testbed;
 
 /**
  * @author mbenson
diff --git a/src/test/java/org/apache/commons/lang/reflect/testbed/Parent.java b/src/test/java/org/apache/commons/lang3/reflect/testbed/Parent.java
similarity index 94%
rename from src/test/java/org/apache/commons/lang/reflect/testbed/Parent.java
rename to src/test/java/org/apache/commons/lang3/reflect/testbed/Parent.java
index 7a47207..6d85c0a 100644
--- a/src/test/java/org/apache/commons/lang/reflect/testbed/Parent.java
+++ b/src/test/java/org/apache/commons/lang3/reflect/testbed/Parent.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.reflect.testbed;
+package org.apache.commons.lang3.reflect.testbed;
 
 /**
  * @author mbenson
diff --git a/src/test/java/org/apache/commons/lang/reflect/testbed/PrivatelyShadowedChild.java b/src/test/java/org/apache/commons/lang3/reflect/testbed/PrivatelyShadowedChild.java
similarity index 95%
rename from src/test/java/org/apache/commons/lang/reflect/testbed/PrivatelyShadowedChild.java
rename to src/test/java/org/apache/commons/lang3/reflect/testbed/PrivatelyShadowedChild.java
index aca10c2..c44e6d5 100644
--- a/src/test/java/org/apache/commons/lang/reflect/testbed/PrivatelyShadowedChild.java
+++ b/src/test/java/org/apache/commons/lang3/reflect/testbed/PrivatelyShadowedChild.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.reflect.testbed;
+package org.apache.commons.lang3.reflect.testbed;
 
 /**
  * @author mbenson
diff --git a/src/test/java/org/apache/commons/lang/reflect/testbed/PublicChild.java b/src/test/java/org/apache/commons/lang3/reflect/testbed/PublicChild.java
similarity index 94%
rename from src/test/java/org/apache/commons/lang/reflect/testbed/PublicChild.java
rename to src/test/java/org/apache/commons/lang3/reflect/testbed/PublicChild.java
index 187036f..f9e5dbe 100644
--- a/src/test/java/org/apache/commons/lang/reflect/testbed/PublicChild.java
+++ b/src/test/java/org/apache/commons/lang3/reflect/testbed/PublicChild.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.reflect.testbed;
+package org.apache.commons.lang3.reflect.testbed;
 
 /**
  * @author mbenson
diff --git a/src/test/java/org/apache/commons/lang/reflect/testbed/PubliclyShadowedChild.java b/src/test/java/org/apache/commons/lang3/reflect/testbed/PubliclyShadowedChild.java
similarity index 95%
rename from src/test/java/org/apache/commons/lang/reflect/testbed/PubliclyShadowedChild.java
rename to src/test/java/org/apache/commons/lang3/reflect/testbed/PubliclyShadowedChild.java
index ccdf8da..10356f7 100644
--- a/src/test/java/org/apache/commons/lang/reflect/testbed/PubliclyShadowedChild.java
+++ b/src/test/java/org/apache/commons/lang3/reflect/testbed/PubliclyShadowedChild.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.reflect.testbed;
+package org.apache.commons.lang3.reflect.testbed;
 
 /**
  * @author mbenson
diff --git a/src/test/java/org/apache/commons/lang/reflect/testbed/StaticContainer.java b/src/test/java/org/apache/commons/lang3/reflect/testbed/StaticContainer.java
similarity index 96%
rename from src/test/java/org/apache/commons/lang/reflect/testbed/StaticContainer.java
rename to src/test/java/org/apache/commons/lang3/reflect/testbed/StaticContainer.java
index ab2c17c..1c79e36 100644
--- a/src/test/java/org/apache/commons/lang/reflect/testbed/StaticContainer.java
+++ b/src/test/java/org/apache/commons/lang3/reflect/testbed/StaticContainer.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.reflect.testbed;
+package org.apache.commons.lang3.reflect.testbed;
 
 /**
  * @author mbenson
diff --git a/src/test/java/org/apache/commons/lang/reflect/testbed/StaticContainerChild.java b/src/test/java/org/apache/commons/lang3/reflect/testbed/StaticContainerChild.java
similarity index 94%
rename from src/test/java/org/apache/commons/lang/reflect/testbed/StaticContainerChild.java
rename to src/test/java/org/apache/commons/lang3/reflect/testbed/StaticContainerChild.java
index 2f97e0b..4f44408 100644
--- a/src/test/java/org/apache/commons/lang/reflect/testbed/StaticContainerChild.java
+++ b/src/test/java/org/apache/commons/lang3/reflect/testbed/StaticContainerChild.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.reflect.testbed;
+package org.apache.commons.lang3.reflect.testbed;
 
 /**
  * @author mbenson
diff --git a/src/test/java/org/apache/commons/lang/text/CompositeFormatTest.java b/src/test/java/org/apache/commons/lang3/text/CompositeFormatTest.java
similarity index 96%
rename from src/test/java/org/apache/commons/lang/text/CompositeFormatTest.java
rename to src/test/java/org/apache/commons/lang3/text/CompositeFormatTest.java
index efd71b1..86fc149 100644
--- a/src/test/java/org/apache/commons/lang/text/CompositeFormatTest.java
+++ b/src/test/java/org/apache/commons/lang3/text/CompositeFormatTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.commons.lang.text;
+package org.apache.commons.lang3.text;
 
 import java.text.FieldPosition;
 import java.text.Format;
@@ -26,7 +26,7 @@
 import junit.framework.TestCase;
 
 /**
- * Unit tests for {@link org.apache.commons.lang.text.CompositeFormat}.
+ * Unit tests for {@link org.apache.commons.lang3.text.CompositeFormat}.
  */
 public class CompositeFormatTest extends TestCase {
 
diff --git a/src/test/java/org/apache/commons/lang/text/ExtendedMessageFormatTest.java b/src/test/java/org/apache/commons/lang3/text/ExtendedMessageFormatTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/text/ExtendedMessageFormatTest.java
rename to src/test/java/org/apache/commons/lang3/text/ExtendedMessageFormatTest.java
index 0d299ac..7df984c 100644
--- a/src/test/java/org/apache/commons/lang/text/ExtendedMessageFormatTest.java
+++ b/src/test/java/org/apache/commons/lang3/text/ExtendedMessageFormatTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.text;
+package org.apache.commons.lang3.text;
 
 import java.text.ChoiceFormat;
 import java.text.DateFormat;
@@ -32,7 +32,7 @@
 import java.util.Locale;
 import java.util.Map;
 
-import org.apache.commons.lang.SystemUtils;
+import org.apache.commons.lang3.SystemUtils;
 import junit.framework.TestCase;
 
 /**
diff --git a/src/test/java/org/apache/commons/lang/text/StrBuilderAppendInsertTest.java b/src/test/java/org/apache/commons/lang3/text/StrBuilderAppendInsertTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/text/StrBuilderAppendInsertTest.java
rename to src/test/java/org/apache/commons/lang3/text/StrBuilderAppendInsertTest.java
index 4a85094..5928e9a 100644
--- a/src/test/java/org/apache/commons/lang/text/StrBuilderAppendInsertTest.java
+++ b/src/test/java/org/apache/commons/lang3/text/StrBuilderAppendInsertTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.commons.lang.text;
+package org.apache.commons.lang3.text;
 
 import java.util.Arrays;
 import java.util.Collection;
@@ -24,10 +24,10 @@
 
 import junit.framework.TestCase;
 
-import org.apache.commons.lang.SystemUtils;
+import org.apache.commons.lang3.SystemUtils;
 
 /**
- * Unit tests for {@link org.apache.commons.lang.text.StrBuilder}.
+ * Unit tests for {@link org.apache.commons.lang3.text.StrBuilder}.
  *
  * @version $Id$
  */
diff --git a/src/test/java/org/apache/commons/lang/text/StrBuilderTest.java b/src/test/java/org/apache/commons/lang3/text/StrBuilderTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/text/StrBuilderTest.java
rename to src/test/java/org/apache/commons/lang3/text/StrBuilderTest.java
index 0ee754f..82423d8 100644
--- a/src/test/java/org/apache/commons/lang/text/StrBuilderTest.java
+++ b/src/test/java/org/apache/commons/lang3/text/StrBuilderTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.commons.lang.text;
+package org.apache.commons.lang3.text;
 
 import java.io.Reader;
 import java.io.Writer;
@@ -23,10 +23,10 @@
 
 import junit.framework.TestCase;
 
-import org.apache.commons.lang.ArrayUtils;
+import org.apache.commons.lang3.ArrayUtils;
 
 /**
- * Unit tests for {@link org.apache.commons.lang.text.StrBuilder}.
+ * Unit tests for {@link org.apache.commons.lang3.text.StrBuilder}.
  * 
  * @author Michael Heuer
  * @version $Id$
diff --git a/src/test/java/org/apache/commons/lang/text/StrLookupTest.java b/src/test/java/org/apache/commons/lang3/text/StrLookupTest.java
similarity index 98%
rename from src/test/java/org/apache/commons/lang/text/StrLookupTest.java
rename to src/test/java/org/apache/commons/lang3/text/StrLookupTest.java
index e6e3a69..3412680 100644
--- a/src/test/java/org/apache/commons/lang/text/StrLookupTest.java
+++ b/src/test/java/org/apache/commons/lang3/text/StrLookupTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.commons.lang.text;
+package org.apache.commons.lang3.text;
 
 import java.util.HashMap;
 import java.util.Map;
diff --git a/src/test/java/org/apache/commons/lang/text/StrMatcherTest.java b/src/test/java/org/apache/commons/lang3/text/StrMatcherTest.java
similarity index 98%
rename from src/test/java/org/apache/commons/lang/text/StrMatcherTest.java
rename to src/test/java/org/apache/commons/lang3/text/StrMatcherTest.java
index cf121ea..657fd29 100644
--- a/src/test/java/org/apache/commons/lang/text/StrMatcherTest.java
+++ b/src/test/java/org/apache/commons/lang3/text/StrMatcherTest.java
@@ -15,12 +15,12 @@
  * limitations under the License.
  */
 
-package org.apache.commons.lang.text;
+package org.apache.commons.lang3.text;
 
 import junit.framework.TestCase;
 
 /**
- * Unit tests for {@link org.apache.commons.lang.text.StrMatcher}.
+ * Unit tests for {@link org.apache.commons.lang3.text.StrMatcher}.
  *
  * @version $Id$
  */
diff --git a/src/test/java/org/apache/commons/lang/text/StrSubstitutorTest.java b/src/test/java/org/apache/commons/lang3/text/StrSubstitutorTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/text/StrSubstitutorTest.java
rename to src/test/java/org/apache/commons/lang3/text/StrSubstitutorTest.java
index e9761fc..5f764a2 100644
--- a/src/test/java/org/apache/commons/lang/text/StrSubstitutorTest.java
+++ b/src/test/java/org/apache/commons/lang3/text/StrSubstitutorTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.commons.lang.text;
+package org.apache.commons.lang3.text;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -23,7 +23,7 @@
 
 import junit.framework.TestCase;
 
-import org.apache.commons.lang.mutable.MutableObject;
+import org.apache.commons.lang3.mutable.MutableObject;
 
 /**
  * Test class for StrSubstitutor.
diff --git a/src/test/java/org/apache/commons/lang/text/StrTokenizerTest.java b/src/test/java/org/apache/commons/lang3/text/StrTokenizerTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/text/StrTokenizerTest.java
rename to src/test/java/org/apache/commons/lang3/text/StrTokenizerTest.java
index 6f4bc56..472a1d4 100644
--- a/src/test/java/org/apache/commons/lang/text/StrTokenizerTest.java
+++ b/src/test/java/org/apache/commons/lang3/text/StrTokenizerTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.commons.lang.text;
+package org.apache.commons.lang3.text;
 
 import java.util.Arrays;
 import java.util.Collections;
@@ -24,8 +24,8 @@
 
 import junit.framework.TestCase;
 
-import org.apache.commons.lang.ArrayUtils;
-import org.apache.commons.lang.ObjectUtils;
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.ObjectUtils;
 
 /**
  * Unit test for Tokenizer.
diff --git a/src/test/java/org/apache/commons/lang/time/DateFormatUtilsTest.java b/src/test/java/org/apache/commons/lang3/time/DateFormatUtilsTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/time/DateFormatUtilsTest.java
rename to src/test/java/org/apache/commons/lang3/time/DateFormatUtilsTest.java
index e4dd00d..db9b4fa 100644
--- a/src/test/java/org/apache/commons/lang/time/DateFormatUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/time/DateFormatUtilsTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.time;
+package org.apache.commons.lang3.time;
 
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Modifier;
diff --git a/src/test/java/org/apache/commons/lang/time/DateUtilsFragmentTest.java b/src/test/java/org/apache/commons/lang3/time/DateUtilsFragmentTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/time/DateUtilsFragmentTest.java
rename to src/test/java/org/apache/commons/lang3/time/DateUtilsFragmentTest.java
index 0d8af8d..ac54f41 100644
--- a/src/test/java/org/apache/commons/lang/time/DateUtilsFragmentTest.java
+++ b/src/test/java/org/apache/commons/lang3/time/DateUtilsFragmentTest.java
@@ -14,15 +14,15 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.time;
+package org.apache.commons.lang3.time;
 
 import java.util.Calendar;
 import java.util.Date;
 
 import junit.framework.TestCase;
 
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.lang.time.DateFormatUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.time.DateFormatUtils;
 
 public class DateUtilsFragmentTest extends TestCase {
 
diff --git a/src/test/java/org/apache/commons/lang/time/DateUtilsRoundingTest.java b/src/test/java/org/apache/commons/lang3/time/DateUtilsRoundingTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/time/DateUtilsRoundingTest.java
rename to src/test/java/org/apache/commons/lang3/time/DateUtilsRoundingTest.java
index 55183f2..50231d3 100644
--- a/src/test/java/org/apache/commons/lang/time/DateUtilsRoundingTest.java
+++ b/src/test/java/org/apache/commons/lang3/time/DateUtilsRoundingTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.time;
+package org.apache.commons.lang3.time;
 
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
diff --git a/src/test/java/org/apache/commons/lang/time/DateUtilsTest.java b/src/test/java/org/apache/commons/lang3/time/DateUtilsTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/time/DateUtilsTest.java
rename to src/test/java/org/apache/commons/lang3/time/DateUtilsTest.java
index 8eb17d8..f731f9d 100644
--- a/src/test/java/org/apache/commons/lang/time/DateUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/time/DateUtilsTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.time;
+package org.apache.commons.lang3.time;
 
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Modifier;
@@ -32,10 +32,10 @@
 import junit.framework.AssertionFailedError;
 import junit.framework.TestCase;
 
-import org.apache.commons.lang.SystemUtils;
+import org.apache.commons.lang3.SystemUtils;
 
 /**
- * Unit tests {@link org.apache.commons.lang.time.DateUtils}.
+ * Unit tests {@link org.apache.commons.lang3.time.DateUtils}.
  *
  * @author <a href="mailto:sergek@lokitech.com">Serge Knystautas</a>
  * @author <a href="mailto:steve@mungoknotwise.com">Steven Caswell</a>
diff --git a/src/test/java/org/apache/commons/lang/time/DurationFormatUtilsTest.java b/src/test/java/org/apache/commons/lang3/time/DurationFormatUtilsTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/time/DurationFormatUtilsTest.java
rename to src/test/java/org/apache/commons/lang3/time/DurationFormatUtilsTest.java
index 4245020..1eca496 100644
--- a/src/test/java/org/apache/commons/lang/time/DurationFormatUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/time/DurationFormatUtilsTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.commons.lang.time;
+package org.apache.commons.lang3.time;
 
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Modifier;
diff --git a/src/test/java/org/apache/commons/lang/time/FastDateFormatTest.java b/src/test/java/org/apache/commons/lang3/time/FastDateFormatTest.java
similarity index 98%
rename from src/test/java/org/apache/commons/lang/time/FastDateFormatTest.java
rename to src/test/java/org/apache/commons/lang3/time/FastDateFormatTest.java
index d2e5202..3853cdd 100644
--- a/src/test/java/org/apache/commons/lang/time/FastDateFormatTest.java
+++ b/src/test/java/org/apache/commons/lang3/time/FastDateFormatTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.time;
+package org.apache.commons.lang3.time;
 
 import java.text.SimpleDateFormat;
 import java.util.Calendar;
@@ -25,10 +25,10 @@
 
 import junit.framework.TestCase;
 
-import org.apache.commons.lang.SerializationUtils;
+import org.apache.commons.lang3.SerializationUtils;
 
 /**
- * Unit tests {@link org.apache.commons.lang.time.FastDateFormat}.
+ * Unit tests {@link org.apache.commons.lang3.time.FastDateFormat}.
  *
  * @author Sean Schofield
  * @author <a href="mailto:ggregory@seagullsw.com">Gary Gregory</a>
diff --git a/src/test/java/org/apache/commons/lang/time/StopWatchTest.java b/src/test/java/org/apache/commons/lang3/time/StopWatchTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/lang/time/StopWatchTest.java
rename to src/test/java/org/apache/commons/lang3/time/StopWatchTest.java
index e786f12..26346b2 100644
--- a/src/test/java/org/apache/commons/lang/time/StopWatchTest.java
+++ b/src/test/java/org/apache/commons/lang3/time/StopWatchTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.lang.time;
+package org.apache.commons.lang3.time;
 
 import junit.framework.Assert;
 import junit.framework.TestCase;
