addRootTriples(molecule2, newRootTriples);
Molecule newMolecule = moleculeFactory.createMolecule(newRootTriples);
Iterator<Triple> subMoleculeIter = newMolecule.getRootTriples();
while (subMoleculeIter.hasNext()) {
Triple currentTriple = subMoleculeIter.next();
newMolecule.specialAdd(merge(currentTriple, molecule1, molecule2));
}
return newMolecule;
} else {
throw new IllegalArgumentException("Cannot merge molecules with different head triples.");
}