def parse!
      check_absorption!

      @expected.each do |type, *rest|
        case type
        when :list
          parse_list!(*rest)
        else
          parse_type!(type, *rest)
        end
      end

      self
    end
def parse!
      check_absorption!

      @expected.each do |type, *rest|
        case type
        when :list
          parse_list!(*rest)
        else
          parse_type!(type, *rest)
        end
      end

      self
    end
Perform the actual parsing.
 @return [Result] this instance
 @api private