public boolean markDirty(@Nullable CompileContext context,
                           CompilationRound round,
                           File file,
                           final BuildRootDescriptor rd,
                           @Nullable StampsStorage<? extends StampsStorage.Stamp> stampStorage,
                           boolean saveEventStamp) throws IOException {
    final FilesDelta roundDelta = getRoundDelta(round == CompilationRound.NEXT? NEXT_ROUND_DELTA_KEY : CURRENT_ROUND_DELTA_KEY, context);
    if (roundDelta != null && isInCurrentContextTargets(context, rd)) {
      roundDelta.markRecompile(rd, file);
    }

    final FilesDelta filesDelta = getDelta(rd.getTarget());
    filesDelta.lockData();
    try {
      final boolean marked = filesDelta.markRecompile(rd, file);
      if (marked) {
        if (LOG.isDebugEnabled()) {
          LOG.debug(rd.getTarget() + ": MARKED DIRTY: " + file.getPath());
        }
        if (saveEventStamp) {
          final long eventStamp = System.currentTimeMillis();
          synchronized (myRegistrationStamps) {
            myRegistrationStamps.put(file, eventStamp);
          }
        }
        if (stampStorage != null) {
          stampStorage.removeStamp(file, rd.getTarget());
        }
      }
      else {
        if (LOG.isDebugEnabled()) {
          LOG.debug(rd.getTarget() + ": NOT MARKED DIRTY: " + file.getPath());
        }
      }
      return marked;
    }
    finally {
     filesDelta.unlockData();
    }
  }
public boolean markDirty(@Nullable CompileContext context,
                           CompilationRound round,
                           File file,
                           final BuildRootDescriptor rd,
                           @Nullable StampsStorage<? extends StampsStorage.Stamp> stampStorage,
                           boolean saveEventStamp)