Code: * Test mutant with dynamically created zombie. * Fix ugly code within default parameter mutations * Break up lib/mutant/mutator/node/send.rb in class specific files * Log all warnings through reporter, so remove random $stderr.puts calls * Use rational to represent percent values AST: * Use whitequarcks parser and the to be writte unparser. This fixes all RBX AST issues. 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"? * Emit negative and positive mutations * Mutate Block catch "def foo(&block)" and block pass "foo(&block)" * Mutate super arguments just like send arguments * 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. Kill: * Introduce mutant Kill that acts as a DTO between killer and runner. (Simplifies reporting) 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: * Use whitequarck parser * Create a runtime per mutation to kill mutations in isolation