@Override
  public boolean processAddedClass(DifferentiateContext context, JvmClass addedClass, Utils future, Utils present) {
    if (!addedClass.isPrivate()) {
      KmDeclarationContainer container = KJvmUtils.getDeclarationContainer(addedClass);
      if (container == null || container instanceof KmClass) {
        // calls to newly added class' constructors may shadow calls to functions named similarly
        debug("Affecting lookup usages for added class ", addedClass.getName());
        affectClassLookupUsages(context, addedClass);
      }
      else {
        debug("Affecting lookup usages for top-level functions and properties in a newly added file ", addedClass.getName());
        String scopeName = KJvmUtils.getKotlinName(addedClass);
        for (String symbolName : unique(flat(
          map(filter(container.getFunctions(), f -> !KJvmUtils.isPrivate(f)), KmFunction::getName),
          map(filter(container.getProperties(), p -> !KJvmUtils.isPrivate(p)), KmProperty::getName)
        ))) {
          context.affectUsage(new LookupNameUsage(scopeName, symbolName));
          debug("Affect ", "lookup '" + symbolName + "'", " usage owned by node '", addedClass.getName(), "'");
        }
      }
    }

    return true;
  }
@Override
  public boolean processAddedClass(DifferentiateContext context, JvmClass addedClass, Utils future, Utils present)