When access to an object's internals is truly necessary, it isn't practical to use composition based techniques. For example, consider the following mixin-based code which implements a memoization routine for caching method return values:
module Cached
def cache(*method_names)
method_names.each do |m|
original = instance_method(m)