function SpatialNode(level, x, y, z, parent, shape, voxelDimensions) {
  /**
   * @type {SpatialNode[]}
   */
  this.children = undefined;
  this.parent = parent;

  this.level = level;
  this.x = x;
  this.y = y;
  this.z = z;

  /**
   * @type {Cartesian3}
   */
  this.dimensions = Cartesian3.clone(voxelDimensions);
  /**
   * @type {KeyframeNode[]}
   */
  this.keyframeNodes = [];
  /**
   * @type {KeyframeNode[]}
   */
  this.renderableKeyframeNodes = [];

  this.renderableKeyframeNodeLerp = 0.0;
  /**
   * @type {KeyframeNode}
   */
  this.renderableKeyframeNodePrevious = undefined;
  /**
   * @type {KeyframeNode}
   */
  this.renderableKeyframeNodeNext = undefined;

  this.orientedBoundingBox = new OrientedBoundingBox();
  this.approximateVoxelSize = 0.0;
  this.screenSpaceError = 0.0;
  this.visitedFrameNumber = -1;

  this.computeBoundingVolumes(shape);
}
@alias SpatialNode
@constructor

@param {number} level
@param {number} x
@param {number} y
@param {number} z
@param {SpatialNode} parent
@param {VoxelShape} shape
@param {Cartesian3} voxelDimensions

@private