@Override
 public void exitInst(InstContext ctx) {
   String s = getValue(ctx.getChild(0));
   setValue(ctx, s);
   int a = ctx.getStart().getTokenIndex();
   List<Token> tt = tokens.getHiddenTokensToLeft(a, 1);
   List<Token> ttnl = tokens.getHiddenTokensToLeft(a, 2);
   String ttt = "";
   if (ttnl != null && ttnl.size() > 1) ttt = "\n\n";
   if (tt != null) {
     for (Token t : tt) {
       ttt = ttt + t.getText();
       // System.out.println(t.getType() + " - " + t.getChannel());
     }
     // System.out.println(ttt);
   }
   setValue(ctx, ttt + getValue(ctx));
 }
  private void getJavaDocMatch() {
    // TODO Auto-generated method stub

    try {
      matchedindex = new HashMap<Integer, String>();
      // Need to modify regex Pattern as StackOverFlow Error
      String regex = "/\\*\\*([^\\*]|\\*(?!/))*?.*?\\*/";
      Pattern pattern = Pattern.compile(regex);
      Matcher matcher = pattern.matcher(tokens.getText());

      // System.out.println(matcher.matches());
      if (tokens.getText() != null) {
        while (matcher.find()) { // find the next match

          if (LogUtil.isDebugEnabled(LOG_NAME)) {
            // System.out.println("(matcher.group()==>"+(matcher.group()));
            LogUtil.debug(CLASS_NAME, "Pattern==>", " " + matcher.group(), LOG_NAME);
          }
          for (String searchKeyword : searchPatterns) {
            if (searchKeyword != null) {
              if (matcher.group().contains(searchKeyword)) {
                /*
                 * System.out.println(
                 * "Keyword matched in Javadoc ==>" +
                 * matcher.group() + "\" starting at index " +
                 * matcher.start() + " and ending at index " +
                 * matcher.end());
                 */
                matchedindex.put(matcher.end(), matcher.group());
                break;
              }
            }
          }
        }
      }
    } catch (Exception ex) {
      ex.printStackTrace();
      System.out.println(ex.toString() + "");
      if (LogUtil.isDebugEnabled(LOG_NAME)) {
        // System.out.println("Javadoc exception==>" + ex.toString());
        LogUtil.debug(CLASS_NAME, "Pattern==>", " " + ex.getStackTrace(), LOG_NAME);
      }
    }
  }
  @Override
  public void enterStatement(StatementContext ctx) {
    if (patternMatchedInMethod) {
      boolean isIfStmt = (ctx.getText().indexOf("if") == 0);

      for (String searchKeyword : searchPatterns) {

        if (patternMatchFlagsForMethod.get(searchKeyword) != null) {

          if (patternMatchFlagsForMethod.get(searchKeyword).booleanValue()) {

            if (isIfStmt) {

              conditionText.append("From statement handler" + "\n");
              conditionText.append("Line no==>" + ctx.start.getLine() + "\n");
              conditionText.append(
                  rewriter
                          .getText()
                          .substring(ctx.start.getStartIndex(), ctx.stop.getStopIndex() + 1)
                      + "\n");

              String actualPropertyValue = "";
              if (messageMap != null && messageMap.get(searchKeyword) != null) {
                actualPropertyValue = " [" + messageMap.get(searchKeyword) + "] ";
              }

              CodePart lastMatchingCodePart = lastMatchingIfForPattern.get(searchKeyword);

              if (lastMatchingCodePart != null) {

                if (lastMatchingCodePart.getBlockText().indexOf(ctx.getText()) == -1) {
                  if (lastMatchingCodePart.isElseIf()) {
                    List<CodePart> allMatchingIfStmts =
                        allMatchingIfStmtsForPattern.get(searchKeyword);
                    int length = allMatchingIfStmts.size();
                    for (int j = length - 1; j >= 0; j--) {
                      if (allMatchingIfStmts
                              .get(j)
                              .getBlockText()
                              .indexOf(lastMatchingCodePart.getBlockText())
                          > 0) {
                        patternText.append("MATCHING IFELSEIF START: " + searchKeyword + "\n");
                        if (actClassName != null && actMethodName != null) {
                          patternText.append("\nClass name==>" + actClassName + "\n");
                          patternText.append("Method name==>" + actMethodName + "\n");
                        }
                        System.out.println("MATCHING IF : " + searchKeyword + "\n");
                        // System.out.println(ifConditionList.get(j));

                        CommonUtils.addValueToTargetMap(
                            ruleID, allMatchingIfStmts.get(j), nearestMatchingIfsForPattern);

                        patternText.append(
                            "Line Number==>"
                                + tokens.get(allMatchingIfStmts.get(j).getStartIndex()).getLine()
                                + "\n");
                        System.out.println(
                            "Line Number==>"
                                + tokens.get(allMatchingIfStmts.get(j).getStartIndex()).getLine()
                                + "\n");

                        patternText.append(
                            tokens.getText(
                                    tokens.get(allMatchingIfStmts.get(j).getStartIndex()),
                                    tokens.get(allMatchingIfStmts.get(j).getEndIndex()))
                                + "\n");
                        System.out.println(
                            tokens.getText(
                                    tokens.get(allMatchingIfStmts.get(j).getStartIndex()),
                                    tokens.get(allMatchingIfStmts.get(j).getEndIndex()))
                                + "\n");
                        patternText.append("MATCHING IF END: " + searchKeyword + "\n");
                        break;
                      }
                    }

                  } else {

                    patternText.append("MATCHING IF START: " + searchKeyword + "\n");

                    CommonUtils.addValueToTargetMap(
                        ruleID, lastMatchingCodePart, nearestMatchingIfsForPattern);
                    if (actClassName != null && actMethodName != null) {
                      patternText.append("\nClass name==>" + actClassName + "\n");
                      patternText.append("Method name==>" + actMethodName + "\n");
                    }
                    System.out.println("MATCHING IF : " + searchKeyword + "\n");

                    patternText.append(
                        "Line Number==>"
                            + tokens.get(lastMatchingCodePart.getStartIndex()).getLine()
                            + "\n");

                    System.out.println(
                        "Line Number==>"
                            + tokens.get(lastMatchingCodePart.getStartIndex()).getLine()
                            + "\n");

                    patternText.append(
                        tokens.getText(
                                tokens.get(lastMatchingCodePart.getStartIndex()),
                                tokens.get(lastMatchingCodePart.getEndIndex()))
                            + "\n");

                    System.out.println(
                        tokens.getText(
                                tokens.get(lastMatchingCodePart.getStartIndex()),
                                tokens.get(lastMatchingCodePart.getEndIndex()))
                            + "\n");

                    patternText.append("MATCHING IF END: " + searchKeyword + "\n");
                  }
                  lastMatchingIfForPattern.put(searchKeyword, null);
                }
              }

              if (searchKeyword != null) {
                String keywordWOQuote = Pattern.quote(searchKeyword);
                pattern = Pattern.compile(keywordWOQuote, Pattern.CASE_INSENSITIVE);
                if (pattern.matcher(ctx.getText()).find()) {

                  CodePart codePart = null;
                  // We need to check for else closer to if
                  // condition
                  // TODO ( Last 3 tokens generally
                  // matches..Need to double check this )
                  StringBuffer strBufferToChkforElseIf = new StringBuffer();
                  for (int i = 3; i >= 1; i--) {
                    strBufferToChkforElseIf.append(
                        tokens.get(ctx.start.getTokenIndex() - i).getText());
                  }
                  String elseIfChkStr = strBufferToChkforElseIf.toString().trim();
                  System.out.println("elseIfChkStr-->" + elseIfChkStr);

                  codePart =
                      new CodePart(
                          ctx.start.getTokenIndex(),
                          ctx.stop.getTokenIndex(),
                          ctx.getText(),
                          false,
                          ctx.start.getLine());
                  codePart.setReadableText(tokens.getText(ctx));

                  if (elseIfChkStr.equals("else")) {

                    codePart.setElseIf(true);
                  } else {
                    CommonUtils.addValueToTargetMap(
                        searchKeyword, codePart, allMatchingIfStmtsForPattern);
                  }

                  lastMatchingIfForPattern.put(searchKeyword, codePart);
                }
              }
            } else {

              if (searchKeyword != null) {
                CodePart lastMatchingCodePart = lastMatchingIfForPattern.get(searchKeyword);

                if (lastMatchingCodePart != null
                    && lastMatchingCodePart.getBlockText().indexOf(ctx.getText()) == -1) {

                  patternText.append("MATCHING LAST IF START: " + searchKeyword + "\n");

                  CommonUtils.addValueToTargetMap(
                      ruleID, lastMatchingCodePart, nearestMatchingIfsForPattern);
                  if (actClassName != null && actMethodName != null) {
                    patternText.append("\nClass name==>" + actClassName + "\n");
                    patternText.append("Method name==>" + actMethodName + "\n");
                  }
                  System.out.println("MATCHING IF : " + searchKeyword + "\n");

                  patternText.append(
                      "Line Number==>"
                          + tokens.get(lastMatchingCodePart.getStartIndex()).getLine()
                          + "\n");

                  System.out.println(
                      "Line Number==>"
                          + tokens.get(lastMatchingCodePart.getStartIndex()).getLine()
                          + "\n");

                  patternText.append(
                      tokens.getText(
                              tokens.get(lastMatchingCodePart.getStartIndex()),
                              tokens.get(lastMatchingCodePart.getEndIndex()))
                          + "\n");

                  System.out.println(
                      tokens.getText(
                              tokens.get(lastMatchingCodePart.getStartIndex()),
                              tokens.get(lastMatchingCodePart.getEndIndex()))
                          + "\n");

                  patternText.append("MATCHING IF END: " + searchKeyword + "\n");

                  lastMatchingIfForPattern.put(searchKeyword, null);
                }
              }
            }
          }
        }
      }
    }
  }