static octDecode(
    quantizedTypedArray,
    elementCount,
    normalizationRange,
    dequantizedTypedArray,
  ) {
    //>>includeStart('debug', pragmas.debug);
    Check.defined("quantizedTypedArray", quantizedTypedArray);
    Check.typeOf.number.greaterThanOrEquals("elementCount", elementCount, 0);
    Check.typeOf.number.greaterThan(
      "normalizationRange",
      normalizationRange,
      0,
    );
    //>>includeEnd('debug');

    if (!defined(dequantizedTypedArray)) {
      dequantizedTypedArray = new Float32Array(quantizedTypedArray.length);
    }
    const c = new Cartesian3();
    for (let i = 0; i < elementCount; i++) {
      Cartesian3.unpack(quantizedTypedArray, i * 3, c);
      AttributeCompression.octDecodeInRange(c, normalizationRange, c);
      Cartesian3.pack(dequantizedTypedArray, c, i * 3);
    }
    return dequantizedTypedArray;
  }
Decode oct-encoded normals from the given input, and write the
result into the given output, allocating and returning a new
array if the result was undefined.

This will apply the <code>AttributeCompression.octDecodeInRange</code>
function to each three components of the input.

@param {TypedArray} quantizedTypedArray The input
@param {number} elementCount The number of elements
@param {number} normalizationRange The normalization range
@param {TypedArray} [dequantizedTypedArray] The result
@returns {TypedArray} The result