Code: * Test mutant with dynamically created zombie. * Log all warnings through reporter, so remove random $stderr.puts calls Mutations: * Add true masgn mutations * Add binary operator specific mutations (YAY, finally reached this point) * Add some kind of a "do not touch me object" that raises on all messages. It can be used to make sure each literal value is touched. * Replace nil or add "do not touch me object" to literal mutations. * Mutate options on Regexp literals * Add mutations for dynamic regexp symbol and string literals * Mutate "def foo; bar; end" to "def foo; self; end"? * Mutate Block catch "def foo(&block)" and block pass "foo(&block)" * Binary operator mutations * Add timeout to terminate infinite loops Example of a negative mutation: Mutations on local variables and arguments prefixed with an underscore would be emitted as negative mutations that must be alive. Loader: * Make sure loader does not change visibility of injected mutants Killers: * Move test framework specific stuff to strategy * Add a general master <=> killer IPC interface. So different strategies of isolation (fork, vs jruby runtime creation) will work without big impact. Strategy: * Aggregate warnings on missing spec files * Provide "expicit files to kill with" strategy Matcher: * Allow matches on attr_reader with literal name argument(s)? * Allow matches on define_method with literal name argument? jruby-support: * Create a runtime per mutation to kill mutations in isolation