This code seems dangerous. Returning an unmanaged location might be right for `LocationTransformer` but isn't what one would expect from the API. I'd therefore move the call to `unmanage(l)` into `LocationTransformer` (but therefore it must know that it's a new instance, so `resolve` is probably a better thing to call.

I'm guessing this is whole area is more complicated though: resolve versus lookup; what is retrieved from the registry versus instantiated each time; what locationDefinition.id means (e.g. is it therefore the definition of an extant location, or a request that a given id be used, or something else).

At a minimum, we should clearly document in the interface that the returned location is a transient unmanaged location, and that this behaviour is likely to change (currently javadoc says "returns fully populated (config etc) location from the given definition, by looking it up").