﻿:: { n:i8, qn:i8?, b:b, qb:b?, s:i8* }

With(x: n, [ x, x * x, x * x * x ])
Guard(x: qn, [ x, x * x, x * x * x ])

If(true , [1,2,3])
If(3 < 5, [1,2,3])
If(false, [1,2,3])
If(7 < 5, [1,2,3])
If(n < 5, [1,2,3])

If(true , [1,2,3], [4,5])
If(3 < 5, [1,2,3], [4,5])
If(false, [1,2,3], [4,5])
If(7 < 5, [1,2,3], [4,5])
If(n < 5, [1,2,3], [4,5])
If(true , [1,2,3], s)
If(3 < 5, [1,2,3], s)
If(false, [1,2,3], s)
If(7 < 5, [1,2,3], s)
If(n < 5, [1,2,3], s)
If(true , [1,2,3], s ++ Range(17))
If(3 < 5, [1,2,3], s ++ Range(17))
If(false, [1,2,3], s ++ Range(17))
If(7 < 5, [1,2,3], s ++ Range(17))
If(n < 5, [1,2,3], s ++ Range(17))

If(true , [1,2,3], true , [4,5])
If(true , [1,2,3], 3 < 5, [4,5])
If(true , [1,2,3], false, [4,5])
If(true , [1,2,3], 7 < 5, [4,5])
If(true , [1,2,3], n < 5, [4,5])
If(3 < 5, [1,2,3], true , [4,5])
If(3 < 5, [1,2,3], 3 < 5, [4,5])
If(3 < 5, [1,2,3], false, [4,5])
If(3 < 5, [1,2,3], 7 < 5, [4,5])
If(3 < 5, [1,2,3], n < 5, [4,5])
If(false, [1,2,3], true , [4,5])
If(false, [1,2,3], 3 < 5, [4,5])
If(false, [1,2,3], false, [4,5])
If(false, [1,2,3], 7 < 5, [4,5])
If(false, [1,2,3], n < 5, [4,5])
If(7 < 5, [1,2,3], true , [4,5])
If(7 < 5, [1,2,3], 3 < 5, [4,5])
If(7 < 5, [1,2,3], false, [4,5])
If(7 < 5, [1,2,3], 7 < 5, [4,5])
If(7 < 5, [1,2,3], n < 5, [4,5])
If(n < 5, [1,2,3], true , [4,5])
If(n < 5, [1,2,3], 3 < 5, [4,5])
If(n < 5, [1,2,3], false, [4,5])
If(n < 5, [1,2,3], 7 < 5, [4,5])
If(n < 5, [1,2,3], n < 5, [4,5])

If(true , [1,2,3], true , s)
If(true , [1,2,3], 3 < 5, s)
If(true , [1,2,3], false, s)
If(true , [1,2,3], 7 < 5, s)
If(true , [1,2,3], n < 5, s)
If(3 < 5, [1,2,3], true , s)
If(3 < 5, [1,2,3], 3 < 5, s)
If(3 < 5, [1,2,3], false, s)
If(3 < 5, [1,2,3], 7 < 5, s)
If(3 < 5, [1,2,3], n < 5, s)
If(false, [1,2,3], true , s)
If(false, [1,2,3], 3 < 5, s)
If(false, [1,2,3], false, s)
If(false, [1,2,3], 7 < 5, s)
If(false, [1,2,3], n < 5, s)
If(7 < 5, [1,2,3], true , s)
If(7 < 5, [1,2,3], 3 < 5, s)
If(7 < 5, [1,2,3], false, s)
If(7 < 5, [1,2,3], 7 < 5, s)
If(7 < 5, [1,2,3], n < 5, s)
If(n < 5, [1,2,3], true , s)
If(n < 5, [1,2,3], 3 < 5, s)
If(n < 5, [1,2,3], false, s)
If(n < 5, [1,2,3], 7 < 5, s)
If(n < 5, [1,2,3], n < 5, s)

If(true , [1,2,3], true , s ++ Range(17))
If(true , [1,2,3], 3 < 5, s ++ Range(17))
If(true , [1,2,3], false, s ++ Range(17))
If(true , [1,2,3], 7 < 5, s ++ Range(17))
If(true , [1,2,3], n < 5, s ++ Range(17))
If(3 < 5, [1,2,3], true , s ++ Range(17))
If(3 < 5, [1,2,3], 3 < 5, s ++ Range(17))
If(3 < 5, [1,2,3], false, s ++ Range(17))
If(3 < 5, [1,2,3], 7 < 5, s ++ Range(17))
If(3 < 5, [1,2,3], n < 5, s ++ Range(17))
If(false, [1,2,3], true , s ++ Range(17))
If(false, [1,2,3], 3 < 5, s ++ Range(17))
If(false, [1,2,3], false, s ++ Range(17))
If(false, [1,2,3], 7 < 5, s ++ Range(17))
If(false, [1,2,3], n < 5, s ++ Range(17))
If(7 < 5, [1,2,3], true , s ++ Range(17))
If(7 < 5, [1,2,3], 3 < 5, s ++ Range(17))
If(7 < 5, [1,2,3], false, s ++ Range(17))
If(7 < 5, [1,2,3], 7 < 5, s ++ Range(17))
If(7 < 5, [1,2,3], n < 5, s ++ Range(17))
If(n < 5, [1,2,3], true , s ++ Range(17))
If(n < 5, [1,2,3], 3 < 5, s ++ Range(17))
If(n < 5, [1,2,3], false, s ++ Range(17))
If(n < 5, [1,2,3], 7 < 5, s ++ Range(17))
If(n < 5, [1,2,3], n < 5, s ++ Range(17))

// REVIEW: Would be nice to do better. The ArgScope doesn't know its count range.
// Perhaps it should?
With(x: Range(10), x if b else -x)
