Fix for issues #3931 and #3932

Created a new branch to clean up previous pull request. 
But removal operation uses `equals` comparison to find the interceptor.
http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CopyOnWriteArrayList.html#remove(java.lang.Object)