def _mutate(self, condition, situation):
<EOL>mutation_points = bitstrings.BitString.random(<EOL>len(condition.mask),<EOL>self.mutation_probability<EOL>)<EOL>mask = condition.mask ^ mutation_points<EOL>if isinstance(situation, bitstrings.BitCondition):<EOL><INDENT>mask &= situation.mask<EOL>return bitstrings.BitCondition(situation.bits, mask)<EOL><DEDENT>return bitstrings.BitCondition(situation, mask)<EOL>
Create a new condition from the given one by probabilistically
        applying point-wise mutations. Bits that were originally wildcarded
        in the parent condition acquire their values from the provided
        situation, to ensure the child condition continues to match it.