code: public boolean parseTypeTransformation() {
      Config config =
          Config.builder()
              .setLanguageMode(Config.LanguageMode.ECMASCRIPT6)
              .setStrictMode(Config.StrictMode.SLOPPY)
              .build();
      // TODO(lpino): ParserRunner reports errors if the expression is not
      // ES6 valid. We need to abort the validation of the type transformation
      // whenever an error is reported.
      ParseResult result = ParserRunner.parse(
          sourceFile, typeTransformationString, config, errorReporter);
      Node ast = result.ast;
      // Check that the expression is a script with an expression result
      if (!ast.isScript() || !ast.getFirstChild().isExprResult()) {
        warnInvalidExpression("type transformation", ast);
        return false;
      }
  
      Node expr = ast.getFirstFirstChild();
      // The AST of the type transformation must correspond to a valid expression
      if (!validTypeTransformationExpression(expr)) {
        // No need to add a new warning because the validation does it
        return false;
      }
      fixLineNumbers(expr);
      // Store the result if the AST is valid
      typeTransformationAst = expr;
      return true;
    }
docs: Takes a type transformation expression, transforms it to an AST using
  the ParserRunner of the JSCompiler and then verifies that it is a valid
  AST.
  @return true if the parsing was successful otherwise it returns false and
  at least one warning is reported