private boolean parseAsyncStatement(boolean falseAsync) {
    if (!falseAsync) {
      assertCurrentToken(PyTokenTypes.ASYNC_KEYWORD);
    }
    final SyntaxTreeBuilder.Marker marker = myBuilder.mark();

    advanceAsync(falseAsync);

    final IElementType token = myBuilder.getTokenType();
    if (token == PyTokenTypes.DEF_KEYWORD) {
      getFunctionParser().parseFunctionDeclaration(marker, true);
      return true;
    }
    else if (token == PyTokenTypes.WITH_KEYWORD) {
      parseWithStatement(marker);
      return true;
    }
    else if (token == PyTokenTypes.FOR_KEYWORD) {
      parseForStatement(marker);
      return true;
    }
    else {
      if (falseAsync) {
        marker.rollbackTo();
      }
      else {
        marker.drop();
        myBuilder.error(PyParsingBundle.message("def.or.with.or.for.expected"));
      }
      return false;
    }
  }
private boolean parseAsyncStatement(boolean falseAsync)