maybe-class impl is a protocol not a multimethod, cache its calls