docs: public final EObject ruleXShortClosure() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_2=null;
          Token lv_explicitSyntax_4_0=null;
          EObject lv_declaredFormalParameters_1_0 = null;
  
          EObject lv_declaredFormalParameters_3_0 = null;
  
          EObject lv_expression_5_0 = null;
  
  
  
          	enterRule();
  
          try {
              // InternalSARL.g:14156:2: ( ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) ) )
              // InternalSARL.g:14157:2: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) )
              {
              // InternalSARL.g:14157:2: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) )
              // InternalSARL.g:14158:3: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) )
              {
              // InternalSARL.g:14158:3: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) )
              // InternalSARL.g:14159:4: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) )
              {
              // InternalSARL.g:14184:4: ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) )
              // InternalSARL.g:14185:5: () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) )
              {
              // InternalSARL.g:14185:5: ()
              // InternalSARL.g:14186:6: 
              {
              if ( state.backtracking==0 ) {
  
                						current = forceCreateModelElement(
                							grammarAccess.getXShortClosureAccess().getXClosureAction_0_0_0(),
                							current);
                					
              }
  
              }
  
              // InternalSARL.g:14192:5: ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )?
              int alt337=2;
              int LA337_0 = input.LA(1);
  
              if ( (LA337_0==RULE_ID||(LA337_0>=44 && LA337_0<=45)||(LA337_0>=92 && LA337_0<=95)) ) {
                  alt337=1;
              }
              switch (alt337) {
                  case 1 :
                      // InternalSARL.g:14193:6: ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )*
                      {
                      // InternalSARL.g:14193:6: ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) )
                      // InternalSARL.g:14194:7: (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter )
                      {
                      // InternalSARL.g:14194:7: (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter )
                      // InternalSARL.g:14195:8: lv_declaredFormalParameters_1_0= ruleJvmFormalParameter
                      {
                      if ( state.backtracking==0 ) {
  
                        								newCompositeNode(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_0_0());
                        							
                      }
                      pushFollow(FOLLOW_134);
                      lv_declaredFormalParameters_1_0=ruleJvmFormalParameter();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        								if (current==null) {
                        									current = createModelElementForParent(grammarAccess.getXShortClosureRule());
                        								}
                        								add(
                        									current,
                        									"declaredFormalParameters",
                        									lv_declaredFormalParameters_1_0,
                        									"io.sarl.lang.SARL.JvmFormalParameter");
                        								afterParserOrEnumRuleCall();
                        							
                      }
  
                      }
  
  
                      }
  
                      // InternalSARL.g:14212:6: (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )*
                      loop336:
                      do {
                          int alt336=2;
                          int LA336_0 = input.LA(1);
  
                          if ( (LA336_0==32) ) {
                              alt336=1;
                          }
  
  
                          switch (alt336) {
                      	case 1 :
                      	    // InternalSARL.g:14213:7: otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) )
                      	    {
                      	    otherlv_2=(Token)match(input,32,FOLLOW_75); if (state.failed) return current;
                      	    if ( state.backtracking==0 ) {
  
                      	      							newLeafNode(otherlv_2, grammarAccess.getXShortClosureAccess().getCommaKeyword_0_0_1_1_0());
                      	      						
                      	    }
                      	    // InternalSARL.g:14217:7: ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) )
                      	    // InternalSARL.g:14218:8: (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter )
                      	    {
                      	    // InternalSARL.g:14218:8: (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter )
                      	    // InternalSARL.g:14219:9: lv_declaredFormalParameters_3_0= ruleJvmFormalParameter
                      	    {
                      	    if ( state.backtracking==0 ) {
  
                      	      									newCompositeNode(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_1_1_0());
                      	      								
                      	    }
                      	    pushFollow(FOLLOW_134);
                      	    lv_declaredFormalParameters_3_0=ruleJvmFormalParameter();
  
                      	    state._fsp--;
                      	    if (state.failed) return current;
                      	    if ( state.backtracking==0 ) {
  
                      	      									if (current==null) {
                      	      										current = createModelElementForParent(grammarAccess.getXShortClosureRule());
                      	      									}
                      	      									add(
                      	      										current,
                      	      										"declaredFormalParameters",
                      	      										lv_declaredFormalParameters_3_0,
                      	      										"io.sarl.lang.SARL.JvmFormalParameter");
                      	      									afterParserOrEnumRuleCall();
                      	      								
                      	    }
  
                      	    }
  
  
                      	    }
  
  
                      	    }
                      	    break;
  
                      	default :
                      	    break loop336;
                          }
                      } while (true);
  
  
                      }
                      break;
  
              }
  
              // InternalSARL.g:14238:5: ( (lv_explicitSyntax_4_0= '|' ) )
              // InternalSARL.g:14239:6: (lv_explicitSyntax_4_0= '|' )
              {
              // InternalSARL.g:14239:6: (lv_explicitSyntax_4_0= '|' )
              // InternalSARL.g:14240:7: lv_explicitSyntax_4_0= '|'
              {
              lv_explicitSyntax_4_0=(Token)match(input,97,FOLLOW_45); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                							newLeafNode(lv_explicitSyntax_4_0, grammarAccess.getXShortClosureAccess().getExplicitSyntaxVerticalLineKeyword_0_0_2_0());
                						
              }
              if ( state.backtracking==0 ) {
  
                							if (current==null) {
                								current = createModelElement(grammarAccess.getXShortClosureRule());
                							}
                							setWithLastConsumed(current, "explicitSyntax", true, "|");
                						
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              // InternalSARL.g:14254:3: ( (lv_expression_5_0= ruleXExpression ) )
              // InternalSARL.g:14255:4: (lv_expression_5_0= ruleXExpression )
              {
              // InternalSARL.g:14255:4: (lv_expression_5_0= ruleXExpression )
              // InternalSARL.g:14256:5: lv_expression_5_0= ruleXExpression
              {
              if ( state.backtracking==0 ) {
  
                					newCompositeNode(grammarAccess.getXShortClosureAccess().getExpressionXExpressionParserRuleCall_1_0());
                				
              }
              pushFollow(FOLLOW_2);
              lv_expression_5_0=ruleXExpression();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                					if (current==null) {
                						current = createModelElementForParent(grammarAccess.getXShortClosureRule());
                					}
                					set(
                						current,
                						"expression",
                						lv_expression_5_0,
                						"org.eclipse.xtext.xbase.Xbase.XExpression");
                					afterParserOrEnumRuleCall();
                				
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
  
                	leaveRule();
  
              }
          }
  
              catch (RecognitionException re) {
                  recover(input,re);
                  appendSkippedTokens();
              }
          finally {
          }
          return current;
      }