         throw new Error invalid unless correct
         throw new Error abstract if node.abstract()
         exists = _.find @children or [], isEqual
+        @emit "append", this, node unless exists?
         (@children ?= []).push node unless exists

        return @$name unless name?
        invalid = "Name is not a string"
        throw new Error invalid unless correct
        @emit("name", this, @$name, name)
        @$name = name.toString()

    # Either get or set the identification prefix string for this

        throw new Error invalid unless correct
        throw new Error abstract if node.abstract()
        exists = _.find @children or [], isEqual
        @emit "prepend", this, node unless exists?
        (@children ?= []).unshift node unless exists

    # Append the supplied node to the array of children nodes of
