code: private void readDirectValues(int firstByte)
              throws IOException
      {
          // extract the number of fixed bits
          int fixedBits = LongDecode.decodeBitWidth((firstByte >>> 1) & 0b1_1111);
  
          // extract the run length
          int length = (firstByte & 0b1) << 8;
          length |= input.read();
          // runs are one off
          length += 1;
  
          // write the unpacked values and zigzag decode to result buffer
          packer.unpack(literals, numLiterals, length, fixedBits, input);
          if (signed) {
              for (int i = 0; i < length; i++) {
                  literals[numLiterals] = LongDecode.zigzagDecode(literals[numLiterals]);
                  numLiterals++;
              }
          }
          else {
              numLiterals += length;
          }
      }
docs: This comes from the Apache Hive ORC code