if (origin instanceof PrototypeFrame) {  return null; }
    Object getValue(Frame origin, String slot_name)    {	// Look for a dynamically set default first.	Object slot_value = dynamic_values.get(slot_name);	if (slot_value != null) return slot_value;	Attributes attrs = (Attributes) slots.get(slot_name);	if (attrs != null) {	    // Declared at this level -- either get a real value or	    // complain and return null.	    Object result = null;	    String value = attrs.getValue("default-value");	    String warnp = attrs.getValue("warn");	    String path_name = attrs.getValue("path");	    if (value != null) {		result = value;	    } else if (path_name != null) {		Path path;		synchronized (path_cache) {		    path = (Path) path_cache.get(path_name);		    if (path == null) {			path = getFrameSet().findPath(path_name);			path_cache.put(path_name, path);		    }		}		result = path.getValue((DataFrame) origin, slot_name);	    } else  if (warnp == null || warnp.equalsIgnoreCase("true")) {		if (log.isWarnEnabled())		    log.warn("Slot " +slot_name+ " is required by prototype "			     +prototype_name+ 			     " but was never provided in frame "			     +origin);	    }	    return result;	} else {	    // Not owned by us, check super	    return getInheritedValue(origin, slot_name);	}    }