nodes: 0, module; 1, function_definition; 2, function_name:_list_function_infos; 3, parameters; 4, block; 5, identifier:jvm; 6, expression_statement; 7, expression_statement; 8, expression_statement; 9, for_statement; 10, return_statement; 11, comment:"""
      Returns a list of function information via JVM. Sorts wrapped expression infos by name
      and returns them.
      """; 12, assignment; 13, assignment; 14, identifier:jinfo; 15, identifier:jinfos; 16, block; 17, call; 18, identifier:jinfos; 19, call; 20, identifier:infos; 21, list; 22, expression_statement; 23, expression_statement; 24, expression_statement; 25, expression_statement; 26, identifier:sorted; 27, argument_list; 28, attribute; 29, argument_list; 30, assignment; 31, assignment; 32, assignment; 33, call; 34, identifier:infos; 35, keyword_argument; 36, attribute; 37, identifier:listBuiltinFunctionInfos; 38, identifier:name; 39, call; 40, identifier:usage; 41, call; 42, identifier:usage; 43, conditional_expression:usage.replace("_FUNC_", name) if usage is not None else usage; 44, attribute; 45, argument_list; 46, identifier:key; 47, lambda; 48, attribute; 49, identifier:PythonSQLUtils; 50, attribute; 51, argument_list; 52, attribute; 53, argument_list; 54, call; 55, comparison_operator:usage is not None; 56, identifier:usage; 57, identifier:infos; 58, identifier:append; 59, call; 60, lambda_parameters; 61, attribute; 62, attribute; 63, identifier:python; 64, identifier:jinfo; 65, identifier:getName; 66, identifier:jinfo; 67, identifier:getUsage; 68, attribute; 69, argument_list; 70, identifier:usage; 71, None; 72, identifier:ExpressionInfo; 73, argument_list; 74, identifier:i; 75, identifier:i; 76, identifier:name; 77, attribute; 78, identifier:api; 79, identifier:usage; 80, identifier:replace; 81, string:"_FUNC_"; 82, identifier:name; 83, keyword_argument; 84, keyword_argument; 85, keyword_argument; 86, keyword_argument; 87, keyword_argument; 88, keyword_argument; 89, keyword_argument; 90, keyword_argument; 91, attribute; 92, identifier:sql; 93, identifier:className; 94, call; 95, identifier:name; 96, identifier:name; 97, identifier:usage; 98, identifier:usage; 99, identifier:arguments; 100, call; 101, identifier:examples; 102, call; 103, identifier:note; 104, call; 105, identifier:since; 106, call; 107, identifier:deprecated; 108, call; 109, attribute; 110, identifier:spark; 111, attribute; 112, argument_list; 113, attribute; 114, argument_list; 115, attribute; 116, argument_list; 117, attribute; 118, argument_list; 119, attribute; 120, argument_list; 121, attribute; 122, argument_list; 123, attribute; 124, identifier:apache; 125, identifier:jinfo; 126, identifier:getClassName; 127, call; 128, identifier:replace; 129, string:"_FUNC_"; 130, identifier:name; 131, call; 132, identifier:replace; 133, string:"_FUNC_"; 134, identifier:name; 135, identifier:jinfo; 136, identifier:getNote; 137, identifier:jinfo; 138, identifier:getSince; 139, identifier:jinfo; 140, identifier:getDeprecated; 141, identifier:jvm; 142, identifier:org; 143, attribute; 144, argument_list; 145, attribute; 146, argument_list; 147, identifier:jinfo; 148, identifier:getArguments; 149, identifier:jinfo; 150, identifier:getExamples
code: def _list_function_infos(jvm):
      """
      Returns a list of function information via JVM. Sorts wrapped expression infos by name
      and returns them.
      """
  
      jinfos = jvm.org.apache.spark.sql.api.python.PythonSQLUtils.listBuiltinFunctionInfos()
      infos = []
      for jinfo in jinfos:
          name = jinfo.getName()
          usage = jinfo.getUsage()
          usage = usage.replace("_FUNC_", name) if usage is not None else usage
          infos.append(ExpressionInfo(
              className=jinfo.getClassName(),
              name=name,
              usage=usage,
              arguments=jinfo.getArguments().replace("_FUNC_", name),
              examples=jinfo.getExamples().replace("_FUNC_", name),
              note=jinfo.getNote(),
              since=jinfo.getSince(),
              deprecated=jinfo.getDeprecated()))
      return sorted(infos, key=lambda i: i.name)