But that is exactly what is happening right now. The end result is nothing more than ``new LoggingStatement(new Statement($pdoStatement));`` And effectively every call is proxied to the internal statement (that could also be a decorated one)

The confusion coms from, understandably, that Stament is both the base decorator class AND offers some extra logic. The decorator patters is already heavily used, for example Sqlite driver already decorates the decorated statement and the SQL dialects decorate statements too to remove extra columns (postgres pagination).

Will it make sense to have the Statement class as just the base Decorator (proxy calls) and get the extra logic out in another class extending this base class? That way LoggingStatement would only extend the base decorator.