The method is to give metadata about the application/location, so that the usage information can be interpreted. For example, usage might say that it was created at time x and terminated at time y; the metadata would say about the location (e.g. if it's a `JcloudsSshMachineLocation` then gives the provider, instanceId, hardwareId, identity). So I was viewing that metadata as not specific to usage, but instead generic about the location.

Return type of `Map<String,String>` is fine, and yes we could have a common instance. Point was more that the two things calling the method will know it has an instance of Location or an instance of Application. So it won't make use of a common interface.