     public static var size:Int{return strideof(self)}
     subscript(index: Int) -> UInt32 {
         get {
+            precondition(index<Int32.size,"Byte set index out of range")
             return self & (0xFF << index.toU32) >> index.toU32
         }
         set(newValue) {
+            precondition(index<Int32.size,"Byte set index out of range")
             self = self | (newValue.toU32 << index.toU32)
         }
     }

    public static var size:Int{return strideof(self)}
    subscript(index: Int) -> Int {
        get {
            if(Int.size == 8){
                return Int(bitPattern: UInt((self.toU64 & (0xFF << index.toU64)) >> index.toU64) )
            }else{

    public static var size:Int{return strideof(self)}
    subscript(index: Int) -> UInt64 {
        get {
            precondition(index<Int64.size,"Byte set index out of range")
            return self & (0xFF << index.toU64) >> index.toU64
        }
        set(newValue) {
            precondition(index<Int64.size,"Byte set index out of range")
            self = self | (newValue.toU64 << index.toU64)
        }
    }
