function SourceNode(aLine, aColumn, aSource, aChunks, aName) {
    this.children = [];
    this.sourceContents = {};
    this.line = aLine === undefined ? null : aLine;
    this.column = aColumn === undefined ? null : aColumn;
    this.source = aSource === undefined ? null : aSource;
    this.name = aName === undefined ? null : aName;
    if (aChunks != null) this.add(aChunks);
  }
SourceNodes provide a way to abstract over interpolating/concatenating
snippets of generated JavaScript source code while maintaining the line and
column information associated with the original source code.

@param aLine The original line number.
@param aColumn The original column number.
@param aSource The original source's filename.
@param aChunks Optional. An array of strings which are snippets of
       generated JS, or other SourceNodes.
@param aName The original identifier.