There's still a lot of room to beef up {@link org.apache.tapestry5.internal.pageload.ComponentAssembler} and {@link org.apache.tapestry5.internal.pageload.EmbeddedComponentAssembler} to perform more static analysis.
Loading a page involves a recurive process of creating {@link org.apache.tapestry5.internal.pageload.ComponentAssembler}s: for the root component, then down the tree for each embedded component. A ComponentAssembler is largely a collection of {@link org.apache.tapestry5.internal.pageload.PageAssemblyAction}s. Once created, a ComponentAssembler can quickly assemble any number of component instances. All of the expensive logic, such as fitting template tokens together and matching parameters to bindings, is done as part of the one-time construction of the ComponentAssembler. The end result removes a huge amount of computational redundancy that was present in Tapestry 5.0, but to understand this, you need to split your mind into two phases: construction (of the ComponentAssemblers) and assembly. It's twisted ... and perhaps a bit functional and Monadic.
And truly,
This is the Tapestry Heart, This is the Tapestry Soul...