@Override
  public void visitForStatement(@NotNull PsiForStatement statement) {
    final PsiForStatement other = (PsiForStatement)myMatchingVisitor.getElement();

    final PsiStatement initialization = statement.getInitialization();
    if (!myMatchingVisitor.setResult(initialization == null || initialization instanceof PsiEmptyStatement
                                     ? myMatchingVisitor.isLeftLooseMatching()
                                     : myMatchingVisitor.matchSequentially(getIterator(initialization),
                                                                           getIterator(other.getInitialization())))) {
      return;
    }
    if (!myMatchingVisitor.setResult(myMatchingVisitor.matchOptionally(statement.getCondition(), other.getCondition()))) {
      return;
    }
    final PsiStatement update = statement.getUpdate();
    if (!myMatchingVisitor.setResult(update == null
                                     ? myMatchingVisitor.isLeftLooseMatching()
                                     : myMatchingVisitor.matchSequentially(getIterator(update), getIterator(other.getUpdate())))) {
      return;
    }
    myMatchingVisitor.setResult(matchBody(statement.getBody(), other.getBody()));
  }
@Override
  public void visitForStatement(@NotNull PsiForStatement statement)