/// <summary>
 /// Initialize after entering VT.
 /// </summary>
 /// <param name="icelc"></param>
 void IRequireEnterLeave.Enter(IChartEnterLeaveContext icelc)
 {
     EnsureAxes(icelc as IChartComponentContext);
     EnsureValuePath(icelc as IChartComponentContext);
     Layer = icelc.CreateLayer();
     _trace.Verbose($"{Name} enter c2(v):{CategoryAxis2Name} {CategoryAxis2} c1:{CategoryAxisName} {CategoryAxis1} d:{DataSourceName}");
     if (PathTemplate == null)
     {
         if (Theme?.PathTemplate == null)
         {
             if (icelc is IChartErrorInfo icei)
             {
                 icei.Report(new ChartValidationResult(NameOrType(), $"No {nameof(PathTemplate)} and {nameof(Theme.PathTemplate)} was not found", new[] { nameof(PathTemplate), nameof(Theme.PathTemplate) }));
             }
         }
     }
     AssignFromRef(icelc as IChartErrorInfo, NameOrType(), nameof(PathStyle), nameof(Theme.PathColumnSeries),
                   PathStyle == null, Theme != null, Theme.PathColumnSeries != null,
                   () => PathStyle = Theme.PathColumnSeries
                   );
     BindPaths = new Evaluators2(CategoryPath, Category2Path, ValuePath, ValueLabelPath);
     if (!BindPaths.IsValid)
     {
         if (icelc is IChartErrorInfo icei)
         {
             icei.Report(new ChartValidationResult(NameOrType(), $"ValuePath: must be specified", new[] { nameof(ValuePath) }));
         }
     }
 }
            /// <summary>
            /// Ctor.
            /// </summary>
            /// <param name="state">Starting state; SHOULD be empty.</param>
            /// <param name="rc">The recycler.</param>
            /// <param name="evs">Evaluators.</param>
            internal RenderState_Heatmap(List <SIS> state, Recycler <EL, SIS> rc, Evaluators2 evs) : base(state, rc)
            {
#pragma warning disable IDE0016 // Use 'throw' expression
                if (evs == null)
                {
                    throw new ArgumentNullException(nameof(evs));
                }
                if (evs.by == null)
                {
                    throw new ArgumentNullException(nameof(evs.by));
                }
#pragma warning restore IDE0016 // Use 'throw' expression
                this.evs = evs;
            }