class IntSqrt extends AbstractSqrt<T, ToInt<T>> {
            private IntSqrt(ToInt<T> tToInt) {
                super(tToInt);
            }

            @Override
            public double applyAsDouble(T object) {
                return Math.sqrt(inner.applyAsInt(object));
            }
        }

        return new IntSqrt(other);
    }

    /**
     * Returns an expression that takes the result from the specified expression
     * and returns the positive square root of it.
     *
     * @param other  the expression to take the square root of
     * @param <T>    the input entity type
     * @return       expression for the square root
     */
    public static <T> ToDouble<T> sqrtLong(ToLong<T> other) {<FILL_FUNCTION_BODY>

        class LongSqrt extends AbstractSqrt<T, ToLong<T>> {
            private LongSqrt(ToLong<T> tToLong) {
                super(tToLong);
            }

            @Override
            public double applyAsDouble(T object) {
                return Math.sqrt(inner.applyAsLong(object));
            }
        }

        return new LongSqrt(other);
    
<no_super_class>