whole_func_string: async function(filename) {
        if (!await fs.existsAsync(filename)) {
          return null;
        }
        var data = await fs.readFileAsync(filename, "utf8");
        try {
          return qx.tool.compiler.utils.Json.parseJson(data);
        } catch (ex) {
          throw new Error("Failed to load " + filename + ": " + ex);
        }
      }
func_code_string: async function(filename) {
        if (!await fs.existsAsync(filename)) {
          return null;
        }
        var data = await fs.readFileAsync(filename, "utf8");
        try {
          return qx.tool.compiler.utils.Json.parseJson(data);
        } catch (ex) {
          throw new Error("Failed to load " + filename + ": " + ex);
        }
      }
func_documentation_string: Loads JSON data from a file and returns it as an object; if the file does not exist, then
  null is returned
  
  @param filename {String} the filename to load
  @return {Object?} the parsed contents, or null if the file does not exist