private void scan(DiffElement<?> element, DTree root, boolean source) throws IOException {
    if (!myUpdating.get()) return;
    if (element.isContainer()) {
      text.set(prepareText(element.getPath()));
      final DiffElement<?>[] children = element.getChildren();
      for (DiffElement<?> child : children) {
        if (!myUpdating.get()) return;
        text.set(prepareText(child.getPath()));
        BiMap<String, String> replacing = mySourceToReplacingTarget.get(root.getPath());
        String replacementName =
          replacing != null ? source ? replacing.get(child.getName()) : replacing.inverse().get(child.getName()) : null;
        final DTree el = root.addChild(child, source, replacementName);
        scan(child, el, source);
      }
    }
  }
private void scan(DiffElement<?> element, DTree root, boolean source)