public boolean execute(Element e, Map<String, AttributeExtractor> attributeExtractors) {
Object attributeValue = attributeExtractors.get(attributeName).attributeFor(e, getAttributeName());
if (attributeValue == null) {
return false;
} else {
AttributeType attrType = AttributeType.typeFor(getAttributeName(), attributeValue);
if (!getType().equals(attrType)) {
throw new SearchException("Expecting attribute of type " + getType().name() + " but was " + attrType.name());
}
if (getType().equals(AttributeType.STRING)) {
return ((String) this.value).equalsIgnoreCase((String) attributeValue);
} else {