Add caching method with predicate

As I don't want to override the 'cache_method', I am adding new decoration class, which is pretty much the same like cached_method.