public function decode(array $digits)
    {
        $result = [];
        $current = 0;
        $cBit = $this->cBit;
        $bits = $this->bits;
        $shift = 0;
        foreach ($digits as $digit) {
            $current += (($digit % $cBit) << $shift);
            if ($digit < $cBit) {
                $result[] = $current;
                $current = 0;
                $shift = 0;
            } else {
                $shift += $bits;
            }
        }
        if ($current > 0) {
            throw new InvalidVLQSequence($digits);
        }
        if ($this->signed) {
            $result = Signed::decodeBlock($result);
        }
        return $result;
    }