When the core traverses the document, it executes all objects in a linear fashion. Attributes are always placed before the path objects they modify. Paint can only be applied after a path is fully defined. And paint is highly dependent on the attributes...

To allow attributes to get executed after the path is fully defined, the attributes get embedded in a special block of type moderator, which modifies the execution flow.

When a moderator block is reached during sequential execution, the block is recorded on the context's moderator stack and is then simply skipped. It is only later, when the paint procedure gets invoked, that the moderator blocks get executed for real. This is done by method VP::Render::Context::ExecuteModerators.