old_contents: import { EventTargetAssembler } from './eventtarget'
  import { Node } from './core'
  
  /**
   * Node DOM interface assembler
   */
  export class NodeAssembler extends EventTargetAssembler {
      /**
       * @param {*} init
       * @returns {Node|*}
       */
      assemble(init) {
          if(init && init.constructor === Object && init.node instanceof Node) {
              this.init(init)
          }
          else super.assemble(init)
          return this.node
      }
  
      /**
       * @param {Node|*} node
       */
      set node(node) {
          const { domInterface, name } = this.constructor
          if(node instanceof domInterface) this.setInstance(node)
          else {
              const message = `Failed to set 'node' on '${ name }': parameter is not of expected type.`
              throw TypeError(message)
          }
      }
  
      /**
       * @returns {Node|*}
       */
      get node() {
          return this._target
      }
  
      /**
       * @returns {Function}
       */
      static get domInterface() {
          return Node
      }
  }
  
new_contents: import { EventTargetAssembler } from './eventtarget'
  import { Node } from './core'
  
  /**
   * Node DOM interface assembler
   */
  export class NodeAssembler extends EventTargetAssembler {
      /**
       * @param {*} init
       * @returns {Node|*}
       */
      assemble(init) {
          if(init && init.constructor === Object && init.node instanceof Node) {
              this.node = init.node
              this.init(init)
          }
          else super.assemble(init)
          return this.node
      }
  
      /**
       * @param {Node|*} node
       */
      set node(node) {
          if(node !== this.node) {
              const { domInterface, name } = this.constructor
              if(node instanceof domInterface) this.setInstance(node)
              else {
                  const message = `Failed to set 'node' on '${ name }': parameter is not of expected type.`
                  throw TypeError(message)
              }
          }
      }
  
      /**
       * @returns {Node|*}
       */
      get node() {
          return this._target
      }
  
      /**
       * @returns {Function}
       */
      static get domInterface() {
          return Node
      }
  }
  
subject: set init.node first, don't set it twice