nodes: 0, module; 1, function_definition; 2, function_name:find; 3, parameters; 4, block; 5, identifier:self; 6, identifier:datum; 7, expression_statement; 8, if_statement; 9, if_statement; 10, return_statement; 11, comment:"""Return sorted value of This if list or dict."""; 12, boolean_operator; 13, block; 14, boolean_operator; 15, block; 16, identifier:datum; 17, call; 18, attribute; 19, return_statement; 20, call; 21, call; 22, expression_statement; 23, return_statement; 24, identifier:isinstance; 25, argument_list; 26, identifier:self; 27, identifier:expressions; 28, identifier:datum; 29, identifier:isinstance; 30, argument_list; 31, identifier:isinstance; 32, argument_list; 33, assignment; 34, list; 35, attribute; 36, identifier:dict; 37, attribute; 38, identifier:dict; 39, attribute; 40, identifier:list; 41, identifier:key; 42, parenthesized_expression; 43, call; 44, identifier:datum; 45, identifier:value; 46, identifier:datum; 47, identifier:value; 48, identifier:datum; 49, identifier:value; 50, conditional_expression:functools.cmp_to_key(self._compare)
                     if self.expressions else None; 51, attribute; 52, argument_list; 53, call; 54, attribute; 55, None; 56, attribute; 57, identifier:wrap; 58, list_comprehension; 59, attribute; 60, argument_list; 61, identifier:self; 62, identifier:expressions; 63, identifier:jsonpath_rw; 64, identifier:DatumInContext; 65, identifier:value; 66, for_in_clause; 67, identifier:functools; 68, identifier:cmp_to_key; 69, attribute; 70, identifier:value; 71, call; 72, identifier:self; 73, identifier:_compare; 74, identifier:sorted; 75, argument_list; 76, attribute; 77, keyword_argument; 78, identifier:datum; 79, identifier:value; 80, identifier:key; 81, identifier:key
code: def find(self, datum):
          """Return sorted value of This if list or dict."""
          if isinstance(datum.value, dict) and self.expressions:
              return datum
  
          if isinstance(datum.value, dict) or isinstance(datum.value, list):
              key = (functools.cmp_to_key(self._compare)
                     if self.expressions else None)
              return [jsonpath_rw.DatumInContext.wrap(
                  [value for value in sorted(datum.value, key=key)])]
          return datum