code: def _prohibited(from_op, to_op):
      "Determines if from_op is allowed to be mutated to to_op."
      # 'not' can only be removed but not replaced with
      # '+', '-' or '~' b/c that may lead to strange results
      if from_op is UnaryOperators.Not:
          if to_op is not UnaryOperators.Nothing:
              return True
  
      # '+1' => '1' yields equivalent mutations
      if from_op is UnaryOperators.UAdd:
          if to_op is UnaryOperators.Nothing:
              return True
  
      return Falsf _prohibited(from_op, to_op):
      "Determines if from_op is allowed to be mutated to to_op."
      # 'not' can only be removed but not replaced with
      # '+', '-' or '~' b/c that may lead to strange results
      if from_op is UnaryOperators.Not:
          if to_op is not UnaryOperators.Nothing:
              return True
  
      # '+1' => '1' yields equivalent mutations
      if from_op is UnaryOperators.UAdd:
          if to_op is UnaryOperators.Nothing:
              return True
  
      return False
docs: Determines if from_op is allowed to be mutated to to_op.