       radicand: @radicand_value
     @klass.build(_.extend({}, data, new_vals))
 
+  subExpressions: ->
+    [@degree(), @radicand()]
+
 ttm.class_mixer(Root)
 
 class Variable extends ExpressionComponent
   initialize: (opts={})->
+    super
     @name_value = opts.name
   name: -> @name_value
   toString: ->

      it.toString()).join(", ").value()
    "Expression(o: #{tf @is_open}, e: #{tf @is_error}, exp: [#{subexpressions}])"

ttm.class_mixer(Expression)


class Number extends ExpressionComponent
  initialize: (opts)->
    @val = opts.value
    @future_as_decimal = opts.future_as_decimal


  root: Root
  variable: Variable

class ExpressionComponentSource
  initialize: ->
    @id_source = ExpressionIDSource.build()
