bool ModificationMap::addModification(ByteContainer &bc, unsigned __int64 addr, BYTE to, BYTE &old) {
  BytePair *bpp = get(addr);
  if(bpp) {
    if(to == bpp->getFrom()) {
      old = to;
      remove(addr);
      return true;
    } else if(to != bpp->getTo()) {
      BytePair nbp(bpp->getFrom(), to);
      old = bpp->getTo();
      remove(addr);
      put(addr, nbp);
      return true;
    }
  } else { // addr not found in map
    const BYTE from = bc.getByte(addr);
    if(to != from) {
      old = from;
      put(addr, BytePair(from, to));
      return true;
    }
  }
  return false;
}