def map(self, func: Callable[[T], U]) -> 'TOption[T]':
        """
        Usage:

            >>> TOption(3).map(lambda x: x+1).get()
            4
            >>> TOption(None).map(lambda x: x+1).get_or(999)
            999
        """
        return self if self.is_none() else TOption(func(self.value))