Make package private class final

Allow no instances of some internal classes
diff --git a/src/main/java/org/apache/commons/csv/Constants.java b/src/main/java/org/apache/commons/csv/Constants.java
index e8f0106..86f15ab 100644
--- a/src/main/java/org/apache/commons/csv/Constants.java
+++ b/src/main/java/org/apache/commons/csv/Constants.java
@@ -1,84 +1,89 @@
-/*
- * 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.csv;
-
-/**
- * Constants for this package.
- */
-final class Constants {
-
-    static final char BACKSLASH = '\\';
-
-    static final char BACKSPACE = '\b';
-
-    static final String COMMA = ",";
-
-    /**
-     * Starts a comment, the remainder of the line is the comment.
-     */
-    static final char COMMENT = '#';
-
-    static final char CR = '\r';
-
-    /** RFC 4180 defines line breaks as CRLF */
-    static final String CRLF = "\r\n";
-
-    static final Character DOUBLE_QUOTE_CHAR = Character.valueOf('"');
-
-    static final String EMPTY = "";
-
-    /** The end of stream symbol */
-    static final int END_OF_STREAM = -1;
-
-    static final char FF = '\f';
-
-    static final char LF = '\n';
-
-    /**
-     * Unicode line separator.
-     */
-    static final String LINE_SEPARATOR = "\u2028";
-
-    /**
-     * Unicode next line.
-     */
-    static final String NEXT_LINE = "\u0085";
-
-    /**
-     * Unicode paragraph separator.
-     */
-    static final String PARAGRAPH_SEPARATOR = "\u2029";
-
-    static final char PIPE = '|';
-
-    /** ASCII record separator */
-    static final char RS = 30;
-
-    static final char SP = ' ';
-
-    static final char TAB = '\t';
-
-    /** Undefined state for the lookahead char */
-    static final int UNDEFINED = -2;
-
-    /** ASCII unit separator */
-    static final char US = 31;
-
-    static final String[] EMPTY_STRING_ARRAY = {};
-
-}
+/*

+ * 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.csv;

+

+/**

+ * Constants for this package.

+ */

+final class Constants {

+

+    static final char BACKSLASH = '\\';

+

+    static final char BACKSPACE = '\b';

+

+    static final String COMMA = ",";

+

+    /**

+     * Starts a comment, the remainder of the line is the comment.

+     */

+    static final char COMMENT = '#';

+

+    static final char CR = '\r';

+

+    /** RFC 4180 defines line breaks as CRLF */

+    static final String CRLF = "\r\n";

+

+    static final Character DOUBLE_QUOTE_CHAR = Character.valueOf('"');

+

+    static final String EMPTY = "";

+

+    /** The end of stream symbol */

+    static final int END_OF_STREAM = -1;

+

+    static final char FF = '\f';

+

+    static final char LF = '\n';

+

+    /**

+     * Unicode line separator.

+     */

+    static final String LINE_SEPARATOR = "\u2028";

+

+    /**

+     * Unicode next line.

+     */

+    static final String NEXT_LINE = "\u0085";

+

+    /**

+     * Unicode paragraph separator.

+     */

+    static final String PARAGRAPH_SEPARATOR = "\u2029";

+

+    static final char PIPE = '|';

+

+    /** ASCII record separator */

+    static final char RS = 30;

+

+    static final char SP = ' ';

+

+    static final char TAB = '\t';

+

+    /** Undefined state for the lookahead char */

+    static final int UNDEFINED = -2;

+

+    /** ASCII unit separator */

+    static final char US = 31;

+

+    static final String[] EMPTY_STRING_ARRAY = {};

+

+    /** No instances. */

+    private Constants() {

+        // noop

+    }

+

+}

