The pickled representation of a TabularMDP instance can get pretty hefty. We might want to consider a strategy where we have a custom __getstate__ to filter out cached properties (maybe like this blog post?). Might be worth refactoring or cleaning up method_cache to make sure it interoperates well with this.