docs: private Statement renderCallNode(
        Label parametersReattachPoint, CallNode node, Expression calleeExpression) {
      Statement initAppendable = Statement.NULL_STATEMENT;
      Statement clearAppendable = Statement.NULL_STATEMENT;
      Expression appendable;
      FieldRef currentCalleeField = variables.getCurrentCalleeField();
      // TODO(lukes): for CallBasicNodes, we could take advantage of the ShortCircuitable interface to
      // statically remove directives based on the callee kind.  Note, we can't do this for
      // CallDelegateNodes because there is no guarantee that we can tell what the kind is.
      if (!areAllPrintDirectivesStreamable(node)) {
        calleeExpression =
            MethodRef.RUNTIME_APPLY_ESCAPERS.invoke(
                calleeExpression, getEscapingDirectivesList(node));
        appendable = appendableExpression;
      } else {
        AppendableAndOptions wrappedAppendable =
            applyStreamingEscapingDirectives(
                node.getEscapingDirectives(),
                appendableExpression,
                parameterLookup.getRenderContext(),
                variables);
        FieldRef currentAppendableField = variables.getCurrentAppendable();
        initAppendable =
            currentAppendableField.putInstanceField(thisVar, wrappedAppendable.appendable());
        appendable = currentAppendableField.accessor(thisVar);
        clearAppendable =
            currentAppendableField.putInstanceField(
                thisVar, constantNull(LOGGING_ADVISING_APPENDABLE_TYPE));
        if (wrappedAppendable.closeable()) {
          // make sure to call close before clearing
          clearAppendable =
              Statement.concat(
                  // We need to cast because the static type of the field is just plain old
                  // LoggingAdvisingAppendable
                  currentAppendableField
                      .accessor(thisVar)
                      .checkedCast(BytecodeUtils.CLOSEABLE_TYPE)
                      .invokeVoid(MethodRef.CLOSEABLE_CLOSE),
                  clearAppendable);
        }
      }
      Statement initCallee =
          currentCalleeField
              .putInstanceField(thisVar, calleeExpression)
              .labelStart(parametersReattachPoint);
      Expression callRender =
          currentCalleeField
              .accessor(thisVar)
              .invoke(
                  MethodRef.COMPILED_TEMPLATE_RENDER, appendable, parameterLookup.getRenderContext());
      Statement callCallee = detachState.detachForCall(callRender);
      Statement clearCallee =
          currentCalleeField.putInstanceField(
              thisVar, BytecodeUtils.constantNull(COMPILED_TEMPLATE_TYPE));
      return Statement.concat(initAppendable, initCallee, callCallee, clearCallee, clearAppendable);
    }