# File lib/yard/handlers/ruby/decorator_handler_methods.rb, line 43
  def process_decorator(*nodes, &block)
    opts = nodes.last.is_a?(Hash) ? nodes.pop : {}

    all_nodes = statement.parameters.select do |p|
      p.is_a? YARD::Parser::Ruby::AstNode
    end

    # Parse decorator parameters (decorator chain).
    all_nodes.each do |param|
      parse_block param if param.call? or param.def?
    end

    selected_nodes =
      if nodes.empty?
        all_nodes
      elsif (nodes.count == 1 and nodes.first == nil)
        []
      else
        nodes
      end

    decorated_methods = selected_nodes.map { |param|
      process_decorator_parameter param, opts, &block
    }.flatten

    # Store method nodes in decorator node.
    statement.define_singleton_method :decorators do
      decorated_methods.map { |h| h[:node] }
    end

    decorated_methods
  end