core/src/main/java/com/orientechnologies/orient/core/iterator/ORecordIteratorClusters.java
@SuppressWarnings("unchecked")
  @Override
  public REC previous() {
    checkDirection(false);

    if (currentRecord != null)
      try {
        // RETURN LAST LOADED RECORD
        return (REC) currentRecord;
      } finally {
        currentRecord = null;
      }

    ORecord record = getRecord();

    // MOVE BACKWARD IN THE CURRENT CLUSTER
    while (hasPrevious()) {
      if (currentRecord != null)
        try {
          // RETURN LAST LOADED RECORD
          return (REC) currentRecord;
        } finally {
          currentRecord = null;
        }

      record = getTransactionEntry();
      if (record == null)
        record = readCurrentRecord(null, -1);

      if (record != null)
        // FOUND
        if (include(record))
          return (REC) record;
    }

    record = getTransactionEntry();
    if (record != null)
      return (REC) record;

    return null;
  }
@SuppressWarnings("unchecked")
  @Override
  public REC previous() {
    checkDirection(false);

    if (currentRecord != null)
      try {
        // RETURN LAST LOADED RECORD
        return (REC) currentRecord;
      } finally {
        currentRecord = null;
      }

    ORecord record = getRecord();

    // MOVE BACKWARD IN THE CURRENT CLUSTER
    while (hasPrevious()) {
      if (currentRecord != null)
        try {
          // RETURN LAST LOADED RECORD
          return (REC) currentRecord;
        } finally {
          currentRecord = null;
        }

      record = getTransactionEntry();
      if (record == null)
        record = readCurrentRecord(null, -1);

      if (record != null)
        // FOUND
        if (include(record))
          return (REC) record;
    }

    record = getTransactionEntry();
    if (record != null)
      return (REC) record;

    return null;
  }
@ SuppressWarnings ( "unchecked" ) @ Override public REC previous ( ) { checkDirection ( false ) ; if ( currentRecord != null ) try { // RETURN LAST LOADED RECORD
 return ( REC ) currentRecord ; } finally { currentRecord = null ; } ORecord record = getRecord ( ) ; // MOVE BACKWARD IN THE CURRENT CLUSTER
 while ( hasPrevious ( ) ) { if ( currentRecord != null ) try { // RETURN LAST LOADED RECORD
 return ( REC ) currentRecord ; } finally { currentRecord = null ; } record = getTransactionEntry ( ) ; if ( record == null ) record = readCurrentRecord ( null , - 1 ) ; if ( record != null ) // FOUND
 if ( include ( record ) ) return ( REC ) record ; } record = getTransactionEntry ( ) ; if ( record != null ) return ( REC ) record ; return null ; }
Return the element at the current position and move backward the cursor to the previous position available.

@return the previous record found, otherwise the NoSuchElementException exception is thrown when no more records are found.
Return the element at the current position and move backward the cursor to the previous position available .