code: function (center, width, height, heading, attributes) {
              if (!center) {
                  throw new ArgumentError(
                      Logger.logMessage(Logger.LEVEL_SEVERE, "SurfaceRectangle", "constructor", "missingLocation"));
              }
  
              if (width < 0 || height < 0) {
                  throw new ArgumentError(
                      Logger.logMessage(Logger.LEVEL_SEVERE, "SurfaceRectangle", "constructor", "Size is negative."));
              }
  
              SurfaceShape.call(this, attributes);
  
              // All these are documented with their property accessors below.
              this._center = center;
              this._width = width;
              this._height = height;
              this._heading = heading;
          }
docs: Constructs a surface rectangle with a specified center and size and an optional attributes bundle.
  @alias SurfaceRectangle
  @constructor
  @augments SurfaceShape
  @classdesc Represents a rectangle draped over the terrain surface.
  <p>
  SurfaceRectangle uses the following attributes from its associated shape attributes bundle:
  <ul>
  <li>Draw interior</li>
  <li>Draw outline</li>
  <li>Interior color</li>
  <li>Outline color</li>
  <li>Outline width</li>
  <li>Outline stipple factor</li>
  <li>Outline stipple pattern</li>
  </ul>
  @param {Location} center The rectangle's center location.
  @param {Number} width The rectangle's width in meters.
  @param {Number} height The rectangle's height in meters.
  @param {Number} heading The rectangle's heading.
  @param {ShapeAttributes} attributes The attributes to apply to this shape. May be null, in which case
  attributes must be set directly before the shape is drawn.
  @throws {ArgumentError} If the specified center location is null or undefined or if either specified width
  or height is negative.