public final CastExpressionContext castExpression() throws RecognitionException {
		CastExpressionContext _localctx = new CastExpressionContext(_ctx, getState());
		enterRule(_localctx, 24, RULE_castExpression);
		try {
			setState(374);
			switch ( getInterpreter().adaptivePredict(_input,11,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(360); unaryExpression();

				 	if(multiEx||leftMulti){
					try{
						
						int multiplay=Integer.valueOf(_localctx.getText());
							if((multiplay & -multiplay) == multiplay){
								globalLists.get(0).add(_input.getTokenSource().getLine()+"|M001");
							}		
						}
						catch(NumberFormatException exp){
							/*System.out.println(exp.getStackTrace());*/
							
						try{			
						int multiplay=Integer.valueOf(_localctx.getParent().getText().substring(0, _localctx.getParent().getText().indexOf('*')));
							if((multiplay & -multiplay) == multiplay){
								globalLists.get(0).add(_input.getTokenSource().getLine()+"|M001");
							}		
						}
						catch(NumberFormatException exp1){
							/*System.out.println(exp1.getStackTrace());*/
						}
										
						}
						
					}

				}
				break;

			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(363); match(LeftParen);
				setState(364); typeName();
				setState(365); match(RightParen);
				setState(366); castExpression();
				}
				break;

			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(368); match(3);
				setState(369); match(LeftParen);
				setState(370); typeName();
				setState(371); match(RightParen);
				setState(372); castExpression();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}