diff --git a/src/main/java/org/apache/commons/csv/IOUtils.java b/src/main/java/org/apache/commons/csv/IOUtils.java
index 882bc8b..669a04d 100644
--- a/src/main/java/org/apache/commons/csv/IOUtils.java
+++ b/src/main/java/org/apache/commons/csv/IOUtils.java
@@ -1,140 +1,145 @@
-/*
- * 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.csv;
-
-import java.io.IOException;
-import java.io.Reader;
-import java.io.Writer;
-import java.nio.Buffer;
-import java.nio.CharBuffer;
-
-/** Copied from Apache Commons IO. */
-class IOUtils {
-
-    /**
-     * <p>
-     * Copied from Apache Commons IO.
-     * </p>
-     * The default buffer size ({@value}).
-     */
-    static final int DEFAULT_BUFFER_SIZE = 1024 * 4;
-
-    /**
-     * <p>
-     * Copied from Apache Commons IO.
-     * </p>
-     * Represents the end-of-file (or stream).
-     * @since 2.5 (made public)
-     */
-    private static final int EOF = -1;
-
-    /**
-     * Copies chars from a large (over 2GB) {@code Reader} to an {@code Appendable}.
-     * <p>
-     * This method buffers the input internally, so there is no need to use a
-     * {@code BufferedReader}.
-     * </p>
-     * The buffer size is given by {@link #DEFAULT_BUFFER_SIZE}.
-     *
-     * @param input the {@code Reader} to read from
-     * @param output the {@code Appendable} to append to
-     * @return the number of characters copied
-     * @throws NullPointerException if the input or output is null
-     * @throws IOException          if an I/O error occurs
-     * @since 2.7
-     */
-    static long copy(final Reader input, final Appendable output) throws IOException {
-        return copy(input, output, CharBuffer.allocate(DEFAULT_BUFFER_SIZE));
-    }
-
-    /**
-     * Copies chars from a large (over 2GB) {@code Reader} to an {@code Appendable}.
-     * <p>
-     * This method uses the provided buffer, so there is no need to use a
-     * {@code BufferedReader}.
-     * </p>
-     *
-     * @param input the {@code Reader} to read from
-     * @param output the {@code Appendable} to write to
-     * @param buffer the buffer to be used for the copy
-     * @return the number of characters copied
-     * @throws NullPointerException if the input or output is null
-     * @throws IOException          if an I/O error occurs
-     * @since 2.7
-     */
-    static long copy(final Reader input, final Appendable output, final CharBuffer buffer) throws IOException {
-        long count = 0;
-        int n;
-        while (EOF != (n = input.read(buffer))) {
-            ((Buffer) buffer).flip();
-            output.append(buffer, 0, n);
-            count += n;
-        }
-        return count;
-    }
-
-    /**
-     * <p>
-     * Copied from Apache Commons IO.
-     * </p>
-     * Copies chars from a large (over 2GB) {@code Reader} to a {@code Writer}.
-     * <p>
-     * This method buffers the input internally, so there is no need to use a
-     * {@code BufferedReader}.
-     * <p>
-     * The buffer size is given by {@link #DEFAULT_BUFFER_SIZE}.
-     *
-     * @param input the {@code Reader} to read from
-     * @param output the {@code Writer} to write to
-     * @return the number of characters copied
-     * @throws NullPointerException if the input or output is null
-     * @throws IOException          if an I/O error occurs
-     * @since 1.3
-     */
-    static long copyLarge(final Reader input, final Writer output) throws IOException {
-        return copyLarge(input, output, new char[DEFAULT_BUFFER_SIZE]);
-    }
-
-    /**
-     * <p>
-     * Copied from Apache Commons IO.
-     * </p>
-     * Copies chars from a large (over 2GB) {@code Reader} to a {@code Writer}.
-     * <p>
-     * This method uses the provided buffer, so there is no need to use a
-     * {@code BufferedReader}.
-     * <p>
-     *
-     * @param input the {@code Reader} to read from
-     * @param output the {@code Writer} to write to
-     * @param buffer the buffer to be used for the copy
-     * @return the number of characters copied
-     * @throws NullPointerException if the input or output is null
-     * @throws IOException          if an I/O error occurs
-     * @since 2.2
-     */
-    static long copyLarge(final Reader input, final Writer output, final char[] buffer) throws IOException {
-        long count = 0;
-        int n;
-        while (EOF != (n = input.read(buffer))) {
-            output.write(buffer, 0, n);
-            count += n;
-        }
-        return count;
-    }
-
-}
+/*

+ * 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.csv;

+

+import java.io.IOException;

+import java.io.Reader;

+import java.io.Writer;

+import java.nio.Buffer;

+import java.nio.CharBuffer;

+

+/** Copied from Apache Commons IO. */

