function match_MethodCall($stack = array())
{
$matchrule = "MethodCall";
$result = $this->construct($matchrule, $matchrule, null);
$_19 = NULL;
do {
$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);
} else {
$_19 = FALSE;
break;
}
if (substr($this->string, $this->pos, 1) == '(') {
$this->pos += 1;
$result["text"] .= '(';
} else {
$_19 = FALSE;
break;
}
if (($subres = $this->whitespace()) !== FALSE) {
$result["text"] .= $subres;
}
$res_10 = $result;
$pos_10 = $this->pos;
$matcher = 'match_' . 'Expression';
$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);
} else {
$result = $res_10;
$this->pos = $pos_10;
unset($res_10);
unset($pos_10);
}
if (($subres = $this->whitespace()) !== FALSE) {
$result["text"] .= $subres;
}
while (true) {
$res_17 = $result;
$pos_17 = $this->pos;
$_16 = NULL;
do {
if (substr($this->string, $this->pos, 1) == ',') {
$this->pos += 1;
$result["text"] .= ',';
} else {
$_16 = FALSE;
break;
}
if (($subres = $this->whitespace()) !== FALSE) {
$result["text"] .= $subres;
}
$matcher = 'match_' . 'Expression';
$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);
} else {
$_16 = FALSE;
break;
}
if (($subres = $this->whitespace()) !== FALSE) {
$result["text"] .= $subres;
}
$_16 = TRUE;
break;
} while (0);
if ($_16 === FALSE) {
$result = $res_17;
$this->pos = $pos_17;
unset($res_17);
unset($pos_17);
break;
}
}
if (substr($this->string, $this->pos, 1) == ')') {
$this->pos += 1;
$result["text"] .= ')';
} else {
$_19 = FALSE;
break;
}
$_19 = TRUE;
break;
} while (0);
if ($_19 === TRUE) {
return $this->finalise($result);
}
if ($_19 === FALSE) {
return FALSE;
}
}