anchor.diff:  
     Filter operator &(Filter other) => Filter.and([this, other]);
     Filter operator |(Filter other) => Filter.or([this, other]);
  -
  + 
     String toString() => "Filter(type=$_filterType attrName=$_attributeName val=$_assertionValue, subFilters=$_subFilters)";
   
     /**
  
positive.code:   static const int TYPE_GREATER_OR_EQUAL = 0xA5;
    static const int TYPE_LESS_OR_EQUAL = 0xA6;
  
  
    // Note form Chris Ridd: 0x87 is correct
    static const int TYPE_PRESENCE =  0x87;
  
    static const int TYPE_APPROXIMATE_MATCH = 0xA8;
    static const int TYPE_EXTENSIBLE_MATCH = 0xA9;
  
  
negative.code:   Filter(this._filterType, [this._attributeName, this._assertionValue, this._subFilters]);
  
    static Filter equals(String attributeName, String attrValue) => new Filter(TYPE_EQUALITY, attributeName, attrValue);
    static Filter and(List<Filter> filters) => new Filter(TYPE_AND, null, null, filters);
    static Filter or(List<Filter> filters) => new Filter(TYPE_OR, null, null, filters);
    static Filter not(Filter f) => new Filter(TYPE_NOT, null, null, [f]);
    static Filter present(String attrName) => new Filter(TYPE_PRESENCE, attrName);
  
  
  