code: protected function prepareWidgets()
      {
          if ($this->arrWidgets) {
              return;
          }
  
          $arrWidgets = array();
          foreach ($this->arrSubFields as $strFieldName => &$arrSubField) {
              $varValue  = $this->value[$strFieldName];
              $arrRow    = array();
              $objWidget = $this->initializeWidget(
                  $arrSubField,
                  $strFieldName,
                  'value',
                  $varValue['value']
              );
  
              if (!$objWidget) {
                  continue;
              }
              $arrRow[] = $objWidget;
              foreach ($this->arrFlagFields as $strFlag => $arrFlagField) {
                  $objWidget = $this->initializeWidget(
                      $arrFlagField,
                      $strFieldName,
                      $strFlag,
                      $varValue[$strFlag]
                  );
  
                  if ($objWidget) {
                      $arrRow[] = $objWidget;
                  }
              }
              $arrWidgets[] = $arrRow;
          }
          $this->arrWidgets = $arrWidgets;
      }
docs: Prepare all widgets and store them in the protected $arrWidgets property.
  
  @return void