code: public void unpack(long[] buffer, int offset, int len, int bitSize, InputStream input)
              throws IOException
      {
          checkArgument(len <= MAX_BUFFERED_POSITIONS, "Expected ORC files to have runs of at most 512 bit packed longs");
          switch (bitSize) {
              case 1:
                  unpack1(buffer, offset, len, input);
                  break;
              case 2:
                  unpack2(buffer, offset, len, input);
                  break;
              case 4:
                  unpack4(buffer, offset, len, input);
                  break;
              case 8:
                  unpack8(buffer, offset, len, input);
                  break;
              case 16:
                  unpack16(buffer, offset, len, input);
                  break;
              case 24:
                  unpack24(buffer, offset, len, input);
                  break;
              case 32:
                  unpack32(buffer, offset, len, input);
                  break;
              case 40:
                  unpack40(buffer, offset, len, input);
                  break;
              case 48:
                  unpack48(buffer, offset, len, input);
                  break;
              case 56:
                  unpack56(buffer, offset, len, input);
                  break;
              case 64:
                  unpack64(buffer, offset, len, input);
                  break;
              default:
                  unpackGeneric(buffer, offset, len, bitSize, input);
          }
      }
docs: TODO: refactor calling code, so that input can be a byte[]. (See comment above about performance)