protected virtual void Dispose(bool disposing)
 {
     if (!disposedValue)
     {
         if (disposing)
         {
         }
         scriptProvider = null;
         disposedValue  = true;
     }
 }
        public TScript CreateScript()
        {
            var localTargetVersion = targetVersion;

            if (currentVersion < localTargetVersion)
            {
                currentVersion = localTargetVersion;
                scriptProvider = LoadScript();
            }
            return(scriptProvider.CreateScript());
        }