-- ../m2/methods.m2:456-458
cacheValue = key -> f -> x -> (
c := try x.cache else x.cache = new CacheTable;
if c#?key then c#key else c#key = f x)
| symbol class value location of symbol
| ------ ----- ----- ------------------
| f : FunctionClosure -- ... ../m2/methods.m2:456:20-456:20
| key : Symbol -- inverse ../m2/methods.m2:456:13-456:13
| -- function f:
| -- ../m2/matrix1.m2:660
| inverse Matrix := (cacheValue symbol inverse) ( m -> id_(target m) // m )