           new-name)))))
 
 
-(inherit-multimethod change-object-name ::editable-context
+(defn-typecheck change-object-name ::editable-context
  "Changes the object's name of given to requested, if requested is
   not taken by another object. In this case, -# with a unique # is
   appended to the requested name. Returns the new attribute name

(declare-multimethod change-object-name)
(declare-multimethod change-incidence-cross)

(inherit-multimethod change-incidence-cross ::editable-context
 "Sets or unsets the cross in the incidence relation of the editable-context.

  Parameters:
     ectx       _editable-context
     obj        _object
     att        _attribute
     cross      _true or false")

(defmethod change-incidence-cross ::editable-context
  [ectx obj att cross]
  (let [ ostr (if (= (type obj) String) obj
                (@(:obj-rows ectx) obj))

  Parameters:
     ectx       _editable-context
     given      _current attribute name or column index
     requested  _requested new attribute name"
  [ectx given requested]
  (let [ obj-cols @(:obj-rows ectx) ]
    (if (= (type given) String)
