CompileElement constructor
      
      CompileElement(
    
    
- CompileElement? parent,
- CompileView? view,
- int? nodeIndex,
- NodeReference renderNode,
- TemplateAst? sourceAst,
- CompileDirectiveMetadata? component,
- List<CompileDirectiveMetadata> _directives,
- List<ProviderAst> _resolvedProvidersArray,
- bool hasViewContainer,
- bool hasEmbeddedView,
- List<ReferenceAst> references, {
- Expression? componentView,
- bool hasTemplateRefQuery = false,
- bool isHtmlElement = false,
Implementation
CompileElement(
  super.parent,
  super.view,
  super.nodeIndex,
  super.renderNode,
  this.sourceAst,
  this.component,
  this._directives,
  this._resolvedProvidersArray,
  this.hasViewContainer,
  this.hasEmbeddedView,
  List<ReferenceAst> references, {
  this.componentView,
  this.hasTemplateRefQuery = false,
  this.isHtmlElement = false,
}) {
  _providers = ProviderResolver(this, parent?._providers);
  if (references.isNotEmpty) {
    for (final reference in references) {
      final token = reference.value;
      referenceTokens[reference.name] = token;
      _publishesTemplateRef = _publishesTemplateRef ||
          token != null && token.equalsTo(Identifiers.TemplateRefToken);
    }
  }
  // Create new ElementRef(_el_#) expression and provide as instance.
  elementRef = o
      .importExpr(Identifiers.ElementRef)
      .instantiate([renderNode.toReadExpr()]);
  _providers.add(Identifiers.ElementRefToken, elementRef);
  _providers.add(Identifiers.ElementToken, renderNode.toReadExpr());
  _providers.add(Identifiers.HtmlElementToken, renderNode.toReadExpr());
  var readInjectorExpr =
      o.InvokeMemberMethodExpr('injector', [o.literal(nodeIndex)]);
  _providers.add(Identifiers.InjectorToken, readInjectorExpr);
  if (hasViewContainer || hasEmbeddedView) {
    appViewContainer = view!.createViewContainer(
      renderNode,
      nodeIndex!,
      !hasViewContainer,
      isRootElement ? null : parent!.nodeIndex,
    );
    _providers.add(Identifiers.ViewContainerToken, appViewContainer!);
  }
  // This logic was copied from the setter for `componentView`, which was
  // removed when `componentView` was made final (as there was no need for it
  // to ever be reassigned).
  if (componentView != null) {
    final indexCount = component!.template!.ngContentSelectors.length;
    for (var i = 0; i < indexCount; i++) {
      contentNodesByNgContentIndex.add([]);
    }
  }
}