code: @Override
    public boolean visit(final Node node) {
      if (node instanceof ClassNode) {
        return visit((ClassNode<?>) node);
      } else if (node instanceof PackageNode) {
        return visit((PackageNode) node);
      } else if (node instanceof NamedParameterNode) {
        return visit((NamedParameterNode<?>) node);
      }
      throw new ClassCastException(
          "Node " + node.getClass() + " cannot be casted to one of the known subclasses."
              + " Override this method to handle the case.");
    }
docs: Manually dispatch between different types of Nodes and call a proper visit() method.
  Currently dispatches between ClassNode, PackageNode, and NamedParameterNode types.
  
  @param node TANG configuration node.
  @return true to proceed with the next node, false to cancel.
  @throws ClassCastException if Node is not one of ClassNode, PackageNode,
  or NamedParameterNode.