# File lib/asciidoctor/abstract_node.rb, line 28
  def initialize parent, context, opts = {}
    if context == :document
      # document is a special case, should refer to itself
      @document, @parent = self, nil
    else
      if parent
        @document, @parent = parent.document, parent
      else
        @document = @parent = nil
      end
    end
    @node_name = (@context = context).to_s
    # QUESTION are we correct in duplicating the attributes (seems to be just as fast)
    @attributes = (opts.key? :attributes) ? opts[:attributes].dup : {}
    @passthroughs = {}
  end