private void process(Properties p, URL url) {
   for (Entry<Object, Object> entry : p.entrySet()) {
     String key = (String) entry.getKey();
     String value = (String) entry.getValue();
     if ("scan-package".equals(value)) {
       if (!scanPackageSet.add(key)) {
         throw new RuntimeException(
             "'scan-package' mechanism is used to scan the same package twice : '" + key + "'");
       }
     } else if ("delegate".equals(value)) {
       delegateList.add(key);
     } else if ("remove-method".equals(value)) {
       processRemoveMethod(key, url);
     } else if ("substitute-class".equals(value)) {
       processSubstituteClass(key, url);
     } else if ("class-modifier".equals(value)) {
       processClassModifier(key, url);
     } else if ("module-file".equals(value)) {
       processModuleFile(key, url);
     } else {
       throw new RuntimeException(
           "Error in '" + url.getPath() + "' : unknown value '" + value + "'");
     }
   }
 }