code: public void apply(final String filter, final TileFunction<VectorTile> callback) {
  		switch (getStatus()) {
  			case EMPTY:
  				fetch(filter, callback);
  				break;
  			case LOADING:
  				if (needsReload(filter)) {
  					deferred.cancel();
  					fetch(filter, callback);
  				} else {
  					final VectorTile self = this;
  					deferred.addCallback(new AbstractCommandCallback<GetVectorTileResponse>() {
  
  						public void execute(GetVectorTileResponse response) {
  							callback.execute(self);
  						}
  					});
  				}
  				break;
  			case LOADED:
  				if (needsReload(filter)) {
  					// Check if the labels need to be fetched as well:
  					fetch(filter, callback);
  				} else {
  					callback.execute(this);
  				}
  				break;
  			default:
  				throw new IllegalStateException("Unknown status " + getStatus());
  		}
  	}
docs: Execute a TileFunction on this tile. If the tile is not yet loaded, attach it to the isLoaded event.
  
  @param filter filter which needs to be applied when fetching
  @param callback callback to call