This interface is a mixture of 'load' and 'access loaded state'. I think this encourages fragile consumer code which has to make assumptions about whether state has been loaded and cached, or not, and assumptions about precise semantics of the interfaces methods which have not been documented.

It would probably be cleaner if the interface was shrunk, into just Load operations, which return separate result/state objects, of which the load/cache state is then implicitly obvious - you have the object implies you have the state.