public IEnumerable<string> DeclareBaseImpl(
     PseudoArrayValHLSL val,
     string prefix,
     string semantic,
     string suffix)
 {
     return DeclareBase(
         val.InnerVal,
         prefix,
         semantic,
         suffix);
 }
 private void AssignImpl(
     PseudoArrayValHLSL dest,
     PseudoArrayValHLSL src,
     Span span)
 {
     Assign(
         dest.InnerVal,
         src.InnerVal,
         span);
 }
 public void DeclareAndInitLocalImpl(
     PseudoArrayValHLSL local,
     PseudoArrayValHLSL init,
     Span span)
 {
     DeclareAndInitLocal(
         local.InnerVal,
         init.InnerVal,
         span);
 }
 public EmitValHLSL GetElemImpl(
     PseudoArrayValHLSL obj,
     EmitValHLSL idx)
 {
     return GetElem(
         obj.InnerVal,
         idx);
 }