static void woodyLoadRules(WoodyBot bot) {
  woodyBot(bot);
  bot.rules.clear();
  
  L<S> names = endingWithIC(".ctx", bot.fileNames());
  
  // Find disabled folders
  for ping (S name : names) {
    L<S> lines = lines(bot.getFile(name));

    SS properties = ctxParseProperties(lines, 0).a;
    if (eq(properties.get("PROCESS"), "NO")) {
      S folder = dropFromLastSlash(name);
      if (bot.disabledFolders.add(folder + "."))
        print("Disabling folder: " + folder);
    }
  }
    
  for ping (S name : names) {
    L<S> lines = lines(bot.getFile(name));
    S folder = dropFromLastSlash(name);
    if (woodyIsDisabledFolder(folder)) {
      print("Disabled: " + name);
      continue;
    }
    
    for i, S s over lines: {
      if (javaTokC(s).contains("RULE")) pcall { 
        WoodyRule rule = getWoodyRuleFromSource(lines, i);
        rule.fullName = "Agent#" + folder.replace('/', '.') + "." + rule.nameInFile;
        bot.rules.put(rule.fullName, rule);
      }
    }
  }
}