@Override
public boolean evaluateWithObject(Object object) {
Object value = null;
if(object instanceof EOEnterpriseObject) {
EOEnterpriseObject eo = (EOEnterpriseObject)object;
EOEditingContext ec = eo.editingContext();
if(eo.classDescription().attributeKeys().containsObject(key())) {
value = NSKeyValueCodingAdditions.Utility.valueForKeyPath(eo, key());
} else if(EOUtilities.entityNamed(ec, eo.entityName()).primaryKeyAttributeNames().containsObject(key())) {
// when object is an EO and key() is a cross-relationship keypath, we drop through to this case
// and we'll fail.