code: function (sector, level, row, column) {
              TextureTile.call(this, sector, level, row, column); // args are checked in the superclass' constructor
  
              /**
               * The surface shapes that affect this tile.
               * @type {SurfaceShape[]}
               */
              this.surfaceShapes = [];
  
              // Internal use only. Intentionally not documented.
              this.surfaceShapeStateKeys = [];
  
              // Internal use only. Intentionally not documented.
              this.asRenderedSurfaceShapeStateKeys = [];
  
              /**
               * The sector that bounds this tile.
               * @type {Sector}
               */
              this.sector = sector;
  
              /**
               * A string to use as a cache key.
               * @type {string}
               */
              this.cacheKey = null;
  
              // Internal use only. Intentionally not documented.
              this.pickSequence = 0;
  
              this.createCtx2D();
          }
docs: Constructs a surface shape tile.
  @alias SurfaceShapeTile
  @constructor
  @classdesc Represents a texture map containing renditions of surface shapes applied to a portion of a globe's terrain.
  @param {Sector} sector The sector this tile covers.
  @param {Level} level The level this tile is associated with.
  @param {number} row This tile's row in the associated level.
  @param {number} column This tile's column in the associated level.
  @throws {ArgumentError} If the specified sector or level is null or undefined, the row or column arguments
  are less than zero, or the specified image path is null, undefined or empty.