public static function parse($node, $parent, $key = null)
 {
     $nodes = self::$parser->fetch("./i:param", $node);
     foreach ($nodes as $node) {
         $value = self::$parser->get($node);
         if (strstr($value, "\n")) {
             self::$parser->set(null, str_replace("\n", "<br />", $value), $node);
         }
     }
     $it = new nodeListIterator($nodes);
     $tmp = self::$parser->getProcess();
     $iteration = self::$parser->getIteration();
     if ($parent) {
         $pid = self::$parser->name($parent);
         if ($pid == "component") {
             $name = self::$parser->get($parent, "name");
             foreach ($tmp["parses"][$iteration]["areas"] as $aname => $area) {
                 if (!isset($area["tabs"])) {
                     $area["tabs"][0] = array("attributes" => array(), "components" => $area["components"]);
                 }
                 foreach ($area["tabs"] as $tk => $tab) {
                     foreach ($tab["components"] as $cname => $component) {
                         if ($name == $cname) {
                             $area_name = $aname;
                             $tabid = $tk;
                             break;
                         }
                     }
                 }
             }
             foreach ($nodes as $var) {
                 $v = self::$parser->get($var);
                 if (substr($v, 0, 1) == "[") {
                     $v = explode(",", preg_replace("/[\\[\\]]+/", "", $v));
                 }
                 if (isset($tmp["parses"][$iteration]["areas"][$area_name]["tabs"])) {
                     self::add("areas/" . $area_name . "/tabs/" . $tabid . "/components/" . $name . "/params/" . self::$parser->get($var, "name"), $v);
                 } else {
                     self::add("areas/" . $area_name . "/components/" . $name . "/params/" . self::$parser->get($var, "name"), $v);
                 }
             }
         } else {
             if ($pid == "area") {
                 $name = self::$parser->get($parent, "type");
                 $it->setMode(VALUES);
                 $i = 0;
                 foreach ($it as $v) {
                     if (substr($v, 0, 1) == "[") {
                         $v = explode(",", preg_replace("/[\\[\\]]+/", "", $v));
                     }
                     self::add("areas/" . $name . "/params/" . $i, $v);
                     $i++;
                 }
             }
         }
     } else {
         if ($it->getListLength() > 0) {
             self::parseValues($it);
             $it->rewind();
         }
         $i = 0;
         foreach ($it as $v) {
             $val = self::$parser->get($v);
             if (!property_exists($v, "non_convertable") && substr($val, 0, 1) == "[") {
                 $val = explode(",", preg_replace("/[\\[\\]]+/", "", $val));
             }
             self::add("params/" . $i, $val);
             //Params with key also
             self::add("params/" . self::$parser->get($v, "name"), $val);
             $i++;
         }
     }
     return true;
 }