public static bool AddInterpreter(ScriptInterpreter interpreter)
 {
     lock (InterpLock)
     {
         bool changed = false;
         if (!Interpreters.Contains(interpreter))
         {
             NewInterpTypes = true;
             changed        = true;
             Interpreters.Add(interpreter);
             Type interpreterGetType = interpreter.GetType();
             LoadedInterpTypes.Add(interpreterGetType);
             ScannedInterpTypes.Remove(interpreterGetType);
             var types = CopyOf(LoadedTypes);
             foreach (var type in types)
             {
                 try
                 {
                     interpreter.InternType(type);
                 }
                 catch (Exception e)
                 {
                     WriteLine("LoadedTypes InternType: {0} {1} {2} ", interpreter.GetType().Name, type, e);
                 }
             }
             var types2 = CopyOf(ScannedTypes);
             foreach (var type in types2)
             {
                 try
                 {
                     interpreter.InternType(type);
                 }
                 catch (Exception e)
                 {
                     WriteLine("ScannedTypes InternType: {0} {1} {2} ", interpreter.GetType().Name, type, e);
                 }
             }
             NewInterpTypes = false;
         }
         return(changed);
     }
 }