code: function() {
          if (arguments.length > 0) {
              var bounds = this.adjustBounds(arguments[0]);
              var res = this.getServerResolution();
              var x = Math.round((bounds.left - this.tileOrigin.lon) / (res * this.tileSize.w));
              var y = Math.round((this.tileOrigin.lat - bounds.top) / (res * this.tileSize.h));
              var z = this.getZoomForResolution( res );
              var w = this.standardTileSize;
              var h = this.standardTileSize;
              if (x == this.tierSizeInTiles[z].w -1 ) {
                  var w = this.tierImageSize[z].w % this.standardTileSize;
              }
              if (y == this.tierSizeInTiles[z].h -1 ) {
                  var h = this.tierImageSize[z].h % this.standardTileSize;
              }
              return (new OpenLayers.Size(w, h));
          } else {
              return this.tileSize;
          }
      }
docs: Method: getImageSize
  getImageSize returns size for a particular tile. If bounds are given as
  first argument, size is calculated (bottom-right tiles are non square).