title: Mysterious Location in Java stack trace
body: <p>Like the example below, when I run the test case <code>testSortArrayNull()</code> in test class named <code>ComparatorAbstractTestCase</code>, a <strong>RuntimeException</strong> is thrown and the generated stack trace is as follows,</p>
  
  <p>Here is the results of stack trace,</p>
  
  <pre><code>testSortArrayNull(org.apache.commons.io.comparator.CompositeFileComparatorTest)  Time elapsed: 0.016 sec  &lt;&lt;&lt; ERROR!
  java.lang.RuntimeException: null
    at org.apache.commons.io.comparator.AbstractFileComparator.sort(AbstractFileComparator.java:48)
    at org.apache.commons.io.comparator.CompositeFileComparator.sort(CompositeFileComparator.java:45)
    at org.apache.commons.io.comparator.ComparatorAbstractTestCase.testSortArrayNull(ComparatorAbstractTestCase.java:96)
    ...
  </code></pre>
  
  <p>Here is the partial code of test class <code>ComparatorAbstractTestCase</code>,</p>
  
  <pre><code>public abstract class ComparatorAbstractTestCase extends FileBasedTestCase {
  
      /** comparator instance */
      protected CompositeFileComparator comparator;
      ...
      @Test
      public void testSortArrayNull() {
          assertNull(comparator.sort((File[])null)); /** LINE 96 */
      }
      ...
   }
  </code></pre>
  
  <p>Here is the partial code of class <code>CompositeFileComparator</code>, which is extended with class <code>AbstractFileComparator</code>.</p>
  
  <pre><code>import java.io.File;
  import java.util.Arrays;
  import java.util.Collections;
  import java.util.Comparator;
  import java.util.List;
  
  public class CompositeFileComparator extends AbstractFileComparator implements Serializable { /** LINE 45 */
      ... // no sort() method
  }
  </code></pre>
  
  <p>Here is the partial code of class <code>AbstractFileComparator</code>, which has <code>sort()</code> method.</p>
  
  <pre><code>import java.io.File;
  import java.util.Arrays;
  import java.util.Collections;
  import java.util.Comparator;
  import java.util.List;
  
  abstract class AbstractFileComparator implements Comparator&lt;File&gt; {
  
      public File[] sort(final File... files) {
          if (files != null) {
              Arrays.sort(files, this);
          }
          if (files == null) { 
              throw new RuntimeException(); /** LINE 48 */
          }
          return null;
      }
      ...
  }
  </code></pre>
  
  <p>From the above 3 code snippets, we can see that line 45 in class <code>CompositeFileComparator</code> is the position of class declaration, why does stack trace locate in this mysterious location? And is it meaningful for this line 45 appear in stack trace? Thanks for all kindly help :)</p>