nodes: 0, module; 1, function_definition; 2, function_name:name; 3, parameters; 4, block; 5, identifier:self; 6, expression_statement; 7, expression_statement; 8, for_statement; 9, return_statement; 10, comment:"""
      Save name which can be used for alphabetic sorting and can be turned
      into a kwarg.
      """; 11, assignment; 12, pattern_list; 13, attribute; 14, block; 15, identifier:base_str; 16, identifier:base_str; 17, call; 18, identifier:var; 19, identifier:count; 20, identifier:self; 21, identifier:variable_count; 22, expression_statement; 23, attribute; 24, argument_list; 25, augmented_assignment; 26, string; 27, identifier:format; 28, conditional_expression:self.derivative_count if
                                 self.derivative_count > 1 else ''; 29, attribute; 30, identifier:base_str; 31, call; 32, string_content:d{}{}_; 33, attribute; 34, comparison_operator:self.derivative_count > 1; 35, string; 36, identifier:self; 37, identifier:expr; 38, attribute; 39, argument_list; 40, identifier:self; 41, identifier:derivative_count; 42, attribute; 43, integer:1; 44, string; 45, identifier:format; 46, identifier:var; 47, conditional_expression:count if count > 1 else ''; 48, identifier:self; 49, identifier:derivative_count; 50, string_content:d{}{}; 51, identifier:count; 52, comparison_operator:count > 1; 53, string; 54, identifier:count; 55, integer:1
code: def name(self):
      """
      Save name which can be used for alphabetic sorting and can be turned
      into a kwarg.
      """
      base_str = 'd{}{}_'.format(self.derivative_count if
                                 self.derivative_count > 1 else '', self.expr)
      for var, count in self.variable_count:
          base_str += 'd{}{}'.format(var,  count if count > 1 else '')
      return base_str