private function setValue(&$var, Ezer_AssignStepToAttribute $to, $value)
 {
     $variable = $to->getVariable();
     if ($to->hasPart()) {
         $part = $to->getPart();
         if ($part->hasVariable()) {
             $variable = $part->getVariable();
             //				echo $to->getVariable() .  " has part " . $part->getVariable() . "\n";
             if (!isset($var[$variable])) {
                 //					echo "couldnt find part $variable\n";
                 return false;
             }
             return $this->setValue($var[$variable], $part, $value);
         } elseif ($part->hasPart() && is_array($var)) {
             $all_set = true;
             //				$part_part = $part->getPart();
             //				echo "array part has part " . $part->getPart()->getVariable() . "\n";
             foreach ($var as &$set_var) {
                 if (!$this->setValue($set_var, $part, $value)) {
                     $all_set = false;
                 }
             }
             return $all_set;
         }
     }
     $var = $value;
     return true;
 }
 private function addValue(&$var, Ezer_AssignStepToAttribute $to, $value)
 {
     $variable = $to->getVariable();
     if ($to->hasPart()) {
         $part = $to->getPart();
         if ($part->hasVariable()) {
             $variable = $part->getVariable();
             if (!isset($var[$variable])) {
                 $var[$variable] = null;
             }
             return $this->addValue($var[$variable], $part, $value);
         } elseif ($part->hasPart() && is_array($var)) {
             $all_set = true;
             foreach ($var as &$set_var) {
                 if (!$this->addValue($set_var, $part, $value)) {
                     $all_set = false;
                 }
             }
             return $all_set;
         }
     }
     $var = $value;
     return true;
 }