@Override
	public List<T> findAll(
			HolderReader<? extends Locator, ? extends LocatorHolder<? extends Locator>> locatorReader,
			String applicationHomeDir) throws JAXBException {

		LocatorHolder<? extends Locator> holder = locatorReader.getHolder(locatorReader.getFilePath(applicationHomeDir));
		if (holder == null || holder.getLocators().isEmpty()) {
			return Collections.emptyList();
		}
		List<T> list = new ArrayList<>(holder.getLocators().size());
		C cache = getCache();
		
		for (Locator locator : holder.getLocators()) {
			T parsed = getCachedValue(locator.getId(), cache);
			
			if (parsed == null) {
				parsed = readXml(locator.getLocationFile());
				if (parsed instanceof Lockable) { 
					updateLocked(locator, (Lockable) parsed);
				}
				storeCachedValue(parsed);
			}
			list.add(parsed);
		}
		return list;
	}