@Override
    default ToByteNullable<T> mapIfPresent(ByteUnaryOperator mapper) {
        final ToByteNullable<T> delegate = this;
        return new ToByteNullable<T>() {
            @Override
            public Byte apply(T object) {
                return delegate.isNull(object) ? null
                    : mapper.applyAsByte(delegate.applyAsByte(object));
            }

            @Override
            public byte applyAsByte(T object) {
                return mapper.applyAsByte(delegate.applyAsByte(object));
            }

            @Override
            public ToByte<T> orElseGet(ToByte<T> getter) {
                return object -> delegate.isNull(object)
                    ? getter.applyAsByte(object)
                    : mapper.applyAsByte(delegate.applyAsByte(object));
            }

            @Override
            public ToByte<T> orElse(Byte value) {
                return object -> delegate.isNull(object)
                    ? value
                    : mapper.applyAsByte(delegate.applyAsByte(object));
            }

            @Override
            public boolean isNull(T object) {
                return delegate.isNull(object);
            }

            @Override
            public boolean isNotNull(T object) {
                return delegate.isNotNull(object);
            }
        };
    }
Returns a typed {@code ToByteNullable<T>} using the provided
{@code lambda}.

@param <T> type to extract from
@param lambda to convert
@return a typed {@code ToByteNullable<T>} using the provided
{@code lambda}

@throws NullPointerException if the provided {@code lambda} is
{@code null}
runtime-parent/runtime-compute/src/main/java/com/speedment/runtime/compute/ToByteNullable.java