protected ArrayList<ByteRange> generateUpdate(int fileSize) throws IOException {
        
        ModificationPart modificationPart = this.getModificationPart();
        
        int bs1, bs2, bs3 = 0;
        
        ArrayList<ByteRange> ranges = null;
        
        switch (modificationPart){
        case B:
        case E:
        case M:
            bs1 = this.getRealisticByteModification(fileSize, modificationPart);
            ranges = this.modifyFile(fileSize, bs1);
            break;
        case BE:
            bs1 = this.getRealisticByteModification(fileSize, ModificationPart.B);
            bs2 = this.getRealisticByteModification(fileSize, ModificationPart.E);
            ranges = this.modifyFile(fileSize, bs1, bs2);
            break;
        case BM:
            bs1 = this.getRealisticByteModification(fileSize, ModificationPart.B);
            bs2 = this.getRealisticByteModification(fileSize, ModificationPart.M);
            ranges = this.modifyFile(fileSize, bs1, bs2);
            break;
        case ME:
            bs1 = this.getRealisticByteModification(fileSize, ModificationPart.M);
            bs2 = this.getRealisticByteModification(fileSize, ModificationPart.E);
            ranges = this.modifyFile(fileSize, bs1, bs2);
            break;
        case BEM:
            bs1 = this.getRealisticByteModification(fileSize, ModificationPart.B);
            bs2 = this.getRealisticByteModification(fileSize, ModificationPart.M);
            bs3 = this.getRealisticByteModification(fileSize, ModificationPart.E);
            ranges = this.modifyFile(fileSize, bs1, bs2, bs3);
            break;
        }
        
        return ranges;
	}