diff --git a/scripts/external-tests.pd b/scripts/external-tests.pd
index fc4d23392e61eb011eee0d0e731050196935915d..b9c6b358ef69ce5d4bd92e98905e63944068a4d5 100644
--- a/scripts/external-tests.pd
+++ b/scripts/external-tests.pd
@@ -1,4 +1,4 @@
-#N canvas 162 25 751 671 12;
+#N canvas 104 25 751 671 12;
 #X msg 513 70 bang;
 #N canvas 273 114 533 496 get_extensions 0;
 #X obj 17 44 inlet;
@@ -176,7 +176,7 @@
 #X obj 77 285 t a b a b;
 #N canvas 443 86 450 557 get-creator-names 0;
 #X obj 41 22 inlet;
-#X obj 51 316 outlet;
+#X obj 51 356 outlet;
 #X obj 141 54 r \$0-last-objectmaker-methodspace-length;
 #X obj 100 167 -;
 #X obj 41 107 classinfo objectmaker;
@@ -187,6 +187,9 @@
 #X obj 51 284 classinfo objectmaker;
 #X obj 151 181 t a;
 #X obj 41 47 bang;
+#X obj 51 309 t a a;
+#X obj 140 355 print testing;
+#X msg 123 329 \$1;
 #X connect 0 0 11 0;
 #X connect 2 0 3 1;
 #X connect 2 0 10 0;
@@ -197,11 +200,14 @@
 #X connect 7 0 8 0;
 #X connect 7 0 9 0;
 #X connect 8 0 7 1;
-#X connect 9 0 1 0;
+#X connect 9 0 12 0;
 #X connect 10 0 7 1;
 #X connect 11 0 5 0;
+#X connect 12 0 1 0;
+#X connect 12 1 14 0;
+#X connect 14 0 13 0;
 #X restore 77 686 pd get-creator-names;
-#N canvas 227 231 450 346 test-object 0;
+#N canvas 228 256 450 346 test-object 0;
 #X obj 86 36 inlet;
 #X text 132 34 creator_name argtype1 argtype2 etc.;
 #N canvas 150 78 649 452 right_outlet_for_aliases 0;
@@ -241,7 +247,7 @@ test(s) by going to the right outlet.;
 #X connect 14 0 10 0;
 #X connect 15 0 11 0;
 #X restore 86 61 pd right_outlet_for_aliases;
-#N canvas 181 94 522 576 namespace_collisions 0;
+#N canvas 182 119 522 576 namespace_collisions 0;
 #X obj 40 15 inlet;
 #X obj 60 98 list split 1;
 #X obj 60 123 t b a;
@@ -267,6 +273,7 @@ test(s) by going to the right outlet.;
 #X msg 70 431 \$1: externdir mismatch: expected \$2 but got \$3;
 #X obj 180 143 pack s s;
 #X obj 40 489 list;
+#X obj 259 278 print externdir;
 #X connect 0 0 11 0;
 #X connect 1 0 2 0;
 #X connect 2 0 3 0;
@@ -279,6 +286,7 @@ test(s) by going to the right outlet.;
 #X connect 8 0 10 1;
 #X connect 8 0 19 1;
 #X connect 9 0 21 0;
+#X connect 9 0 25 0;
 #X connect 10 0 12 0;
 #X connect 10 1 13 0;
 #X connect 11 0 15 0;
@@ -298,8 +306,8 @@ test(s) by going to the right outlet.;
 #X connect 22 0 18 0;
 #X connect 23 0 8 0;
 #X connect 24 0 17 0;
-#X restore 86 101 pd namespace_collisions;
-#N canvas 104 25 740 671 load_the_object 0;
+#X restore 17 308 pd namespace_collisions;
+#N canvas 3 25 740 694 load_the_object 0;
 #X obj 22 13 inlet;
 #X obj 86 115 list split 1;
 #N canvas 238 121 613 490 set_args 0;
@@ -475,18 +483,109 @@ may be other oddities in external libs with regard to libdir prefixes.
 #X connect 26 0 21 0;
 #X connect 26 1 1 0;
 #X restore 86 156 pd load_the_object;
-#X obj 272 101 t a;
 #N canvas 268 243 450 346 \$0-load_the_object_subpatch 0;
 #X restore 231 157 pd \$0-load_the_object_subpatch;
 #X msg 86 241 clear;
 #X obj 86 266 s pd-\$0-load_the_object_subpatch;
