private void populateClassesToCompile(final BlockingQueue<NativeCodeFile> classesToCompile)
      throws MojoExecutionException {
    for (NativeCodeFile codeFile : allCodeFiles) {
      if (compiler.fileNeedsToBeCompiled(codeFile)) {
        try {
          classesToCompile.put(codeFile);
        } catch (InterruptedException e) {
          throw new MojoExecutionException(
              "Failed to add "
                  + codeFile.getSourceFile().toString()
                  + " to list of classes to compile.",
              e);
        }
      }
    }

    for (CompilationProcessor processor : processors) processor.setClassListingIsComplete(true);

    log.debug("Done populating classes to compile.");
  }