This is an Interesting use case. It poses a problem because with inheritance, field changes can, and in this case are performed by the code in the super class. This is normally solved by instrumenting the super class as well. However, with JDK collection types, we can not redefine them, since they are on the bootclasspath, and thus would violate the JRE license. So for those types proxies are used. The proxies only follow the collection interfaces, so any additional state can't be stored. Perhaps an extendable type handler system is needed, that would you to customize how a type is stored in the cache. I will look at that as a future enhancement.
For now you should be able to work around this problem, by using delegation instead of inheritance. Try modifying SimpleCircularBuffer to implement List, and then add a field which is an ArrayList, which you delegate all calls too (with the exception of your additional methods)
Let me know your findings. Thanks.