Thread termination may be incorrect
For now, analysis checks the first stage of a thread block and identifies its termination strategy. Imagine a thread with 2 stages... the second stage is a ObjectProducer, which will produce until it receives a element from the first stage. The first stage is a ConsumerStage, which triggers the sending of a element depending on its incoming elements. This thread would be marked as ConsumerThread and hence it would be terminated by invoking its join method. As the second stage is a infite producer, it is possible, it never finishes. As a result, the analysis will never terminate.
(This is just a simple example... I am almost sure, there are more complex, possible configurations)