def or_else *default
      if empty? then
        res = if block_given? then
                yield
              else
                default.first
              end
        if res.is_a?(Option) then
          res
        else
          ::Collins::Option(res)
        end
      else
        self
      end
    end
def or_else *default
      if empty? then
        res = if block_given? then
                yield
              else
                default.first
              end
        if res.is_a?(Option) then
          res
        else
          ::Collins::Option(res)
        end
      else
        self
      end
    end
Return this `Option` if non-empty, otherwise return the result of evaluating the default
 @example
  Option(nil).or_else { "foo" } == Some("foo")
 @return [Option<Object>]