public static <S, T, A, B> Lens<Maybe<S>, T, A, B> liftS(Lens<S, T, A, B> lens, S defaultS) {
        return lens.mapS(m -> m.orElse(defaultS));
    }
public static < S , T , A , B > Lens < Maybe < S > , T , A , B > liftS ( Lens < S , T , A , B > lens , S defaultS ) { return lens . mapS ( m -> m . orElse ( defaultS ) ) ; }
Given a lens and a default <code>S</code>, lift <code>S</code> into {@link Maybe}.
<p>
Note that this lens is NOT lawful, since "putting back what you got changes nothing" fails for any value
<code>B</code> where <code>S</code> is {@link Maybe#nothing()}.

@param lens     the lens
@param defaultS the S to use if {@link Maybe#nothing()} is given
@param <S>      the type of the "larger" value for reading
@param <T>      the type of the "larger" value for putting
@param <A>      the type of the "smaller" value that is read
@param <B>      the type of the "smaller" update value
@return the lens with S lifted