* @throws IllegalArgumentException if {@code support} does not implement {@link UndeclaredStatementFactory}
* @throws IllegalStateException if added in declared phase
* @throws NullPointerException if {@code support} is null
*/
@Beta
<X, Y extends DeclaredStatement<X>, Z extends EffectiveStatement<X, Y>>
* @throws IllegalArgumentException if {@code support} does not implement {@link UndeclaredStatementFactory}
* @throws IllegalStateException if added in declared phase
* @throws NullPointerException if {@code support} is null
*/
@Beta
<X, Y extends DeclaredStatement<X>, Z extends EffectiveStatement<X, Y>>