Steven>Agree with James, and that's not even including implementations in other Steven>codebases that use calcite (e.g. there are dozens of implementations in Steven>Dremio's codebase).
Can you please show RelShuttle in Dremio codebase? I see no RelShuttle implementations: https://github.com/dremio/dremio-oss/search?q=relshuttle Note: RelShuttleImpl does not count since RelShuttleImpl does not really need RelNode cooperation. RelShuttleImpl just enumerates children of the relations, and it does not rely on accept(..) calls. It can do the very same thing without calling accept(this), so we can remove RelNode#accept(RelNode) methods, and we can still get the same RelShuttleImpl. It can have a series of if (... instanceof) checks or a Map#get(getClass()) or even https://github.com/forax/exotic#visitor---javadoc Vladimir
