code: private AppIdentity getAppIdentity(ApiConfiguration apiConfig) {
  		final String applicationName = apiConfig.getApplication();
  
  		if (applicationName == null)
  			return null;
  
  		// If there's no record create it.
  		if (!applicationIdentityCache.containsKey(applicationName)) {
  			applicationIdentityCache.put(applicationName, new AppIdentityState());
  		}
  
  		final AppIdentityState state = applicationIdentityCache.get(applicationName);
  		final long now = System.currentTimeMillis();
  
  		if ((state.lastModified() + FIVE_MINUTES_MILLIS) < now) {
  			state.touch();
  			try {
  				final AppIdentity identity = identifyApp(apiConfig);
  				applicationIdentityCache.put(applicationName, state.updateAppIdentity(identity));
  
  				LOGGER.debug("Application identity: {}", identity);
  
  			} catch (Throwable t) {
  				LOGGER.info("Unable to determine application identity", t);
  			}
  		}
  
  		return applicationIdentityCache.get(apiConfig.getApplication()).getAppIdentity();
  	}
docs: Retrieves the application identity given the environment details
  @return The application identity