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

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

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