function match_ObjectPath($stack = array())
{
$matchrule = "ObjectPath";
$result = $this->construct($matchrule, $matchrule, null);
$_44 = NULL;
do {
$_26 = NULL;
do {
$_24 = NULL;
do {
$res_21 = $result;
$pos_21 = $this->pos;
$matcher = 'match_' . 'MethodCall';
$key = $matcher;
$pos = $this->pos;
$subres = $this->packhas($key, $pos) ? $this->packread($key, $pos) : $this->packwrite($key, $pos, $this->{$matcher}(array_merge($stack, array($result))));
if ($subres !== FALSE) {
$this->store($result, $subres);
$_24 = TRUE;
break;
}
$result = $res_21;
$this->pos = $pos_21;
$matcher = 'match_' . 'Identifier';
$key = $matcher;
$pos = $this->pos;
$subres = $this->packhas($key, $pos) ? $this->packread($key, $pos) : $this->packwrite($key, $pos, $this->{$matcher}(array_merge($stack, array($result))));
if ($subres !== FALSE) {
$this->store($result, $subres);
$_24 = TRUE;
break;
}
$result = $res_21;
$this->pos = $pos_21;
$_24 = FALSE;
break;
} while (0);
if ($_24 === FALSE) {
$_26 = FALSE;
break;
}
$_26 = TRUE;
break;
} while (0);
if ($_26 === FALSE) {
$_44 = FALSE;
break;
}
while (true) {
$res_43 = $result;
$pos_43 = $this->pos;
$_42 = NULL;
do {
$_40 = NULL;
do {
$res_28 = $result;
$pos_28 = $this->pos;
$_37 = NULL;
do {
if (substr($this->string, $this->pos, 1) == '.') {
$this->pos += 1;
$result["text"] .= '.';
} else {
$_37 = FALSE;
break;
}
$_35 = NULL;
do {
$_33 = NULL;
do {
$res_30 = $result;
$pos_30 = $this->pos;
$matcher = 'match_' . 'MethodCall';
$key = $matcher;
$pos = $this->pos;
$subres = $this->packhas($key, $pos) ? $this->packread($key, $pos) : $this->packwrite($key, $pos, $this->{$matcher}(array_merge($stack, array($result))));
if ($subres !== FALSE) {
$this->store($result, $subres);
$_33 = TRUE;
break;
}
$result = $res_30;
$this->pos = $pos_30;
$matcher = 'match_' . 'Identifier';
$key = $matcher;
$pos = $this->pos;
$subres = $this->packhas($key, $pos) ? $this->packread($key, $pos) : $this->packwrite($key, $pos, $this->{$matcher}(array_merge($stack, array($result))));
if ($subres !== FALSE) {
$this->store($result, $subres);
$_33 = TRUE;
break;
}
$result = $res_30;
$this->pos = $pos_30;
$_33 = FALSE;
break;
} while (0);
if ($_33 === FALSE) {
$_35 = FALSE;
break;
}
$_35 = TRUE;
break;
} while (0);
if ($_35 === FALSE) {
$_37 = FALSE;
break;
}
$_37 = TRUE;
break;
} while (0);
if ($_37 === TRUE) {
$_40 = TRUE;
break;
}
$result = $res_28;
$this->pos = $pos_28;
$matcher = 'match_' . 'OffsetAccess';
$key = $matcher;
$pos = $this->pos;
$subres = $this->packhas($key, $pos) ? $this->packread($key, $pos) : $this->packwrite($key, $pos, $this->{$matcher}(array_merge($stack, array($result))));
if ($subres !== FALSE) {
$this->store($result, $subres);
$_40 = TRUE;
break;
}
$result = $res_28;
$this->pos = $pos_28;
$_40 = FALSE;
break;
} while (0);
if ($_40 === FALSE) {
$_42 = FALSE;
break;
}
$_42 = TRUE;
break;
} while (0);
if ($_42 === FALSE) {
$result = $res_43;
$this->pos = $pos_43;
unset($res_43);
unset($pos_43);
break;
}
}
$_44 = TRUE;
break;
} while (0);
if ($_44 === TRUE) {
return $this->finalise($result);
}
if ($_44 === FALSE) {
return FALSE;
}
}