Put the beans into a large flameproof casserole. Add 6¼ cups (2½ pints/1.5 litres) water and the garlic. Cover and boil over medium heat for 2-3 hours (or 30 minutes in a pressure cooker). When tender, add salt and boil for a few minutes.
Remove the stems from the mushrooms. Wipe any dirt from the caps with a damp cloth. Using a spoon, scrape around the underside of the caps to remove the gills (leave them on if preferred) and cut each in half. Mix the sour orange juice with the garlic, and salt and pepper to taste, and pour over the mushrooms. Leave to marinate for 1 hour.
Roast the whole red onions, unpeeled, on a grill (barbecue), turning frequently, until browned on all sides. Let cool, then peel, and slice into rings or half-moons. Mix with the sour orange juice, chopped cilantro (coriander) and salt to taste. Leave to rest for 1 hour in the refrigerator before serving.
Roast the tomatoes on a grill (barbecue), turning frequently. Place in a bowl and mash using a potato masher. Let cool then add the minced onion, chopped cilantro and salt to taste. Cover the bowl with plastic wrap (clingfilm) and let it rest in the refrigerator until ready to serve.
Drain the beans, add to a food processor or blender, and blend. Heat the oil in a pan and sauté the onion with the chilli until golden. Add the blended beans and epazote leaves, then boil over low heat for 5 minutes. Pass the beans through a strainer (sieve) and reserve.
To serve, grill the mushrooms over charcoal or roast them for 3-4 minutes in a hot oven until slightly golden. Serve with the hot beans, marinated onion, and chiltomate, and garnish with a roasted habanero.