code: public static double[] decode(
        String cvAccession,
        byte[] data,
        int dataSize
    ) {
  
      switch (cvAccession) {
        case ACC_NUMPRESS_LINEAR: {
          double[] buffer = new double[dataSize * 2];
          int nbrOfDoubles = MSNumpress.decodeLinear(data, dataSize, buffer);
          double[] result = new double[nbrOfDoubles];
          System.arraycopy(buffer, 0, result, 0, nbrOfDoubles);
          return result;
  
        }
        case ACC_NUMPRESS_SLOF: {
          double[] result = new double[dataSize / 2];
          MSNumpress.decodeSlof(data, dataSize, result);
          return result;
  
        }
        case ACC_NUMPRESS_PIC: {
          double[] buffer = new double[dataSize * 2];
          int nbrOfDoubles = MSNumpress.decodePic(data, dataSize, buffer);
          double[] result = new double[nbrOfDoubles];
          System.arraycopy(buffer, 0, result, 0, nbrOfDoubles);
          return result;
  
        }
      }
  
      throw new IllegalArgumentException("'" + cvAccession + "' is not a numpress compression term");
    }
docs: Convenience function for decoding binary data encoded by MSNumpress. If the passed cvAccession
  is one of
  <p>
  ACC_NUMPRESS_LINEAR = "MS:1002312" ACC_NUMPRESS_PIC    = "MS:1002313" ACC_NUMPRESS_SLOF   =
  "MS:1002314"
  <p>
  the corresponding decode function will be called.
  
  @param cvAccession The PSI-MS obo CV accession of the encoded data.
  @param data array of double to be encoded
  @param dataSize number of doubles from data to encode
  @return The decoded doubles