public function insertStructure(ffOneStructure $structure)
 {
     $data = $structure->getData();
     if (is_array($data)) {
         foreach ($data as $newSection) {
             if (empty($this->_currentSectionBuffer)) {
                 $this->_data[] = $newSection;
             } else {
                 $this->_getCurrentSection()->addSection($newSection);
                 $this->_removeSectionFromBuffer();
             }
         }
     }
 }
 protected function _insertOptionsHolder(ffOneStructure $s, $optionsHolderClassName)
 {
     $optionsHolder = $this->_getOptionsholderfactory()->createOptionsHolder($optionsHolderClassName);
     $s->insertStructure($optionsHolder->getOptions());
 }
 /**
  * Repeatable containers has specific data saving structure. It's like this:
  * 
  * [repeatableContainer][0][optionName]
  * [repeatableContainer][1][optionName]
  * 
  * See the numbers, they are here to identify the repeatabling.
  * @param ffOneStructure $item
  */
 private function _walkRepeatableContainer($item)
 {
     // IMAGE
     // TODO there MIGHT be problem when repeatables are 0,1,5,6,9,10
     // [!!repeatableContainer!!]  // [0][optionName]
     $this->_addRoute($item->getId());
     // this handle the printe
     $this->_beforeContainer($item);
     // number of items, now we are returned [0][optionName]
     $currentRepeatableRoute = $this->_getCurrentRouteValue();
     $repeatableCount = count($currentRepeatableRoute);
     // it's empty (mean nothing saved now), we then simply set this to 1 and default value aappears;
     if ($repeatableCount == 0) {
         $repeatableCount = 1;
     }
     // GO THROUGH ALL SAVED FILES, AND FIRST is -1 to generate template for javascript shti
     for ($i = -1; $i < $repeatableCount; $i++) {
         $this->_addRoute($i, true);
         if ($i == -1) {
             //$this->_addRoute( $this->_getNamePlaceholder($this->_getCurrentRouteCount()) );
             $this->_beforeRepeatableTemplate($item, $this->_getNamePlaceholder($this->_getCurrentRouteCount() - 1));
             $this->_beforeRepeatableNode($item, $this->_getNamePlaceholder($this->_getCurrentRouteCount() - 1));
         } else {
             $this->_beforeRepeatableNode($item, $i);
         }
         foreach ($item->getData() as $childItem) {
             $this->_walkItem($childItem);
         }
         if ($i == -1) {
             $this->_afterRepeatableNode($item, $this->_getNamePlaceholder($this->_getCurrentRouteCount() - 1));
             $this->_afterRepeatableTemplate($item, $this->_getNamePlaceholder($this->_getCurrentRouteCount() - 1));
         } else {
             $this->_afterRepeatableNode($item, $i);
         }
         $this->_removeRoute();
     }
     $this->_afterContainer($item);
     $this->_removeRoute();
 }