}
protected ElementTest parseElementTest( TokenStream tokens ) {
if (tokens.canConsume("element", "(")) {
if (tokens.canConsume(")") || tokens.canConsume("*", ")")) {
return new ElementTest(new NameTest(null, null), new NameTest(null, null));
}
ElementTest result = null;
NameTest elementName = parseNameTest(tokens);
if (tokens.canConsume(",")) {
NameTest typeName = parseNameTest(tokens);
result = new ElementTest(elementName, typeName);
tokens.canConsume('?'); // just eat this
} else {
result = new ElementTest(elementName, new NameTest(null, null));
}
tokens.consume(")");
return result;
}
return null;