docs: function extractSteim1Samples(dataView: DataView, offset: number,  littleEndian: boolean) :Array<number> {
    /* get nibbles */
    let nibbles = dataView.getInt32(offset, littleEndian);
    let currNibble = 0;
    let temp = [];  // 4 samples * 16 longwords, can't be more than 64
    let currNum = 0;
    let i, n;
    for (i=0; i<16; i++) {   // i is the word number of the frame starting at 0
      //currNibble = (nibbles >>> (30 - i*2 ) ) & 0x03; // count from top to bottom each nibble in W(0)
      currNibble = (nibbles >> (30 - i*2) ) & 0x03; // count from top to bottom each nibble in W(0)
      //System.err.print("c(" + i + ")" + currNibble + ",");  // DEBUG
      // Rule appears to be:
      // only check for byte-swap on actual value-atoms, so a 32-bit word in of itself
      // is not swapped, but two 16-bit short *values* are or a single
      // 32-bit int *value* is, if the flag is set to TRUE.  8-bit values
      // are naturally not swapped.
      // It would seem that the W(0) word is swap-checked, though, which is confusing...
      // maybe it has to do with the reference to high-order bits for c(0)
      switch (currNibble) {
        case 0:
          //System.out.println("0 means header info");
          // only include header info if offset is 0
          if (offset == 0) {
            temp[currNum++] = dataView.getInt32(offset+(i*4), littleEndian);
          }
          break;
        case 1:
          //System.out.println("1 means 4 one byte differences");
          for ( n=0; n<4; n++) {
            temp[currNum] = dataView.getInt8(offset+(i*4)+n);
            currNum++;
          }
          break;
        case 2:
          //System.out.println("2 means 2 two byte differences");
          for ( n=0; n<4; n+=2) {
            temp[currNum] = dataView.getInt16(offset+(i*4)+n, littleEndian);
            currNum++;
          }
          break;
        case 3:
          //System.out.println("3 means 1 four byte difference");
          temp[currNum++] =dataView.getInt32(offset+(i*4), littleEndian);
          break;
        default:
          throw new CodecException("unreachable case: "+currNibble);
          //System.out.println("default");
      }
    }
    return temp;
  }