public ArrayList<Molecule> split(int[] MoleculeID){
    
    
    ArrayList<Molecule> fragments = new ArrayList<Molecule>();
    
    int len = (Arrays.equals(MoleculeID, new int[0])) ? 0 : MoleculeID.length;
    
    Molecule splitPoint = getFromMoleculeID(MoleculeID, MoleculeID.length, 0);
    //System.out.println("Split point is at "+Arrays.toString(MoleculeID));
    //System.out.println("Molecule at split point: "+splitPoint.toStringf());
    splitPoint.flag();
    splitPoint.flagChildren();
    flagAncestors(MoleculeID, MoleculeID.length, 0);
    findUnflaggedChildren(fragments);
    
    
    return fragments;
    
  }