 	return Positive<B>(f(ar.getPositive))
 }
 
+/// Guarantees that every generated integer is never 0.
 public struct NonZero<A : protocol<Arbitrary, IntegerType>> : Arbitrary, Printable {
 	public let getNonZero : A
 	

	}
	
	public static func arbitrary() -> Gen<Positive<A>> {
		return (Positive.create • abs) <^> A.arbitrary().suchThat(>=0)
	}
	
	public static func shrink(bl : Positive<A>) -> [Positive<A>] {

	return Static<B>(f(ar.getStatic))
}

/// Guarantees that every generated integer is greater than 0.
public struct Positive<A : protocol<Arbitrary, SignedNumberType>> : Arbitrary, Printable {
	public let getPositive : A
	
