anchor.diff:                              , tokToSourceString : _ -> string) = 
       
       let blockToString (block : Block<'TokenType>) = 
  -        let typeStr = 
  -            match block.blockType with
  -            | Assignment -> "Assignment"
  -            | Declaration -> "Declaration"
  -            | Definition -> "Definition"
  -            | IfStatement -> "IfStatement"
  -            | ThenStatement -> "ThenStatement"
  -            | ElseStatement -> "ElseStatement"
  -            | ForStatement -> "ForStatement"
  -            | WhileStatement -> "WhileStatement"
  -            | Start -> "Start"
  -            | NoneBlock -> "None"
  +        let typeStr = BlockType.BlockTypeToString block.blockType
   
           let strValues = 
               block.values
               |> Array.map (fun t -> tokToSourceString t)
  -            |> Array.fold (fun prev tokName -> prev + " " + tokName) System.String.Empty
  +            |> Array.fold (fun prev tokName -> prev + " " + tokName) String.Empty
   
           sprintf "%s\n tokens: %s\n" typeStr strValues
       
  
positive.code:             this.parents
              |> List.iter (fun block -> block.ReplaceChild this [node])
  
      /// replace start node on some other node
      member this.ReplaceMeForChildren (node : InterNode<_>) = 
  
          if node <> this
  
negative.code:             
              out.WriteLine (sprintf ("%d -> %d") parentNumber nodeNumber)
  
              if isNew 
              then
                  block.children
                  |> List.iter (fun child -> printInterNode child nodeNumber)
  
  