docs: public final void epStatement() throws RecognitionException {
  		int epStatement_StartIndex = input.index();
  
  		Token s=null;
  		Token id=null;
  		Token c=null;
  
  
  		        JavaInterfacePointsDescr d = null;
  		    
  		try {
  			if ( state.backtracking>0 && alreadyParsedRule(input, 94) ) { return; }
  
  			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:990:9: ( (s= 'exitPoints' '[' id= StringLiteral c= ']' |s= 'entryPoints' '[' id= StringLiteral c= ']' |s= 'channels' '[' id= StringLiteral c= ']' ) )
  			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:991:9: (s= 'exitPoints' '[' id= StringLiteral c= ']' |s= 'entryPoints' '[' id= StringLiteral c= ']' |s= 'channels' '[' id= StringLiteral c= ']' )
  			{
  			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:991:9: (s= 'exitPoints' '[' id= StringLiteral c= ']' |s= 'entryPoints' '[' id= StringLiteral c= ']' |s= 'channels' '[' id= StringLiteral c= ']' )
  			int alt126=3;
  			switch ( input.LA(1) ) {
  			case 80:
  				{
  				alt126=1;
  				}
  				break;
  			case 79:
  				{
  				alt126=2;
  				}
  				break;
  			case 70:
  				{
  				alt126=3;
  				}
  				break;
  			default:
  				if (state.backtracking>0) {state.failed=true; return;}
  				NoViableAltException nvae =
  					new NoViableAltException("", 126, 0, input);
  				throw nvae;
  			}
  			switch (alt126) {
  				case 1 :
  					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:991:11: s= 'exitPoints' '[' id= StringLiteral c= ']'
  					{
  					s=(Token)match(input,80,FOLLOW_80_in_epStatement4262); if (state.failed) return;
  					match(input,59,FOLLOW_59_in_epStatement4264); if (state.failed) return;
  					id=(Token)match(input,StringLiteral,FOLLOW_StringLiteral_in_epStatement4268); if (state.failed) return;
  					c=(Token)match(input,60,FOLLOW_60_in_epStatement4272); if (state.failed) return;
  					if ( state.backtracking==0 ) {
  					            d = new JavaInterfacePointsDescr( (id!=null?id.getText():null) );
  					            d.setType( JavaBlockDescr.BlockType.EXIT );
  					            d.setStart( ((CommonToken)s).getStartIndex() );
  					            d.setEnd( ((CommonToken)c).getStopIndex() ); 
  					            this.addBlockDescr( d );
  					        }
  					}
  					break;
  				case 2 :
  					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:999:12: s= 'entryPoints' '[' id= StringLiteral c= ']'
  					{
  					s=(Token)match(input,79,FOLLOW_79_in_epStatement4298); if (state.failed) return;
  					match(input,59,FOLLOW_59_in_epStatement4300); if (state.failed) return;
  					id=(Token)match(input,StringLiteral,FOLLOW_StringLiteral_in_epStatement4304); if (state.failed) return;
  					c=(Token)match(input,60,FOLLOW_60_in_epStatement4308); if (state.failed) return;
  					if ( state.backtracking==0 ) {
  					            d = new JavaInterfacePointsDescr( (id!=null?id.getText():null) );
  					            d.setType( JavaBlockDescr.BlockType.ENTRY );
  					            d.setStart( ((CommonToken)s).getStartIndex() );
  					            d.setEnd( ((CommonToken)c).getStopIndex() ); 
  					            this.addBlockDescr( d );
  					        }
  					}
  					break;
  				case 3 :
  					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1007:12: s= 'channels' '[' id= StringLiteral c= ']'
  					{
  					s=(Token)match(input,70,FOLLOW_70_in_epStatement4334); if (state.failed) return;
  					match(input,59,FOLLOW_59_in_epStatement4336); if (state.failed) return;
  					id=(Token)match(input,StringLiteral,FOLLOW_StringLiteral_in_epStatement4340); if (state.failed) return;
  					c=(Token)match(input,60,FOLLOW_60_in_epStatement4344); if (state.failed) return;
  					if ( state.backtracking==0 ) {
  					            d = new JavaInterfacePointsDescr( (id!=null?id.getText():null) );
  					            d.setType( JavaBlockDescr.BlockType.CHANNEL );
  					            d.setStart( ((CommonToken)s).getStartIndex() );
  					            d.setEnd( ((CommonToken)c).getStopIndex() ); 
  					            this.addBlockDescr( d );
  					        }
  					}
  					break;
  
  			}
  
  			}
  
  		}
  		catch (RecognitionException re) {
  			reportError(re);
  			recover(input,re);
  		}
  		finally {
  			// do for sure before leaving
  			if ( state.backtracking>0 ) { memoize(input, 94, epStatement_StartIndex); }
  
  		}
  	}