private FileNaming rescanChild(
      final FileNaming folderName, final String childName, boolean ignoreCache) {
    final File folder = folderName.getFile();
    final File child = new File(folder, childName);
    final FileInfo fInfo = new FileInfo(child);

    FileNaming retval =
        (fInfo.isConvertibleToFileObject())
            ? NamingFactory.fromFile(folderName, child, ignoreCache)
            : null;
    if (retval != null) {
      addChild(folderName, retval);
    } else {
      FileName fChild =
          new FileName(folderName, child, null) {
            @Override
            public boolean isDirectory() {
              return false;
            }

            @Override
            public boolean isFile() {
              return false;
            }
          };

      removeChild(folderName, fChild);
    }

    return retval;
  }
 @Override
 public void run() {
   final File[] children = folder.listFiles();
   if (children != null) {
     newChildren = new LinkedHashSet<FileNaming>();
     for (int i = 0; i < children.length; i++) {
       final FileInfo fInfo = new FileInfo(children[i], 1);
       if (fInfo.isConvertibleToFileObject()) {
         FileNaming child = NamingFactory.fromFile(folderName, children[i], ignoreCache);
         newChildren.add(child);
       }
     }
   } else {
     folderExists = folder.exists();
     // #150009 - children == null -> folder does not exists, or an I/O error occurs
     // folder.listFiles() failed with I/O exception - do not remove children
   }
 }