private static void traverseInspectionTree(InspectionTreeNode node,
                                             ThrowableConsumer<? super InspectionTreeNode, ? extends IOException> preAction,
                                             ThrowableConsumer<? super InspectionTreeNode, ? extends IOException> postAction) throws IOException {
    if (node.isExcluded()) {
      return;
    }
    preAction.consume(node);
    for (InspectionTreeNode child : node.getChildren()) {
      traverseInspectionTree(child, preAction, postAction);
    }
    postAction.consume(node);
  }
private static void traverseInspectionTree(InspectionTreeNode node,
                                             ThrowableConsumer<? super InspectionTreeNode, ? extends IOException> preAction,
                                             ThrowableConsumer<? super InspectionTreeNode, ? extends IOException> postAction)