implement equals and hash on all boms + made XmlReader more generic for filter