nodes: 0, module; 1, function_definition; 2, function_name:argsort; 3, parameters; 4, block; 5, identifier:self; 6, list_splat_pattern; 7, dictionary_splat_pattern; 8, expression_statement; 9, expression_statement; 10, if_statement; 11, identifier:args; 12, identifier:kwargs; 13, comment:"""
          Returns the indices that would sort the index and its
          underlying data.
  
          Returns
          -------
          argsorted : numpy array
  
          See Also
          --------
          numpy.ndarray.argsort
          """; 14, call; 15, comparison_operator:self._step > 0; 16, block; 17, else_clause; 18, attribute; 19, argument_list; 20, attribute; 21, integer:0; 22, return_statement; 23, block; 24, identifier:nv; 25, identifier:validate_argsort; 26, identifier:args; 27, identifier:kwargs; 28, identifier:self; 29, identifier:_step; 30, call; 31, return_statement; 32, attribute; 33, argument_list; 34, call; 35, identifier:np; 36, identifier:arange; 37, call; 38, attribute; 39, argument_list; 40, identifier:len; 41, argument_list; 42, identifier:np; 43, identifier:arange; 44, binary_operator:len(self) - 1; 45, unary_operator; 46, unary_operator; 47, identifier:self; 48, call; 49, integer:1; 50, integer:1; 51, integer:1; 52, identifier:len; 53, argument_list; 54, identifier:self
code: def argsort(self, *args, **kwargs):
          """
          Returns the indices that would sort the index and its
          underlying data.
  
          Returns
          -------
          argsorted : numpy array
  
          See Also
          --------
          numpy.ndarray.argsort
          """
          nv.validate_argsort(args, kwargs)
  
          if self._step > 0:
              return np.arange(len(self))
          else:
              return np.arange(len(self) - 1, -1, -1)