MReduce mReduce = mAction.newReduce(alt_CamelCaseFullName);
ArrayList<Element> elements = alternative.getElements();
int elementCount = elements.size();
for (int i = elementCount - 1; i >= 0; i--) {
Element element = elements.get(i);
String element_CamelCaseName = to_CamelCase(element
.getName());
String element_CamelCaseType = null;
boolean elementIsEndToken;
if (element instanceof TokenElement) {
TokenElement tokenElement = (TokenElement) element;
if (tokenElement.getToken().getName()
.equals("$end")) {
elementIsEndToken = true;
}
else {
MatchedToken matchedToken = context
.getMatchedToken(tokenElement
.getToken().getName());
if (matchedToken instanceof NameToken) {
NameToken nameToken = (NameToken) matchedToken;
element_CamelCaseType = nameToken
.get_CamelCaseName();
}
else {
AnonymousToken anonymousToken = (AnonymousToken) matchedToken;
element_CamelCaseType = ""
+ anonymousToken
.get_CamelCaseName();
}
elementIsEndToken = false;
}
}
else {
ProductionElement productionElement = (ProductionElement) element;
element_CamelCaseType = to_CamelCase(productionElement
.getProduction().getName());
elementIsEndToken = false;
}
if (elementIsEndToken) {
mReduce.newReduceEndPop();
}
else {
mReduce.newReduceNormalPop(element_CamelCaseType,
element_CamelCaseName);
}
}
if (alt_CamelCaseFullName.equals("$Start")) {
mReduce.newAcceptDecision(to_CamelCase(elements.get(0)
.getName()));
}
else {
MReduceDecision mReduceDecision = mReduce
.newReduceDecision();
for (Element element : elements) {
String element_CamelCaseName = to_CamelCase(element
.getName());
boolean elementIsEndToken;
if (element instanceof TokenElement) {
TokenElement tokenElement = (TokenElement) element;
if (tokenElement.getToken().getName().equals(