<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _dotted_get(self, dotted_key, default=None, **kwargs):
 """ Perform dotted key lookups and keep track of where we are. """

        split_key = dotted_key.split(".")
        name, keys = split_key[0], split_key[1:]
        result = self.get(name, default=default, **kwargs)
        self._memoized = result

        # If we've reached the end, then return result and clear the
        # memoized data.
        if not keys or result is default:
            self._memoized = None
            return result

        # If we've still got key elements to traverse, let's do that.
        return self._dotted_get(".".join(keys), default=default, **kwargs)