def find(self, datum):
        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