code: function(filter) {
          this.filter = filter;
          var previousCache = this.cache;
          this.cache = [];
          // look through layer for features to remove from layer
          this.handleAdd({features: this.layer.features});
          // cache now contains features to remove from layer
          if (this.cache.length > 0) {
              this.caching = true;
              this.layer.removeFeatures(this.cache.slice());
              this.caching = false;
          }
          // now look through previous cache for features to add to layer
          if (previousCache.length > 0) {
              var event = {features: previousCache};
              this.handleAdd(event);
              if (event.features.length > 0) {
                  // event has features to add to layer
                  this.caching = true;
                  this.layer.addFeatures(event.features);
                  this.caching = false;
              }
          }
      }
docs: APIMethod: setFilter
  Update the filter for this strategy.  This will re-evaluate
  any features on the layer and in the cache.  Only features
  for which filter.evalute(feature) returns true will be
  added to the layer.  Others will be cached by the strategy.
  
  Parameters:
  filter - {<OpenLayers.Filter>} A filter for evaluating features.