anchor.diff:          let _5lead = h16 .>> pstring "::" .>>. ((h16 |>> fun x -> [|x|]) <|>% [||])
           let _6lead = h16 .>> pstring "::" <^> ls32
   
  -        (((h16 .>> pchar ':' .>> notFollowedBy (pchar ':')) |> manyMinMax 0 6 |>> Array.ofSeq >>= fun x ->
  +        (h16 .>> pchar ':' .>> notFollowedBy (pchar ':') |> manyMinMax 0 6 |>> Array.ofSeq >>= fun x ->
               let len = Array.length x
               match len with
               | 0 -> _0lead |>> fun (head, tail) -> 
  
positive.code: 
      override this.ToString() = 
          let writeBytes x = 
              let oct0 = x &&& 0xFF000000ul >>> 24
              let oct1 = x &&& 0x00FF0000ul >>> 16
              let oct2 = x &&& 0x0000FF00ul >>> 8
              let oct3 = x &&& 0x000000FFul >>> 0
  
              oct0.ToString("X4") + ":" + oct1.ToString("X4") + ":" + oct2.ToString("X4") + ":" + oct3.ToString("X4")
  
          (writeBytes x0) + ":" + (writeBytes x1) + ":" + (writeBytes x2) + ":" + (writeBytes x3)
  
  
negative.code:                                 | Choice1Of2 head -> 
                                      (Array.append x [|head|], [||])
                                  | Choice2Of2 tail -> (x, tail)
              | _ -> failwith "can never happen") //<|>
          //((pstring "::" >>. (h16 .>> pchar ':') |> manyMinMax 5 5|>> Array.ofSeq .>>. ls32)) |>> (fun (t1, t2) -> ([||], Array.append t1 t2)))     
          |>> fun (x: uint16 array, y: uint16 array) ->     
                  let zeros =
                      let zerosLength = (8 - x.Length - y.Length)
                      Array.create zerosLength 0us
  