whole_func_string: function getMappedSourceInfo(sourceMapConsumer, originalFilePath, originalLine, originalColumn, originalFunctionName) {
          var sourceMapInfo = sourceMapConsumer.originalPositionFor({line:originalLine, column:originalColumn||0})       // the 0 is for browsers (like firefox) that don't output column numbers
          var line = sourceMapInfo.line
          var column = sourceMapInfo.column
          var fn = sourceMapInfo.name
  
          if(sourceMapInfo.source !== null) {
              var relative = isRelative(sourceMapInfo.source)
  
              /* I don't think this is needed any longer, and probably isn't correct - this was working around an issue in webpack: See https://github.com/webpack/webpack/issues/559 and https://github.com/webpack/webpack/issues/238
              if(sourceMapConsumer.sourceRoot !== null) {
                  sourceMapInfo.source = sourceMapInfo.source.replace(sourceMapConsumer.sourceRoot, '') // remove sourceRoot
              }*/
  
              if(relative) {
                  var file = Url.resolve(originalFilePath, path.basename(sourceMapInfo.source))
              } else {
                  var file = sourceMapInfo.source
              }
  
  
              var originalFile = true
          } else {
              var file = originalFilePath
              var originalFile = false
          }
  
          if(fn === null || !originalFile) {
              fn = originalFunctionName
          }
          if(line === null || !originalFile) {
              line = originalLine
              column = originalColumn
          }
          if(column === null) {
              column = undefined
          }
  
          if(file != undefined && sourceMapConsumer.sourcesContent != undefined) { // intentional single !=
              var index = sourceMapConsumer.sources.indexOf(file)
              var sourceLines = sourceMapConsumer.sourcesContent[index]
              if(sourceLines !== undefined) sourceLines = sourceLines.split('\n')
          }
  
          return {
              file: file,
              function: fn,
              line: line,
              column: column,
              usingOriginalFile: originalFile,
              sourceLines: sourceLines
          }
      }
func_code_string: function getMappedSourceInfo(sourceMapConsumer, originalFilePath, originalLine, originalColumn, originalFunctionName) {
          var sourceMapInfo = sourceMapConsumer.originalPositionFor({line:originalLine, column:originalColumn||0})       // the 0 is for browsers (like firefox) that don't output column numbers
          var line = sourceMapInfo.line
          var column = sourceMapInfo.column
          var fn = sourceMapInfo.name
  
          if(sourceMapInfo.source !== null) {
              var relative = isRelative(sourceMapInfo.source)
  
              /* I don't think this is needed any longer, and probably isn't correct - this was working around an issue in webpack: See https://github.com/webpack/webpack/issues/559 and https://github.com/webpack/webpack/issues/238
              if(sourceMapConsumer.sourceRoot !== null) {
                  sourceMapInfo.source = sourceMapInfo.source.replace(sourceMapConsumer.sourceRoot, '') // remove sourceRoot
              }*/
  
              if(relative) {
                  var file = Url.resolve(originalFilePath, path.basename(sourceMapInfo.source))
              } else {
                  var file = sourceMapInfo.source
              }
  
  
              var originalFile = true
          } else {
              var file = originalFilePath
              var originalFile = false
          }
  
          if(fn === null || !originalFile) {
              fn = originalFunctionName
          }
          if(line === null || !originalFile) {
              line = originalLine
              column = originalColumn
          }
          if(column === null) {
              column = undefined
          }
  
          if(file != undefined && sourceMapConsumer.sourcesContent != undefined) { // intentional single !=
              var index = sourceMapConsumer.sources.indexOf(file)
              var sourceLines = sourceMapConsumer.sourcesContent[index]
              if(sourceLines !== undefined) sourceLines = sourceLines.split('\n')
          }
  
          return {
              file: file,
              function: fn,
              line: line,
              column: column,
              usingOriginalFile: originalFile,
              sourceLines: sourceLines
          }
      }
func_documentation_string: returns the line, column, and filename mapped from a source map appropriately handles cases where some information is missing