         firstp = ref.refine @first
         firstp.isEqual @second
 
-
     class_mixer ExpressionEquality
 
     ExpressionEquality.isEqual = (a,b)->

    })

    ref.forType(comps.addition, {
      isEqual: (buildIsEqual(comps.addition)),
      _simpleIsEqual: (other)-> true # two additions are always equal to one another
      })

    class ExpressionEquality
      initialize: (@first)->

  (class_mixer, object_refinement, comps)->
    ref = object_refinement.build()

    buildIsEqual = (for_type)->
      (other)->
        if other instanceof for_type
          if @_simpleIsEqual
            @_simpleIsEqual(other)
          else
            true
        else if other instanceof comps.expression
          ref.refine(other).isEqual @
        else
