Guard against NPE in createHeaders

Also, formatting and whitespace changes
as requested in code review.
diff --git a/src/main/java/org/apache/commons/csv/CSVParser.java b/src/main/java/org/apache/commons/csv/CSVParser.java
index e06b95f..94e1dd0 100644
--- a/src/main/java/org/apache/commons/csv/CSVParser.java
+++ b/src/main/java/org/apache/commons/csv/CSVParser.java
@@ -352,6 +352,7 @@
 
         return new CSVParser(new InputStreamReader(url.openStream(), charset), format);
     }
+
     private String headerComment;
 
     private String trailerComment;
@@ -487,8 +488,10 @@
                 }
             } else {
                 if (this.format.getSkipHeaderRecord()) {
-                    final CSVRecord csvRecord = this.nextRecord();
-                    headerComment = csvRecord.getComment();
+                    final CSVRecord nextRecord = this.nextRecord();
+                    if (nextRecord != null) {
+                        headerComment = nextRecord.getComment();
+                    }
                 }
                 headerRecord = formatHeader;
             }
@@ -764,10 +767,8 @@
             case EOF:
                 if (this.reusableToken.isReady) {
                     this.addRecordValue(true);
-                } else {
-                    if (sb != null) {
+                } else if (sb != null) {
                         trailerComment = sb.toString();
-                    }
                 }
                 break;
             case INVALID:
diff --git a/src/test/java/org/apache/commons/csv/CSVParserTest.java b/src/test/java/org/apache/commons/csv/CSVParserTest.java
index 7d2dfbd..46522b1 100644
--- a/src/test/java/org/apache/commons/csv/CSVParserTest.java
+++ b/src/test/java/org/apache/commons/csv/CSVParserTest.java
@@ -1396,6 +1396,7 @@
             .setCommentMarker('#')

             .setHeader("A", "B")

             .build();

+

     @Test

     public void testGetHeaderComment_NoComment1() throws IOException {

 

@@ -1406,6 +1407,7 @@
             assertNull(parser.getHeaderComment());

         }

     }

+

     @Test

     public void testGetHeaderComment_HeaderComment1() throws IOException {

         try (CSVParser parser = CSVParser.parse(CSV_INPUT_HEADER_COMMENT, FORMAT_AUTO_HEADER)) {

@@ -1415,6 +1417,7 @@
             assertEquals("header comment", parser.getHeaderComment());

         }

     }

+

     @Test

     public void testGetHeaderComment_HeaderTrailerComment() throws IOException {

         try (CSVParser parser = CSVParser.parse(CSV_INPUT_MULTILINE_HEADER_TRAILER_COMMENT, FORMAT_AUTO_HEADER)) {

@@ -1424,6 +1427,7 @@
             assertEquals("multi-line"+LF+"header comment", parser.getHeaderComment());

         }

     }

+

     @Test

     public void testGetHeaderComment_NoComment2() throws IOException {

         try (CSVParser parser = CSVParser.parse(CSV_INPUT_NO_COMMENT, FORMAT_EXPLICIT_HEADER)) {

@@ -1433,6 +1437,7 @@
             assertNull(parser.getHeaderComment());

         }

     }

+

     @Test

     public void testGetHeaderComment_HeaderComment2() throws IOException {

         try (CSVParser parser = CSVParser.parse(CSV_INPUT_HEADER_COMMENT, FORMAT_EXPLICIT_HEADER)) {

@@ -1442,6 +1447,7 @@
             assertEquals("header comment", parser.getHeaderComment());

         }

     }

+

     @Test

     public void testGetHeaderComment_NoComment3() throws IOException {

         try (CSVParser parser = CSVParser.parse(CSV_INPUT_NO_COMMENT, FORMAT_EXPLICIT_HEADER_NOSKIP)) {

@@ -1451,6 +1457,7 @@
             assertNull(parser.getHeaderComment());

         }

     }

+

     @Test

     public void testGetHeaderComment_HeaderComment3() throws IOException {

         try (CSVParser parser = CSVParser.parse(CSV_INPUT_HEADER_COMMENT, FORMAT_EXPLICIT_HEADER_NOSKIP)) {

@@ -1469,6 +1476,7 @@
             assertNull(parser.getTrailerComment());

         }

     }

+

     @Test

     public void testGetTrailerComment_HeaderTrailerComment1() throws IOException {

         try (CSVParser parser = CSVParser.parse(CSV_INPUT_HEADER_TRAILER_COMMENT, FORMAT_AUTO_HEADER)) {

@@ -1477,6 +1485,7 @@
             assertEquals("comment", parser.getTrailerComment());

         }

     }

+

     @Test

     public void testGetTrailerComment_MultilineComment() throws IOException {

         try (CSVParser parser = CSVParser.parse(CSV_INPUT_MULTILINE_HEADER_TRAILER_COMMENT, FORMAT_AUTO_HEADER)) {

@@ -1485,6 +1494,7 @@
             assertEquals("multi-line"+LF+"comment", parser.getTrailerComment());

         }

     }

+

     @Test

     public void testGetTrailerComment_HeaderComment2() throws IOException {

         try (CSVParser parser = CSVParser.parse(CSV_INPUT_HEADER_COMMENT, FORMAT_EXPLICIT_HEADER)) {

@@ -1493,6 +1503,7 @@
             assertNull(parser.getTrailerComment());

         }

     }

+

     @Test

     public void testGetTrailerComment_HeaderTrailerComment2() throws IOException {

         try (CSVParser parser = CSVParser.parse(CSV_INPUT_HEADER_TRAILER_COMMENT, FORMAT_EXPLICIT_HEADER)) {

@@ -1501,6 +1512,7 @@
             assertEquals("comment", parser.getTrailerComment());

         }

     }

+

     @Test

     public void testGetTrailerComment_HeaderComment3() throws IOException {

         try (CSVParser parser = CSVParser.parse(CSV_INPUT_HEADER_COMMENT, FORMAT_EXPLICIT_HEADER_NOSKIP)) {

@@ -1509,6 +1521,7 @@
             assertNull(parser.getTrailerComment());

         }

     }

+

     @Test

     public void testGetTrailerComment_HeaderTrailerComment3() throws IOException {

         try (CSVParser parser = CSVParser.parse(CSV_INPUT_HEADER_TRAILER_COMMENT, FORMAT_EXPLICIT_HEADER_NOSKIP)) {