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

    if (currentRecord != null) {
      try {
        return (REC) currentRecord;
      } finally {
        currentRecord = null;
      }
    }
    // ITERATE UNTIL THE PREVIOUS GOOD RECORD
    while (hasPrevious()) {
      try {
        return (REC) currentRecord;
      } finally {
        currentRecord = null;
      }
    }

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

    if (currentRecord != null) {
      try {
        return (REC) currentRecord;
      } finally {
        currentRecord = null;
      }
    }
    // ITERATE UNTIL THE PREVIOUS GOOD RECORD
    while (hasPrevious()) {
      try {
        return (REC) currentRecord;
      } finally {
        currentRecord = null;
      }
    }

    return null;
  }
@ SuppressWarnings ( "unchecked" ) @ Override public REC previous ( ) { checkDirection ( false ) ; if ( currentRecord != null ) { try { return ( REC ) currentRecord ; } finally { currentRecord = null ; } } // ITERATE UNTIL THE PREVIOUS GOOD RECORD
 while ( hasPrevious ( ) ) { try { return ( REC ) currentRecord ; } finally { currentRecord = null ; } } 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 .