public void writeLineNumbers(File filename) throws IOException {
   DataOutputStream dataOut = null;
   try {
     dataOut = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(filename)));
     int lineNumbersCount = out.getCurrentLineNumber() - 1;
     int[] lineNumbers = out.getLineNumbers();
     dataOut.writeInt(lineNumbersCount);
     for (int i = 0; i < lineNumbersCount; i++) {
       dataOut.writeInt(lineNumbers[i]);
     }
   } finally {
     SpringIOUtils.closeQuietly(dataOut);
   }
 }
  /**
   * Adds the line numbers array to the end of the generated Groovy ModuleNode in a way suitable for
   * the LineNumberTransform AST transform to operate on it
   */
  private void addLineNumbers() {
    out.println();
    out.println("@LineNumber(");
    out.print("\tlines = [");
    // get the line numbers here.  this will mean that the last 2 lines will not be captured in the
    // line number information, but that's OK since a user cannot set a breakpoint there anyway.
    int[] lineNumbers = filterTrailing0s(out.getLineNumbers());

    for (int i = 0; i < lineNumbers.length; i++) {
      out.print(lineNumbers[i]);
      if (i < lineNumbers.length - 1) {
        out.print(", ");
      }
    }
    out.println("],");
    out.println("\tsourceName = \"" + sourceName + "\"");
    out.println(")");
    out.println("class ___LineNumberPlaceholder { }");
  }
 public int[] getLineNumberMatrix() {
   return out.getLineNumbers();
 }