private boolean canReuse(@NotNull Node node, Object element) {
      if (allowsChildren != node.allowsChildren || hashCode != node.hashCode) return false;
      if (element != null && !matches(element)) return false;
      userObject = node.userObject; // replace old descriptor
      setLeafState(leafState);
      return true;
    }
private boolean canReuse(@NotNull Node node, Object element)