void decode1to3bytes(int n, byte[] src, int s, byte[] dest, int d) {
        int p=0;
        // operator precedence in descending order: >>> or <<, &, |
        dest[d++] = (byte)
                    (
                        pos(src[s++]) << 2
                        | (p=pos(src[s++])) >>> 4 & MASK_2BITS
                    )
                    ;                                               // 6 2
        if (n == 1) {
            sanityCheckLastPos(p, MASK_4BITS);
            return;
        }
        
        dest[d++] = (byte)
                    (
                        (p & MASK_4BITS) << 4 
                        | (p=pos(src[s++])) >>> 2 & MASK_4BITS
                    )
                    ;                                               //   4 4
        if (n == 2) {
            sanityCheckLastPos(p, MASK_2BITS);
            return;
        }
        
        dest[d] = (byte)
                    (
                        (p & MASK_2BITS) << 6
                        | pos(src[s])
                    )
                    ;                                               //     2 6
        return;
    }
void decode1to3bytes ( int n , byte [ ] src , int s , byte [ ] dest , int d ) { int p = 0 ; dest [ d ++ ] = ( byte ) ( pos ( src [ s ++ ] ) << 2 | ( p = pos ( src [ s ++ ] ) ) > > > 4 & MASK_2BITS ) ; if ( n == 1 ) { sanityCheckLastPos ( p , MASK_4BITS ) ; return ; } dest [ d ++ ] = ( byte ) ( ( p & MASK_4BITS ) << 4 | ( p = pos ( src [ s ++ ] ) ) > > > 2 & MASK_4BITS ) ; if ( n == 2 ) { sanityCheckLastPos ( p , MASK_2BITS ) ; return ; } dest [ d ] = ( byte ) ( ( p & MASK_2BITS ) << 6 | pos ( src [ s ] ) ) ; return ; }
@param n the number of final quantum in bytes to decode into.  Ranges from 1 to 3, inclusive.