public static int[] decode_slow(long z) {
        int[] xy = new int[2];
        long xl = 0L;
        long yl = 0L;

        long mask = 1L;
        for (int i=0; i<32; i++) {
            long bit = (z >> i) & mask;
            xl |= bit;
            //System.out.println("bits : m      lm      lm      lm      lm      lm      lm      lm      l");
            //System.out.println("zs  "+ i + ": " + toFullBinaryString(z >> i));
            //System.out.println("m   "+ i + ": " + toFullBinaryString(mask));
            //System.out.println("bit "+ i + ": " + toFullBinaryString(bit));
            //System.out.println("xl  "+ i + ": " + toFullBinaryString(xl));
            mask = mask << 1;
        }

        mask = 1L;
        for (int i=1; i<=32; i++) {
            long bit = (z >> i) & mask;
            yl |= bit;
            mask = mask << 1;
        }
        xy[0] = (int)xl;
        xy[1] = (int)yl;
        return xy;
    }
Decode a z-value into the original two integers.  Returns an
array of two Integers, x and y in indices 0 and 1 respectively.

@param z  The bit-interleaved long containing x and y.
@return   Array of two Integers, x and y.
vespajlib/src/main/java/com/yahoo/geo/ZCurve.java