@NotNull
  public Iterable<ReferenceID> directSubclasses(ReferenceID from) {
    if (myDeltaDirectSubclasses != null) {
      BooleanFunction<ReferenceID> subClassFilter = sub -> {
        if (myIsNodeDeleted.test(sub)) {
          return false;
        }
        Iterable<JvmClass> justCompiled = getCompiledNodes(sub, JvmClass.class);
        // If the class has just been compiled and is stored in the delta, need to ensure the class is still a subclass of the given class
        return isEmpty(justCompiled) || contains(flat(map(justCompiled, cl -> map(cl.getSuperTypes(), st -> new JvmNodeReferenceID(st)))), from);
      };

      return unique(flat(filter(myDirectSubclasses.getDependencies(from), subClassFilter), myDeltaDirectSubclasses.getDependencies(from)));
    }
    return myDirectSubclasses.getDependencies(from);
  }
@NotNull
  public Iterable<ReferenceID> directSubclasses(ReferenceID from)