title: User keyword's robot.running.model.Keyword object children attribute returns empty list in prerunmodifier start_suite function
body: <p>I have a simple prerunmodifier that implements the <code>start_suite</code> function in which it gets the suite setup keyword from the <code>suite</code> variable and prints its attributes. The object is an instance of <code>robot.running.model.Keyword</code> class, here is the <a href="https://robot-framework.readthedocs.io/en/v3.1.2/autodoc/robot.running.html?highlight=robot.running.model.Keyword#robot.running.model.Keyword" rel="nofollow noreferrer">doc</a> for that class. The <code>name</code>, keyword <code>type</code>, <code>id</code> and <code>parent</code> attributes are correct but the <code>timeout</code>, <code>doc</code>, <code>tags</code>, <code>children</code> attributes return nothing. It is the same with <code>keywords</code> and <code>messages</code> attributes. Below is my simplified code example and the output.</p>
  <p>I would expect the following children: Log, Log Many, No Operation. Is it possible to get the name (and arguments) of these keywords in a prerunmodifier like this? I am using robotframework==3.1.2.</p>
  <p>This is the suite file (test.robot):</p>
  <pre><code>*** Settings ***
  Suite Setup    Custom Suite Setup Keyword
  
  *** Test Cases ***
  A test
      No Operation
      
  *** Keywords ***
  Custom Suite Setup Keyword
      [Timeout]    2 min
      [Documentation]    It is a keyword doc.
      [Tags]    1TAG    2TAG
      Log    1st child
      Log Many    2nd    child
      No Operation
      [Teardown]    My Keyword Teardown
      
  My Keyword Teardown
      Log     teardown
  </code></pre>
  <p>This is the prerunmodifier (modifier.py):</p>
  <pre><code>from robot.api import SuiteVisitor
  from robot.libraries.BuiltIn import BuiltIn
  
  class MyModifier(SuiteVisitor):
  
      def __init__(self):
          self._BuiltIn = BuiltIn()
          
      
      def start_suite(self, suite):
          self._BuiltIn.log_to_console(f'suite keywords - {suite.keywords}')
          self._BuiltIn.log_to_console(f'class          - {type(suite.keywords.setup)}')
          self._BuiltIn.log_to_console(f'name           - {suite.keywords.setup.name}')
          self._BuiltIn.log_to_console(f'id             - {suite.keywords.setup.id}')
          self._BuiltIn.log_to_console(f'parent(suite)  - {suite.keywords.setup.parent}')
          self._BuiltIn.log_to_console(f'timeout        - {suite.keywords.setup.timeout}')
          self._BuiltIn.log_to_console(f'type           - {suite.keywords.setup.type}')
          self._BuiltIn.log_to_console(f'doc            - {suite.keywords.setup.doc}')
          self._BuiltIn.log_to_console(f'tags           - {suite.keywords.setup.tags}')
          self._BuiltIn.log_to_console(f'children       - {suite.keywords.setup.children}')
  </code></pre>
  <p>This is the output:</p>
  <pre><code>prompt# robot --prerunmodifier modifier.MyModifier --pythonpath ./ test.robot
  suite keywords - [Custom Suite Setup Keyword]
  class          - &lt;class 'robot.running.model.Keyword'&gt;
  name           - Custom Suite Setup Keyword
  id             - s1-k1
  parent(suite)  - Test
  timeout        - None
  type           - setup
  doc            -
  tags           - []
  children       - []
  ==============================================================================
  Test
  ==============================================================================
  A test                                                                | PASS |
  ------------------------------------------------------------------------------
  Test                                                                  | PASS |
  1 critical test, 1 passed, 0 failed
  1 test total, 1 passed, 0 failed
  ==============================================================================
  </code></pre>