if ((value != null) && !value.equals(child.getString(propname))) { return false;
count++;  if (value != null && value.equals(child.getString(propname))) { satisfied++;
    public boolean checkConstraints(Node parent, Node child) {        // problem: if a filter property is defined for this relation,        // i.e. a piece of static SQL-where clause, we'd have to evaluate it        // in order to check the constraints. Because of this, if a filter        // is defined, we return false as soon as the modified-time is greater        // than the create-time of the child, i.e. if the child node has been        // modified since it was first fetched from the db.        if (filter != null && child.lastModified() > child.created()) {            return false;        }        INode nonvirtual = parent.getNonVirtualParent();        for (int i = 0; i < constraints.length; i++) {            String propname = constraints[i].foreignProperty();            if (propname != null) {                INode home = constraints[i].isGroupby ? parent                                                      : nonvirtual;                String value = null;                if (constraints[i].localKeyIsPrimary(home.getDbMapping())) {                    value = home.getID();                } else if (ownType.isRelational()) {                    value = home.getString(constraints[i].localProperty());                } else {                    value = home.getString(constraints[i].localName);                }                if ((value != null) && !value.equals(child.getString(propname))) {                    return false;                }            }        }        return true;    }