+final class IOUtils {

+

+    /**

+     * <p>

+     * Copied from Apache Commons IO.

+     * </p>

+     * The default buffer size ({@value}).

+     */

+    static final int DEFAULT_BUFFER_SIZE = 1024 * 4;

+

+    /**

+     * <p>

+     * Copied from Apache Commons IO.

+     * </p>

+     * Represents the end-of-file (or stream).

+     * @since 2.5 (made public)

+     */

+    private static final int EOF = -1;

+

+    /**

+     * Copies chars from a large (over 2GB) {@code Reader} to an {@code Appendable}.

+     * <p>

+     * This method buffers the input internally, so there is no need to use a

+     * {@code BufferedReader}.

+     * </p>

+     * The buffer size is given by {@link #DEFAULT_BUFFER_SIZE}.

+     *

+     * @param input the {@code Reader} to read from

+     * @param output the {@code Appendable} to append to

+     * @return the number of characters copied

+     * @throws NullPointerException if the input or output is null

+     * @throws IOException          if an I/O error occurs

+     * @since 2.7

+     */

+    static long copy(final Reader input, final Appendable output) throws IOException {

+        return copy(input, output, CharBuffer.allocate(DEFAULT_BUFFER_SIZE));

+    }

+

+    /**

+     * Copies chars from a large (over 2GB) {@code Reader} to an {@code Appendable}.

+     * <p>

+     * This method uses the provided buffer, so there is no need to use a

+     * {@code BufferedReader}.

+     * </p>

+     *

+     * @param input the {@code Reader} to read from

+     * @param output the {@code Appendable} to write to

+     * @param buffer the buffer to be used for the copy

+     * @return the number of characters copied

+     * @throws NullPointerException if the input or output is null

+     * @throws IOException          if an I/O error occurs

+     * @since 2.7

+     */

+    static long copy(final Reader input, final Appendable output, final CharBuffer buffer) throws IOException {

+        long count = 0;

+        int n;

+        while (EOF != (n = input.read(buffer))) {

+            ((Buffer) buffer).flip();

+            output.append(buffer, 0, n);

+            count += n;

+        }

+        return count;

+    }

+

+    /**

+     * <p>

+     * Copied from Apache Commons IO.

+     * </p>

+     * Copies chars from a large (over 2GB) {@code Reader} to a {@code Writer}.

+     * <p>

+     * This method buffers the input internally, so there is no need to use a

+     * {@code BufferedReader}.

+     * <p>

+     * The buffer size is given by {@link #DEFAULT_BUFFER_SIZE}.

+     *

+     * @param input the {@code Reader} to read from

+     * @param output the {@code Writer} to write to

+     * @return the number of characters copied

+     * @throws NullPointerException if the input or output is null

+     * @throws IOException          if an I/O error occurs

+     * @since 1.3

+     */

+    static long copyLarge(final Reader input, final Writer output) throws IOException {

+        return copyLarge(input, output, new char[DEFAULT_BUFFER_SIZE]);

+    }

+

+    /**

+     * <p>

+     * Copied from Apache Commons IO.

+     * </p>

+     * Copies chars from a large (over 2GB) {@code Reader} to a {@code Writer}.

+     * <p>

+     * This method uses the provided buffer, so there is no need to use a

+     * {@code BufferedReader}.

+     * <p>

+     *

+     * @param input the {@code Reader} to read from

+     * @param output the {@code Writer} to write to

+     * @param buffer the buffer to be used for the copy

+     * @return the number of characters copied

+     * @throws NullPointerException if the input or output is null

+     * @throws IOException          if an I/O error occurs

+     * @since 2.2

+     */

+    static long copyLarge(final Reader input, final Writer output, final char[] buffer) throws IOException {

+        long count = 0;

+        int n;

+        while (EOF != (n = input.read(buffer))) {

+            output.write(buffer, 0, n);

+            count += n;

+        }

+        return count;

+    }

+

+    /** No instances. */

+    private IOUtils() {

+        // Noop

+    }

+

+}