Kind of a nit, but I don't like this way of dealing with `_getEntry`, because the semantics of the base class implementation are different from the subclass implementations. The base class returns an object with `installInfo` and `registryInfo` properties, whereas the subclasses return one or the other of those, so the return value is actually of a different "type", and the old-school OO part of my brain doesn't like that :) I'd prefer we just leave this unimplemented in the base class, and have the subclasses look at `this.extensions[id]` directly (or, if we really want to abstract it out, put it in a helper function with a different name).