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); } }