Why does custom passes before joint graph (joint_custom_pre_pass) executed twice?

And

Why does joint_custom_pre_pass executed twice, is this a mistake or a design by purpose?