whole_func_string: function split_linebreaks(s) {
    //return s.split(/\x0d\x0a|\x0a/);
  
    s = s.replace(acorn.allLineBreaks, '\n');
    var out = [],
      idx = s.indexOf("\n");
    while (idx !== -1) {
      out.push(s.substring(0, idx));
      s = s.substring(idx + 1);
      idx = s.indexOf("\n");
    }
    if (s.length) {
      out.push(s);
    }
    return out;
  }
func_code_string: function split_linebreaks(s) {
    //return s.split(/\x0d\x0a|\x0a/);
  
    s = s.replace(acorn.allLineBreaks, '\n');
    var out = [],
      idx = s.indexOf("\n");
    while (idx !== -1) {
      out.push(s.substring(0, idx));
      s = s.substring(idx + 1);
      idx = s.indexOf("\n");
    }
    if (s.length) {
      out.push(s);
    }
    return out;
  }
func_documentation_string: we could use just string.split, but IE doesn't like returning empty strings