docs: public final EObject ruleXExpressionInClosure() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_2=null;
          EObject lv_expressions_1_0 = null;
  
  
  
          	enterRule();
  
          try {
              // InternalSARL.g:14103:2: ( ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* ) )
              // InternalSARL.g:14104:2: ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* )
              {
              // InternalSARL.g:14104:2: ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* )
              // InternalSARL.g:14105:3: () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )*
              {
              // InternalSARL.g:14105:3: ()
              // InternalSARL.g:14106:4: 
              {
              if ( state.backtracking==0 ) {
  
                				current = forceCreateModelElement(
                					grammarAccess.getXExpressionInClosureAccess().getXBlockExpressionAction_0(),
                					current);
                			
              }
  
              }
  
              // InternalSARL.g:14112:3: ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )*
              loop335:
              do {
                  int alt335=2;
                  int LA335_0 = input.LA(1);
  
                  if ( ((LA335_0>=RULE_STRING && LA335_0<=RULE_RICH_TEXT_START)||(LA335_0>=RULE_HEX && LA335_0<=RULE_DECIMAL)||LA335_0==25||(LA335_0>=28 && LA335_0<=29)||LA335_0==36||(LA335_0>=39 && LA335_0<=40)||(LA335_0>=42 && LA335_0<=45)||(LA335_0>=48 && LA335_0<=49)||LA335_0==51||LA335_0==55||(LA335_0>=60 && LA335_0<=63)||(LA335_0>=65 && LA335_0<=68)||(LA335_0>=73 && LA335_0<=75)||(LA335_0>=78 && LA335_0<=96)||LA335_0==106||LA335_0==129||(LA335_0>=131 && LA335_0<=140)) ) {
                      alt335=1;
                  }
  
  
                  switch (alt335) {
              	case 1 :
              	    // InternalSARL.g:14113:4: ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )?
              	    {
              	    // InternalSARL.g:14113:4: ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) )
              	    // InternalSARL.g:14114:5: (lv_expressions_1_0= ruleXExpressionOrVarDeclaration )
              	    {
              	    // InternalSARL.g:14114:5: (lv_expressions_1_0= ruleXExpressionOrVarDeclaration )
              	    // InternalSARL.g:14115:6: lv_expressions_1_0= ruleXExpressionOrVarDeclaration
              	    {
              	    if ( state.backtracking==0 ) {
  
              	      						newCompositeNode(grammarAccess.getXExpressionInClosureAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_1_0_0());
              	      					
              	    }
              	    pushFollow(FOLLOW_136);
              	    lv_expressions_1_0=ruleXExpressionOrVarDeclaration();
  
              	    state._fsp--;
              	    if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      						if (current==null) {
              	      							current = createModelElementForParent(grammarAccess.getXExpressionInClosureRule());
              	      						}
              	      						add(
              	      							current,
              	      							"expressions",
              	      							lv_expressions_1_0,
              	      							"org.eclipse.xtext.xbase.Xbase.XExpressionOrVarDeclaration");
              	      						afterParserOrEnumRuleCall();
              	      					
              	    }
  
              	    }
  
  
              	    }
  
              	    // InternalSARL.g:14132:4: (otherlv_2= ';' )?
              	    int alt334=2;
              	    int LA334_0 = input.LA(1);
  
              	    if ( (LA334_0==26) ) {
              	        alt334=1;
              	    }
              	    switch (alt334) {
              	        case 1 :
              	            // InternalSARL.g:14133:5: otherlv_2= ';'
              	            {
              	            otherlv_2=(Token)match(input,26,FOLLOW_137); if (state.failed) return current;
              	            if ( state.backtracking==0 ) {
  
              	              					newLeafNode(otherlv_2, grammarAccess.getXExpressionInClosureAccess().getSemicolonKeyword_1_1());
              	              				
              	            }
  
              	            }
              	            break;
  
              	    }
  
  
              	    }
              	    break;
  
              	default :
              	    break loop335;
                  }
              } while (true);
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
  
                	leaveRule();
  
              }
          }
  
              catch (RecognitionException re) {
                  recover(input,re);
                  appendSkippedTokens();
              }
          finally {
          }
          return current;
      }