@Override public T set( final int index, final T element ) { synchronized ( _queue ) { final T result = super.set( index, element ); if ( result != element ) { if ( ( result != null ) && !contains( result ) ) { _queue.remove( new QueueElement<T>( result ) ); } if ( element != null ) { final QueueElement<T> queueElement = new QueueElement<T>( element ); _queue.remove( queueElement ); addToQueue( queueElement ); } } return result; } }