       asDigit:  -> new T.Digit3 @a, @b, @c
       norm: -> @v
 
-    makeNode = (args...) ->
-      type = switch args.length
-        when 2 then T.Node2
-        when 3 then T.Node3
-        else
-          raise new Error "Illegal number of arguments: #{args.length}"
-
-      new type args...
-
 
     # A digit in a finger tree.
     @Digit1 = class

      reduceLeft:  (z, op) -> op z, @a
      reduceRight: (op, z) -> op @a, z

      after:  (x) -> new T.Deep makeDigit(x), (-> T.Empty), makeDigit(@a)
      before: (x) -> new T.Deep makeDigit(@a), (-> T.Empty), makeDigit(x)

      first: -> @a
      last:  -> @a

      init: -> new T.Digit3 @a, @b, @c

      norm: -> norm(@a).plus(norm(@b)).plus(norm(@c)).plus(norm(@d))


    # An empty finger tree.
