#vulnerable code 
                              public static void main(String[] args) throws Exception
  {
    ExecutorService pool = Executors.newFixedThreadPool(MAX_PARALLEL_TASKS);
    Future<CMTaskResult> future;
    // pool.shutdown();
    // pool.awaitTermination(5, TimeUnit.SECONDS);
    future = pool.submit(new Callable<CMTaskResult>()
    {

      @Override
      public CMTaskResult call() throws Exception
      {
        System.out
            .println("CMTaskExecutor.main(...).new Callable() {...}.call()");
        return null;
      }

    });
    future = pool.submit(new CMTaskHandler(null, null, null, null));
    Thread.currentThread().join();
    System.out.println(future.isDone());
  } 
                            #location 19 
                            #vulnerability type NULL_DEREFERENCE
#fixed code
                              public static void main(String[] args) throws Exception
  {
    ExecutorService pool = Executors.newFixedThreadPool(MAX_PARALLEL_TASKS);
    Future<CMTaskResult> future;
    // pool.shutdown();
    // pool.awaitTermination(5, TimeUnit.SECONDS);
    future = pool.submit(new Callable<CMTaskResult>()
    {

      @Override
      public CMTaskResult call() throws Exception
      {
        System.out
            .println("CMTaskExecutor.main(...).new Callable() {...}.call()");
        return null;
      }

    });
    future = pool.submit(new CMTask(null, null, null, null));
    Thread.currentThread().join();
    System.out.println(future.isDone());
  }