diff --git a/lib/master.pike.in b/lib/master.pike.in
index f45c64ea3dc90d200c0853446bdd143c5c1746fa..6edf85f4132dc32e3191f671f4f498f7a66eac1e 100644
--- a/lib/master.pike.in
+++ b/lib/master.pike.in
@@ -1,6 +1,6 @@
 /* -*- Pike -*-
  *	
- * $Id: master.pike.in,v 1.117 2000/05/07 00:39:52 hubbe Exp $
+ * $Id: master.pike.in,v 1.118 2000/05/11 04:30:25 mast Exp $
  * 
  * Master-file for Pike.
  *
@@ -588,6 +588,7 @@ object cast_to_object(string oname, string current_file)
 
 class dirnode
 {
+  constant is_resolv_dirnode = 1;
   string dirname;
   mixed module=module_checker();
   mapping(string:mixed) cache=([]);
@@ -710,6 +711,7 @@ static class ZERO_TYPE {};
 
 class joinnode
 {
+  constant is_resolv_joinnode = 1;
   array(object|mapping) joined_modules;
   mapping(string:mixed) cache=([]);
 
@@ -727,7 +729,8 @@ class joinnode
       if (!zero_type(ret = o[index])) 
       {
 	if (objectp(ret = o[index]) &&
-	    (< joinnode, dirnode >)[object_program(ret)]) 
+	    (object_program(ret)->is_resolv_dirnode ||
+	     object_program(ret)->is_resolv_joinnode))
         {
 	  // Only join directorynodes (or joinnodes).
 	  res += ({ ret });
@@ -845,7 +848,8 @@ mixed resolv_base(string identifier, string|void current_file)
     string file=combine_path(path,identifier);
     if(mixed ret=findmodule(file)) {
       if ((objectp(ret)) &&
-	  (< joinnode, dirnode >)[object_program(ret)]) {
+	  (object_program(ret)->is_resolv_dirnode ||
+	   object_program(ret)->is_resolv_joinnode)) {
 	if (mixed new_ret = ret->_module_value) {
 	  ret = new_ret;
 	}