protected static boolean comparesValues( final Object iValue, final ORecord<?> iRecord, final boolean iConsiderIn) { // ORID && RECORD final ORID other = ((ORecord<?>) iRecord).getIdentity(); if (!other.isPersistent() && iRecord instanceof ODocument) { // ODOCUMENT AS RESULT OF SUB-QUERY: GET THE FIRST FIELD IF ANY final String[] firstFieldName = ((ODocument) iRecord).fieldNames(); if (firstFieldName.length > 0) { Object fieldValue = ((ODocument) iRecord).field(firstFieldName[0]); if (fieldValue != null) { if (iConsiderIn && OMultiValue.isMultiValue(fieldValue)) { for (Object o : OMultiValue.getMultiValueIterable(fieldValue)) { if (o != null && o.equals(iValue)) return true; } } return fieldValue.equals(iValue); } } return false; } return other.equals(iValue); }