code: public List<Statement> sourceElements() {
          List<Statement> statements = new ArrayList<>();
          while (la() != EOF && la() != RIGHT_BRACE) {
              Statement element = sourceElement();
              if (currentContext().isInProlog()) {
                  if (element instanceof ExpressionStatement) {
                      Expression expr = ((ExpressionStatement) element).getExpr();
                      if (expr instanceof StringLiteralExpression) {
                          if (((StringLiteralExpression) expr).getLiteral().equals("use strict")) {
                              if (!((StringLiteralExpression) expr).isContinuedLine() && !((StringLiteralExpression) expr).isEscaped()) {
                                  currentContext().setStrict(true);
                              }
                          }
                      } else {
                          currentContext().setInProlog(false);
                      }
                  } else {
                      currentContext().setInProlog(false);
                  }
              }
              statements.add(element);
          }
          return statements;
      }
docs: ----------------------------------------------------------------------