-#X connect 0 0 2 0;
-#X connect 2 0 3 0;
-#X connect 2 1 5 0;
+#N canvas 99 25 704 622 check_for_namespace_collisions 0;
+#X obj 42 26 inlet;
+#X obj 42 51 t a a;
+#X obj 74 83 list split 1;
+#X obj 74 215 f;
+#X obj 114 215 + 1;
+#X obj 74 149 until;
+#X obj 74 283 classinfo objectmaker;
+#X obj 74 321 route bang;
+#X obj 9 182 bang;
+#X obj 141 385 select;
+#X obj 141 349 list split 1;
+#X obj 74 108 trigger bang bang anything;
+#X obj 163 149 f 0;
+#N canvas 337 184 583 424 fail 0;
+#X obj 106 16 inlet;
+#X obj 334 56 r \$0-current-libdir-name;
+#X obj 243 56 r \$0-libdir;
+#X obj 204 101 symbol;
+#X obj 270 100 symbol;
+#X msg 204 161 symbol \$1/extra/\$2;
+#X obj 204 136 pack s s;
+#X obj 106 41 t a a b b;
+#X obj 106 293 s \$0-fail;
+#X obj 106 66 unpack f s;
+#X obj 106 213 pack f s s s;
+#X msg 106 248 \$3: \$2: externdir mismatch: expected \$4 but found
+another objectmaker method at index \$1;
+#X connect 0 0 7 0;
+#X connect 1 0 4 1;
+#X connect 2 0 3 1;
+#X connect 2 0 10 2;
+#X connect 3 0 6 0;
+#X connect 4 0 6 1;
+#X connect 5 0 10 3;
+#X connect 6 0 5 0;
+#X connect 7 0 9 0;
+#X connect 7 2 3 0;
+#X connect 7 3 4 0;
+#X connect 9 0 10 0;
+#X connect 9 1 10 1;
+#X connect 10 0 11 0;
+#X connect 11 0 8 0;
+#X restore 141 590 pd fail;
+#X obj 163 174 trigger anything anything;
+#X obj 141 420 f;
+#X obj 181 420 + 1;
+#X obj 74 250 trigger anything anything;
+#X obj 141 445 select 1 0;
+#X obj 228 476 f;
+#X obj 141 504 f;
+#X obj 38 568 outlet;
+#X obj 141 560 pack f s;
+#X obj 344 337 r \$0-last-objectmaker-methodspace-length;
+#X obj 141 532 moses;
+#X text 264 475 Many libraries ship with backup abstractions that have
+the same name as the binary library. We check for those here-- if the
+nameclash is in the current library we're testing then we ignore it.
+;
+#X connect 0 0 1 0;
+#X connect 1 0 21 0;
+#X connect 1 1 2 0;
+#X connect 2 0 11 0;
 #X connect 3 0 4 0;
-#X connect 4 0 7 0;
-#X connect 5 0 4 0;
+#X connect 3 0 17 0;
+#X connect 4 0 3 1;
+#X connect 5 0 3 0;
+#X connect 6 0 7 0;
 #X connect 7 0 8 0;
+#X connect 7 1 10 0;
+#X connect 8 0 5 1;
+#X connect 9 0 15 0;
+#X connect 10 0 9 0;
+#X connect 11 0 5 0;
+#X connect 11 1 12 0;
+#X connect 11 2 9 1;
+#X connect 11 2 22 1;
+#X connect 12 0 14 0;
+#X connect 14 0 3 1;
+#X connect 14 1 15 1;
+#X connect 15 0 16 0;
+#X connect 15 0 18 0;
+#X connect 16 0 15 1;
+#X connect 17 0 6 0;
+#X connect 17 1 19 1;
+#X connect 18 0 20 0;
+#X connect 18 1 19 0;
+#X connect 19 0 20 1;
+#X connect 20 0 24 0;
+#X connect 22 0 13 0;
+#X connect 23 0 24 1;
+#X connect 24 0 22 0;
+#X restore 86 104 pd check_for_namespace_collisions;
+#X connect 0 0 2 0;
+#X connect 2 0 8 0;
+#X connect 2 1 8 0;
+#X connect 4 0 6 0;
+#X connect 6 0 7 0;
+#X connect 8 0 4 0;
 #X restore 77 716 pd test-object;
 #X obj 249 340 classinfo objectmaker;
 #X msg 249 315 methods;
@@ -501,7 +600,7 @@ may be other oddities in external libs with regard to libdir prefixes.
 #X obj 102 163 f;
 #X obj 102 188 + 1;
 #X msg 274 263 set;
-#X msg 66 307 \$1 \,;
+#X msg 66 307 \$1 \, \$2 \,;
 #X obj 66 263 list;
 #X msg 102 263 adddollar \$1 \, addcomma;
 #X msg 150 126 0;
@@ -735,6 +834,7 @@ pmpd purepd rjlib rradical rtc sfruit sigmund~ stdout timestretch windowing
 #X connect 5 0 1 0;
 #X restore 57 164 pd libs_not_loaded_by_default;
 #X text 269 163 <- two libraries to go: tof and iem_tab;
+#X obj 476 290 print next_library;
 #X connect 0 0 2 0;
 #X connect 1 0 4 0;
 #X connect 2 0 14 0;
@@ -767,6 +867,7 @@ pmpd purepd rjlib rradical rtc sfruit sigmund~ stdout timestretch windowing
 #X connect 36 0 19 0;
 #X connect 36 1 35 0;
 #X connect 36 1 37 0;
+#X connect 36 1 43 0;
 #X connect 37 0 38 0;
 #X connect 38 0 31 0;
 #X connect 39 0 28 0;