Is defined conditional passing, yet causes a "do not have a method or closure named" error Why is it that in the below, referencing stRow.caption causes an error despite being wrapped in an "if defined" check?

The error is: 


  Craft\SuperTable_BlockModel and its behaviors do not have a method or
  closure named "caption".


I have to be doing something so catastrophically dumb that it's not sticking out yeah?



{% if stRow.caption is defined %}
    {% set caption = stRow.caption %} &lt;&lt;- This line causes the error
{% endif %}


Same with using a null coelescing operator or a ternary operand.

{{ stRow.caption ?? "" }} &lt;&lt;- This causes the error
-- or --
{{ stRow.caption is defined ? stRow.caption : "" }}  &lt;&lt;- This causes the error too!


All three of those should work.

Supertable: 1.0.4
Craft CMS: 2.6.2997
This is a weird twig behavior. You have to do if   stRow['caption'] is defined to make it work because of the object syntax of twig.

Sometimes the if defined statement becomes true when you don't use the array syntax