Allowance.Magic_allow_disallowTakes a slow but type-correct Allow_disallow module and returns the magic version, which is faster. NOTE: for this to be sound, the functions in the original module must be identity functions (up to runtime representation).
module X : Allow_disallowtype ('a, 'b, 'd) sided = ('a, 'b, 'd) X.sidedval disallow_right : ('a, 'b, 'l * 'r) sided -> ('a, 'b, 'l * disallowed) sidedDisallows on the right.
val disallow_left : ('a, 'b, 'l * 'r) sided -> ('a, 'b, disallowed * 'r) sidedDisallows a the left.
Generalizes a right-hand-side allowed to be any allowance.