Good idea to split.
By now this is very hard to use pvm api in a safe way...
We already had problems using some methods in a wrong way...
Sometimes we can write some code working but with side effects
Maybe execute method could use the interface for actions ?
I agree as well...
Cast would not be needed all the time, i.e in NodeBeaviour and Action impls. ExecutionController and ExecutionState could replace Execution parameter respectively.
first iteration is done and committed. please review to see if it makes sense
renamed ExecutionState to ExecutionAccessor to prevent a name collision with Execution.state property.
The execution state indicates wether an execution is active, ended, cancelled, suspended,... and it also supports user defined states (it's a string property)