public static HashMap<String, HashMap<String, ArrayList<String>>> getRegulatorProcessEdges(PathCaseRepository repository) {
        HashMap<String, HashMap<String, ArrayList<String>>> edges = new HashMap<String, HashMap<String, ArrayList<String>>>();

        ArrayList<String> GenericProcessIDListInRepository = getGenericProcessIDListInRepository(repository);
        for (String gpid : GenericProcessIDListInRepository) {
            ArrayList<ProcessToMoleculesTable.ProcessToMoleculesTableEntry> rows = repository.genericProcessToMoleculesTable.getRows(gpid);
            HashMap<String, ArrayList<String>> gpidRegulatorMap = edges.get(gpid);
            if (gpidRegulatorMap == null) {
                gpidRegulatorMap = new HashMap<String, ArrayList<String>>();
                edges.put(gpid,gpidRegulatorMap);
            }

            if (rows != null) {
                ArrayList<String> genericregulators = new ArrayList<String>();
                ArrayList<String> inhibitors = new ArrayList<String>();
                ArrayList<String> activators = new ArrayList<String>();

                for (ProcessToMoleculesTable.ProcessToMoleculesTableEntry entry : rows) {
                    if (entry.MoleculeRole.equalsIgnoreCase(MOLECULE_ROLE_STRINGS.REGULATOR)) {
                        genericregulators.add(entry.MoleculeId);
                    } else if (entry.MoleculeRole.equalsIgnoreCase(MOLECULE_ROLE_STRINGS.INHIBITOR)) {
                        inhibitors.add(entry.MoleculeId);
                    } else if (entry.MoleculeRole.equalsIgnoreCase(MOLECULE_ROLE_STRINGS.ACTIVATOR)) {
                        activators.add(entry.MoleculeId);
                    }
                }

                gpidRegulatorMap.put(MOLECULE_ROLE_STRINGS.REGULATOR, genericregulators);
                gpidRegulatorMap.put(MOLECULE_ROLE_STRINGS.INHIBITOR, inhibitors);
                gpidRegulatorMap.put(MOLECULE_ROLE_STRINGS.ACTIVATOR, activators);
            }
        }

        return edges;
    }