static <C> PredicatePermission<C> of(final @NonNull CloudKey<Void> key, final @NonNull Predicate<C> predicate) {
        return new WrappingPredicatePermission<>(key, predicate);
    }
Creates a new predicate permission

@param key       key that identifies the permission node
@param predicate predicate that determines whether the sender has the permission
@param <C>       command sender type
@return created permission node
cloud-core/src/main/java/org/incendo/cloud/permission/PredicatePermission.java