docs: private static int countBits(long v)
  	{
  		//
  		// the strategy is to shift until we get a non-zero sign bit
  		// then shift until we have no bits left, counting the difference.
  		// we do byte shifting as a hack. Hope it helps.
  		//
  		if (v == 0L)
  			return 0;
  
  		while ((v & highbyte) == 0L)
  		{
  			v <<= 8;
  		}
  		while (v > 0L)
  		{ // i.e. while ((v&highbit) == 0L )
  			v <<= 1;
  		}
  
  		int n = 0;
  		while ((v & lowbytes) != 0L)
  		{
  			v <<= 8;
  			n += 8;
  		}
  		while (v != 0L)
  		{
  			v <<= 1;
  			n += 1;
  		}
  		return n;
  	}