private Molecule convertMolecule(Molecule molecule) {
final Molecule newMolecule = convertRootTriples(molecule);
final Iterator<Triple> triples = molecule.getRootTriples();
while (triples.hasNext()) {
final Triple triple = triples.next();
final Set<Molecule> moleculeSet = molecule.getSubMolecules(triple);
for (final Molecule subMolecule : moleculeSet) {
final Molecule convertedSubMolecule = convertMolecule(subMolecule);
newMolecule.add(convertTriple(triple), convertedSubMolecule);
}