docs: public final EObject ruleXConstructorCall() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_2=null;
          Token otherlv_4=null;
          EObject this_XbaseConstructorCall_0 = null;
  
          EObject lv_members_3_0 = null;
  
  
  
          	enterRule();
  
          try {
              // InternalSARL.g:10109:2: ( (this_XbaseConstructorCall_0= ruleXbaseConstructorCall ( ( ( ( () '{' ) )=> ( () otherlv_2= '{' ) ) ( (lv_members_3_0= ruleMember ) )* otherlv_4= '}' )? ) )
              // InternalSARL.g:10110:2: (this_XbaseConstructorCall_0= ruleXbaseConstructorCall ( ( ( ( () '{' ) )=> ( () otherlv_2= '{' ) ) ( (lv_members_3_0= ruleMember ) )* otherlv_4= '}' )? )
              {
              // InternalSARL.g:10110:2: (this_XbaseConstructorCall_0= ruleXbaseConstructorCall ( ( ( ( () '{' ) )=> ( () otherlv_2= '{' ) ) ( (lv_members_3_0= ruleMember ) )* otherlv_4= '}' )? )
              // InternalSARL.g:10111:3: this_XbaseConstructorCall_0= ruleXbaseConstructorCall ( ( ( ( () '{' ) )=> ( () otherlv_2= '{' ) ) ( (lv_members_3_0= ruleMember ) )* otherlv_4= '}' )?
              {
              if ( state.backtracking==0 ) {
  
                			newCompositeNode(grammarAccess.getXConstructorCallAccess().getXbaseConstructorCallParserRuleCall_0());
                		
              }
              pushFollow(FOLLOW_10);
              this_XbaseConstructorCall_0=ruleXbaseConstructorCall();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                			current = this_XbaseConstructorCall_0;
                			afterParserOrEnumRuleCall();
                		
              }
              // InternalSARL.g:10119:3: ( ( ( ( () '{' ) )=> ( () otherlv_2= '{' ) ) ( (lv_members_3_0= ruleMember ) )* otherlv_4= '}' )?
              int alt259=2;
              alt259 = dfa259.predict(input);
              switch (alt259) {
                  case 1 :
                      // InternalSARL.g:10120:4: ( ( ( () '{' ) )=> ( () otherlv_2= '{' ) ) ( (lv_members_3_0= ruleMember ) )* otherlv_4= '}'
                      {
                      // InternalSARL.g:10120:4: ( ( ( () '{' ) )=> ( () otherlv_2= '{' ) )
                      // InternalSARL.g:10121:5: ( ( () '{' ) )=> ( () otherlv_2= '{' )
                      {
                      // InternalSARL.g:10127:5: ( () otherlv_2= '{' )
                      // InternalSARL.g:10128:6: () otherlv_2= '{'
                      {
                      // InternalSARL.g:10128:6: ()
                      // InternalSARL.g:10129:7: 
                      {
                      if ( state.backtracking==0 ) {
  
                        							current = forceCreateModelElementAndSet(
                        								grammarAccess.getXConstructorCallAccess().getAnonymousClassConstructorCallAction_1_0_0_0(),
                        								current);
                        						
                      }
  
                      }
  
                      otherlv_2=(Token)match(input,29,FOLLOW_29); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        						newLeafNode(otherlv_2, grammarAccess.getXConstructorCallAccess().getLeftCurlyBracketKeyword_1_0_0_1());
                        					
                      }
  
                      }
  
  
                      }
  
                      // InternalSARL.g:10141:4: ( (lv_members_3_0= ruleMember ) )*
                      loop258:
                      do {
                          int alt258=2;
                          int LA258_0 = input.LA(1);
  
                          if ( (LA258_0==25||LA258_0==39||(LA258_0>=42 && LA258_0<=45)||LA258_0==48||(LA258_0>=65 && LA258_0<=66)||(LA258_0>=78 && LA258_0<=91)||LA258_0==105) ) {
                              alt258=1;
                          }
  
  
                          switch (alt258) {
                      	case 1 :
                      	    // InternalSARL.g:10142:5: (lv_members_3_0= ruleMember )
                      	    {
                      	    // InternalSARL.g:10142:5: (lv_members_3_0= ruleMember )
                      	    // InternalSARL.g:10143:6: lv_members_3_0= ruleMember
                      	    {
                      	    if ( state.backtracking==0 ) {
  
                      	      						newCompositeNode(grammarAccess.getXConstructorCallAccess().getMembersMemberParserRuleCall_1_1_0());
                      	      					
                      	    }
                      	    pushFollow(FOLLOW_29);
                      	    lv_members_3_0=ruleMember();
  
                      	    state._fsp--;
                      	    if (state.failed) return current;
                      	    if ( state.backtracking==0 ) {
  
                      	      						if (current==null) {
                      	      							current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
                      	      						}
                      	      						add(
                      	      							current,
                      	      							"members",
                      	      							lv_members_3_0,
                      	      							"io.sarl.lang.SARL.Member");
                      	      						afterParserOrEnumRuleCall();
                      	      					
                      	    }
  
                      	    }
  
  
                      	    }
                      	    break;
  
                      	default :
                      	    break loop258;
                          }
                      } while (true);
  
                      otherlv_4=(Token)match(input,30,FOLLOW_2); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        				newLeafNode(otherlv_4, grammarAccess.getXConstructorCallAccess().getRightCurlyBracketKeyword_1_2());
                        			
                      }
  
                      }
                      break;
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
  
                	leaveRule();
  
              }
          }
  
              catch (RecognitionException re) {
                  recover(input,re);
                  appendSkippedTokens();
              }
          finally {
          }
          return current;
      }