@ Override public boolean remove ( Object key , final OIdentifiable value ) { if ( key == null ) { return false ; } key = getCollatingValue ( key ) ; final Set < String > words = splitIntoWords ( key . toString ( ) ) ; final OModifiableBoolean removed = new OModifiableBoolean ( false ) ; for ( final String word : words ) { acquireSharedLock ( ) ; try { if ( apiVersion == 0 ) { removeV0 ( value , removed , word ) ; } else if ( apiVersion == 1 ) { removeV1 ( value , removed , word ) ; } else { throw new IllegalStateException ( "Invalid API version, " + apiVersion ) ; } } finally { releaseSharedLock ( ) ; } } return removed . getValue ( ) ; }
Splits passed in key on several words and remove records with keys equals to any item of split result and values equals to passed in value .