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

    public static var size:Int{return strideof(self)}
    subscript(index: Int) -> UInt8 {
        get {
            return self & (0xFF << index.toU8) >> index.toU8
        }
        set(newValue) {
            self = self | (newValue.toU8 << index.toU8)
        }
    }

            }
        }
        set(newValue) {
            precondition(index<Int.size,"Byte set index out of range")
            if(Int.size == 8){
                self = Int(bitPattern: UInt(self.toU64 | (newValue.toU64 << index.toU64)) )
            }else{
