anchor.diff:      ///     view, and are connected, but only by no-op commands.
       /// </returns>
       let nopConnected (graph : Graph) (x : NodeID) (y : NodeID) : bool =
  -        let xView, xOut, xIn, xnk = graph.Contents.[x]
  -        let yView, _, _, ynk = graph.Contents.[y]
  -
  -        let xToY =
  -            xOut |> Set.toSeq |> Seq.filter (fun { Dest = d } -> d = y)
  -
  -        let yToX =
  -            xIn |> Set.toSeq |> Seq.filter (fun { Src = s } -> s = y)
  +        let xView, _, _, _ = graph.Contents.[x]
  +        let yView, _, _, _ = graph.Contents.[y]
  +        let cons = connections x y graph
   
           // Different names?
           (x <> y)
           // Same view?
           && (xView = yView)
           // Connected?
  -        && not (Seq.isEmpty xToY && Seq.isEmpty yToX)
  -        // All edges from x to y are nop?
  -        && Seq.forall (fun { OutEdge.Command = c } -> isNop c) xToY
  -        // All edges from y to x are nop?
  -        && Seq.forall (fun { InEdge.Command = c } -> isNop c) yToX
  +        && not (Seq.isEmpty cons)
  +        // All edges from x to y and y to x are nop?
  +        && Seq.forall (fun { OutEdge.Command = c } -> isNop c) cons
   
       /// <summary>
       ///     Plumbs a function over various properties of a graph and
  
positive.code:         /// <summary>
          ///    Merges the node <c>src</c> into <c>dest</c>,
          ///    substituting the latter for the former in all edges.
          ///    All edges between the two become cycles on <c>dest</c>.
          ///    Abort transformation if the nodes do not exist.
          /// </summary>
          | Unify of src : string * dest : string
  
      /// <summary>
      ///     A node-centric graph transformation context.
  
negative.code: [<AutoOpen>]
  module Types =
      open Starling.Core.Graph
  
      /// <summary>
      ///     A type of unification used with the <c>Unify</c> leg of
      ///     <see cref="Transform"/>.
      /// <summary>
      type UnifyMode =
          /// <summary>
          ///     Only unify if there are no edges between the two nodes to
          ///     unify.
          /// </summary>
          | OnlyIfNoConnections
          /// <summary>
          ///     Always unify, but make any connecting edges into cycles.
          /// </summary>
          | MakeConnectionsCycles
          /// <summary>
          ///     Always unify, and remove any connecting edges.
          /// </summary>
          | RemoveConnections
  
      /// <summary>
      ///     A graph transformer command.
  