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

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

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