public static <T> ToDouble<T> mapLongToDouble(ToLong<T> expression, LongToDoubleFunction mapper) {
        return new ToDoubleMapper<T, ToLong<T>, LongToDoubleFunction>(expression, mapper) {
            @Override
            public double applyAsDouble(T object) {
                return this.mapper.applyAsDouble(this.inner.applyAsLong(object));
            }

            @Override
            public MapperType mapperType() {
                return MapperType.LONG_TO_DOUBLE;
            }
        };
    }
Returns an expression that first applies the specified expression to get
a value, then applies the specified mapping operation to that value to
get the final result.

@param expression  the expression to apply to the input
@param mapper      the mapper to apply to the result
@param <T>         the input type
@return            the new expression
runtime-parent/runtime-compute/src/main/java/com/speedment/runtime/compute/internal/expression/MapperUtil.java