public final void select(ObjectPredicate predicate, ObjectOperation operation) {
        if (predicate.check(this)) {
            operation.execute(this);
        } else {
            selectMembers(predicate, operation);
        }
    }
Applies the predicate to this object. If the predicate returns true, pass this object to the operation, otherwise
invoke the {@link #selectMembers(ObjectPredicate, ObjectOperation)} method to locate sub-elements that might
trigger the predicate.

@param predicate component used to select (sub-)objects
@param operation component performing some operation on the selected (sub-)objects
vespajlib/src/main/java/com/yahoo/vespa/objects/Selectable.java