public NbGradleModel updateEntry(NbGradleModel model) {
    CacheKey key = tryCreateKey(model);
    if (key == null) {
      return null;
    }

    NbGradleModel newModel = model;
    NbGradleModel prevModel;
    cacheLock.lock();
    try {
      prevModel = cache.get(key);
      if (prevModel == null) {
        cache.put(key, newModel);
        cleanupCache();
      } else {
        newModel = prevModel.updateEntry(newModel);
        cache.put(key, newModel);
      }
    } finally {
      cacheLock.unlock();
    }

    if (prevModel != null) {
      notifyUpdate(model);
    }
    return newModel;
  }
  private static CacheKey tryCreateKey(NbGradleModel model) {
    ExceptionHelper.checkNotNullArgument(model, "model");

    File projectDir = model.getGenericInfo().getProjectDir();

    FileObject settingsFileObj = model.getGenericInfo().tryGetSettingsFileObj();
    File settingsFile = settingsFileObj != null ? FileUtil.toFile(settingsFileObj) : null;

    if (projectDir == null || (settingsFile == null && settingsFileObj != null)) {
      return null;
    }

    return new CacheKey(projectDir, settingsFile);
  }