docs: function(parser, reporter){
          var rule = this;
  
          var propertiesToCheck = {
                  display: 1,
                  "float": "none",
                  height: 1,
                  width: 1,
                  margin: 1,
                  "margin-left": 1,
                  "margin-right": 1,
                  "margin-bottom": 1,
                  "margin-top": 1,
                  padding: 1,
                  "padding-left": 1,
                  "padding-right": 1,
                  "padding-bottom": 1,
                  "padding-top": 1,
                  "vertical-align": 1
              },
              properties;
  
          parser.addListener("startrule", function(){
              properties = {};
          });
  
          parser.addListener("property", function(event){
              var name = event.property.text.toLowerCase();
  
              if (propertiesToCheck[name]){
                  properties[name] = { value: event.value.text, line: event.property.line, col: event.property.col };                    
              }
          });
  
          parser.addListener("endrule", function(){
  
              var display = properties.display ? properties.display.value : null;
              if (display){
                  switch(display){
  
                      case "inline":
                          //height, width, margin-top, margin-bottom, float should not be used with inline
                          reportProperty("height", display);
                          reportProperty("width", display);
                          reportProperty("margin", display);
                          reportProperty("margin-top", display);
                          reportProperty("margin-bottom", display);              
                          reportProperty("float", display, "display:inline has no effect on floated elements (but may be used to fix the IE6 double-margin bug).");
                          break;
  
                      case "block":
                          //vertical-align should not be used with block
                          reportProperty("vertical-align", display);
                          break;
  
                      case "inline-block":
                          //float should not be used with inline-block
                          reportProperty("float", display);
                          break;
  
                      default:
                          //margin, float should not be used with table
                          if (display.indexOf("table-") == 0){
                              reportProperty("margin", display);
                              reportProperty("margin-left", display);
                              reportProperty("margin-right", display);
                              reportProperty("margin-top", display);
                              reportProperty("margin-bottom", display);
                              reportProperty("float", display);
                          }
  
                          //otherwise do nothing
                  }
              }
            
          });
  
  
          function reportProperty(name, display, msg){
              if (properties[name]){
                  if (!(typeof propertiesToCheck[name] == "string") || properties[name].value.toLowerCase() != propertiesToCheck[name]){
                      reporter.warn(msg || name + " can't be used with display: " + display + ".", properties[name].line, properties[name].col, rule);
                  }
              }
          }
      }