protected RuleVariants createLeftFactoredRuleVariant(Rule rule, String factoredElement) {
RuleAST ast = (RuleAST)rule.ast.dupTree();
BlockAST block = (BlockAST)ast.getFirstChildWithType(ANTLRParser.BLOCK);
ast = (RuleAST)rule.ast.dupTree();
block = (BlockAST)ast.getFirstChildWithType(ANTLRParser.BLOCK);
if (!translateLeftFactoredDecision(block, factoredElement, true, DecisionFactorMode.PARTIAL_FACTORED, false)) {
unfactoredAst = (RuleAST)rule.ast.dupTree();
unfactoredBlock = (BlockAST)unfactoredAst.getFirstChildWithType(ANTLRParser.BLOCK);
if (!translateLeftFactoredDecision(unfactoredBlock, factoredElement, true, DecisionFactorMode.PARTIAL_UNFACTORED, false)) {