diff --git a/src/main/java/org/apache/maven/shared/utils/introspection/IntrospectionException.java b/src/main/java/org/apache/maven/shared/utils/introspection/IntrospectionException.java
index e1e7a2f..18ffe38 100644
--- a/src/main/java/org/apache/maven/shared/utils/introspection/IntrospectionException.java
+++ b/src/main/java/org/apache/maven/shared/utils/introspection/IntrospectionException.java
@@ -1,36 +1,36 @@
-package org.apache.maven.shared.utils.introspection;
-
-/*
- * 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.
- */
-
-class IntrospectionException
-    extends Exception
-{
-
-    public IntrospectionException( String message )
-    {
-        super( message );
-    }
-
-    public IntrospectionException( Throwable cause )
-    {
-        super( cause );
-    }
-    
-}
+package org.apache.maven.shared.utils.introspection;
+
+/*
+ * 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.
+ */
+
+class IntrospectionException
+    extends Exception
+{
+
+    public IntrospectionException( String message )
+    {
+        super( message );
+    }
+
+    public IntrospectionException( Throwable cause )
+    {
+        super( cause );
+    }
+    
+}
diff --git a/src/main/java/org/apache/maven/shared/utils/package-info.java b/src/main/java/org/apache/maven/shared/utils/package-info.java
index 959bedf..ba04e23 100644
--- a/src/main/java/org/apache/maven/shared/utils/package-info.java
+++ b/src/main/java/org/apache/maven/shared/utils/package-info.java
@@ -1,36 +1,36 @@
-package org.apache.maven.shared.utils;
-
-/*
- * 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.
- */
-
-/**
- *
- * The following classes have not been implemented because they are easy to get other where:
- *
- * <dl>
- *   <dt>Base64</dt>
- *   <dd>commons-io has a much better maintained version than plexus-utils had.
- *   Commons / Jakarta is also the original source.</dd>
- * </dl>
- * <dl>
- *   <dt>FastMap</dt>
- *   <dd>This stuff contains tons of ancient java-1.2 logic. HotSpot collections are much faster that this stuff
- *   in the meantime.</dd>
- * </dl>
- */
+package org.apache.maven.shared.utils;
+
+/*
+ * 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.
+ */
+
+/**
+ *
+ * The following classes have not been implemented because they are easy to get other where:
+ *
+ * <dl>
+ *   <dt>Base64</dt>
+ *   <dd>commons-io has a much better maintained version than plexus-utils had.
+ *   Commons / Jakarta is also the original source.</dd>
+ * </dl>
+ * <dl>
+ *   <dt>FastMap</dt>
+ *   <dd>This stuff contains tons of ancient java-1.2 logic. HotSpot collections are much faster that this stuff
+ *   in the meantime.</dd>
+ * </dl>
+ */
