code: function() {
          var options = OpenLayers.Util.extend({}, this);
          if (this.symbolizers) {
              // clone symbolizers
              var len = this.symbolizers.length;
              options.symbolizers = new Array(len);
              for (var i=0; i<len; ++i) {
                  options.symbolizers[i] = this.symbolizers[i].clone();
              }
          } else {
              // clone symbolizer
              options.symbolizer = {};
              var value, type;
              for(var key in this.symbolizer) {
                  value = this.symbolizer[key];
                  type = typeof value;
                  if(type === "object") {
                      options.symbolizer[key] = OpenLayers.Util.extend({}, value);
                  } else if(type === "string") {
                      options.symbolizer[key] = value;
                  }
              }
          }
          // clone filter
          options.filter = this.filter && this.filter.clone();
          // clone context
          options.context = this.context && OpenLayers.Util.extend({}, this.context);
          return new OpenLayers.Rule(options);
      }
docs: APIMethod: clone
  Clones this rule.
  
  Returns:
  {<OpenLayers.Rule>} Clone of this rule.