Document ExpressionBuilder (#3927)
Rework substitution to make it not stupid (#3927)