5:19:30beachYesterday, at the end of the day, I finally started to understand the latest failure in replacing bootstrapping-specific code with production SICL code.
5:20:09beachThe problem was there all along, but the bootstrapping-specific code managed to hide it.
5:21:06beachAt some point, when I load definitions of MOP classes, I create writer methods on writer generic function for the slots with an :accessor option.
5:21:41beachThe first element on the list of specializers for such a method is typically the class named T.
5:22:10beachBut I do a FIND-CLASS of the class T in the wrong environment.
5:22:51beachSo it is not a class of the type that is required for that particular phase in the bootstrapping procedure.
5:23:29beachThis problem shows up MUCH later in the bootstrapping procedure, which is why it was so hard to find.
5:24:09beachIt shows up because, when I use production SICL code, I invalidate the discriminating function when I add a new method that alters the specializer profile.
5:24:34beachSo when the generic function is invoked, a new discriminating function has to be computed.
5:25:16beachSo COMPUTE-APPLICABLE-METHODS-USING-CLASSES is called.
5:25:28beachAnd that's when the mistake is discovered.
5:26:41beachIn the bootstrapping-specific version, the discriminating function is not recomputed, so the error is hidden.