code: public final JsExpr assertExpr() {
      RequiresCollector.IntoImmutableSet collector = new RequiresCollector.IntoImmutableSet();
      JsExpr expr = assertExprAndCollectRequires(collector);
      ImmutableSet<GoogRequire> requires = collector.get();
      if (!requires.isEmpty()) {
        throw new IllegalStateException("calling assertExpr() would drop requires!: " + requires);
      }
      return expr;
    }
docs: Temporary method to ease migration to the CodeChunk DSL.
  
  <p>Because of the recursive nature of the JS codegen system, it is generally not possible to
  convert one codegen method at a time to use the CodeChunk DSL. However, the business logic
  inside those methods can be migrated incrementally. Methods that do not yet use the CodeChunk
  DSL can "unwrap" inputs using this method and "wrap" results using {@link
  CodeChunk#fromExpr(JsExpr)}. This is safe as long as each CodeChunk generated for production
  code is {@link Expression#isRepresentableAsSingleExpression}.
  
  <p>TODO(b/32224284): remove.