Render menu item children without being 'expanded'?
I was able to do this by adding a macro for children below the main one in my template.

{% macro menu_links(items, attributes, menu_level) %}
  {% import _self as menus %}
  {% if items %}
    &lt;ul&gt;
      {% for item in items %}
        {%
          set classes = [
            'global-top__utility-item',
            'js-utility-item',
            item.in_active_trail ? 'active-trail',
            item.below ? 'has-submenu'
          ]
        %}
        &lt;li{{ item.attributes.addClass(classes) }}&gt;
          {% if item.url.options.attributes['data-icon'] is defined and item.url.options.attributes['data-icon'] is not empty %}
            &lt;svg class="icon"&gt;&lt;use xlink:href="/themes/custom/pncb/build/img/svg-sprite.svg#{{ item.url.options.attributes['data-icon'] }}"&gt;&lt;/use&gt;&lt;/svg&gt;
          {% endif %}

          {{ link(item.title, item.url) }}
          {% if item.below %}
            {{ menus.submenu_links(item.below, attributes, menu_level + 1) }}
          {% endif %}
        &lt;/li&gt;
      {% endfor %}
    &lt;/ul&gt;
  {% endif %}
{% endmacro %}




{% macro submenu_links(items, attributes, menu_level) %}
  {% import _self as menus %}
  &lt;div class="global-top__submenu"&gt;
    {% for chunk in items|batch(7) %}
      &lt;ul class="global-top__submenu-col"&gt;
        {% for item in chunk %}
          &lt;li{{ item.attributes.addClass(classes) }}&gt;
            {{ link(item.title, item.url) }}
          &lt;/li&gt;
        {% endfor %}
      &lt;/ul&gt;
    {% endfor %}
  &lt;/div&gt;
{% endmacro %}


I split this out due to scoping, different markup for sub menu, and I needed to use the batch filter. Works great.