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
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>]
Return this Option if non - empty otherwise return the result of evaluating the default