anchor.diff:          if fwd.tail.Length = 0 || rev.tail.Length = 0 then annealTarget
           else Amyris.Bio.primercore.temp
                   dp.pp
  -                (fullTemplate.[X-fwd.tail.Length+1..])
  +                (fullTemplate.[X-fwd.tail.Length+1..].arr)
                   ((Y+rev.tail.Length-1)-(X-fwd.tail.Length+1)+1)
   
       if verbose then
  -        printfn "tuneTailOpt: starting fwdTail=%s" (fwd.tail |> arr2seq)
  -        printfn "tuneTailOpt: starting fwdBody=%s" (fwd.body |> arr2seq)
  -        printfn "tuneTailOpt: starting revTail=%s" (rev.tail |> arr2seq)
  -        printfn "tuneTailOpt: starting revBody=%s" (rev.body |> arr2seq)
  +        printfn "tuneTailOpt: starting fwdTail=%O" fwd.tail
  +        printfn "tuneTailOpt: starting fwdBody=%O" fwd.body
  +        printfn "tuneTailOpt: starting revTail=%O" rev.tail
  +        printfn "tuneTailOpt: starting revBody=%O" rev.body
           printfn "tuneTailOpt: starting fwdTailLenFixed=%s"
               (match fwdTailLenFixed with | None -> "no" | Some(x) -> sprintf "yes %d" x)
           printfn "tuneTailOpt: starting revTailLenFixed=%s"
  
positive.code:                                   iType = DNAIntervalType.AMP}]}
              match prevAmp with
              | None -> assert(primerR.Primer.Length=0)
              | Some(ds) -> primerCheck primerR.Primer ((revComp ds.dna).[offsetR..])
  
              let sliceOut' =
                  match prev with
  
negative.code:                     if margin < 3*approxMargin then linkerRev2Iterative pen (margin+10)
                      else failwithf "failed primer design for design %s" errorName
                  | Some(oligo) ->
                      primerCheck oligo.oligo (ds.dna.RevComp().[oligo.offset..].arr)
                      {tail = Dna(""); body = Dna(oligo.oligo); annotation = []}, oligo.offset
  
  
          linkerRev2Iterative dp.pp (2*approxMargin)
  
  