@Override
  public void registerOutputFile(@NotNull BuildTarget<?> target, File outputFile, Collection<String> sourcePaths) throws IOException {
    final String currentBuilder = myCurrentBuilderName;
    if (currentBuilder != null) {
      final String previousBuilder = myOutputToBuilderNameMap.put(outputFile, currentBuilder);
      if (previousBuilder != null && !previousBuilder.equals(currentBuilder)) {
        final String source = sourcePaths.isEmpty()? null : sourcePaths.iterator().next();
        myContext.processMessage(new CompilerMessage(
          currentBuilder, BuildMessage.Kind.ERROR, JpsBuildBundle.message("build.message.conflicting.outputs.error", outputFile.getAbsolutePath(), previousBuilder), source
        ));
      }
    }
    BuildOutputConsumerImpl consumer = myTarget2Consumer.get(target);
    if (consumer == null) {
      consumer = new BuildOutputConsumerImpl(target, myContext);
      myTarget2Consumer.put(target, consumer);
    }
    consumer.registerOutputFile(outputFile, sourcePaths);
  }
@Override
  public void registerOutputFile(@NotNull BuildTarget<?> target, File outputFile, Collection<String> sourcePaths)