Mostly this code replicates what `memoize` is supposed do. I think it would make a lot more sense to improve `memoize` so that it won't be leaky (use weak maps by default) and reduce this to:

```js
identify.define(Object, memoize(uuid))
```

You could also cherry-pick fixes for `memoize` from https://github.com/mozilla/addon-sdk/pull/1207/files#diff-89c45908f9f77832a5a132b7dfe14e7eL177


If some reason you really don't want to mess with `memoize` that's fine to in that case just add a comment and a bug to
update this to using `memoize` once it's switched to weak-maps.