diff --git a/jOOQ/src/main/java/org/jooq/Traverser.java b/jOOQ/src/main/java/org/jooq/Traverser.java
index 88a43203f7..d9325be8cf 100644
--- a/jOOQ/src/main/java/org/jooq/Traverser.java
+++ b/jOOQ/src/main/java/org/jooq/Traverser.java
@@ -118,6 +118,7 @@ public interface Traverser {
* {@link #supplier()}, {@link #abort()}, {@link #recurse()},
* {@link #before()}, {@link #after()}, and {@link #finisher()}.
*/
+ @SuppressWarnings("unchecked")
static Traverser of(
Supplier supplier,
Predicate super A> abort,
@@ -127,7 +128,9 @@ public interface Traverser {
Function super A, ? extends R> finisher
) {
- // TODO: Perhaps we should accept only invariant functions?
+ // The below casts can be considered safe as they can be replaced by
+ // respective x::test or x::apply method references turning variant
+ // versions of the functions into invariant ones.
return new Traverser() {
@Override
public Supplier supplier() {