I'm not sure I get you. Can you post your custom plugin descriptor? With MBeanResourceComponent, availability is determined by the mere presence of the MBean.
You can look at a trait and then alert if the trait value changes.
If the MBean returns a custom class, the agent will basically turn it into a string, but unless the agent has your class it won't be able to deserialize it from a call.
Have CacheStat implement javax.management.openmbean.CompositeData ; you can then extract a property from it. E.g.
description="Current memory usage"
Where Usage is the MBean attribute 'Usage' and used is the field from it.