// optimisation: do not travel up unnecessary
 private void markDirtyRecursivelyInternal() {
   for (VirtualFileSystemEntry child : getArraySafely()) {
     if (isAdoptedChild(child)) break;
     child.markDirtyInternal();
     if (child instanceof VirtualDirectoryImpl) {
       ((VirtualDirectoryImpl) child).markDirtyRecursivelyInternal();
     }
   }
 }