default @NonNull Predicate<Node> predicate(@NonNull Predicate<? super T> and) {
        return node -> matches(node) && and.test(cast(node));
    }
Returns a {@link Predicate}, returning whether a {@link Node}
{@link #matches(Node) matches} this type, and passes the given
{@code and} {@link Predicate}.

@param and a predicate to AND with the result of the type match check
@return a matching predicate, ANDed with the given predicate parameter
api/src/main/java/net/luckperms/api/node/NodeType.java