/**
  * Merge Membership2 rules.
  *
  * Merge every rule model with Membership2/visitor membership rules.
  * This ensure rules are consistent with Membership2 rules.
  *
  * @since  1.0.0
  * @internal
  */
 public function merge_protection_rules()
 {
     if ($this->is_base()) {
         // This is the visitor membership, no need to merge anything.
         return;
     }
     $base_rules = self::get_base()->_rules;
     foreach ($base_rules as $key => $base_rule) {
         try {
             // Key could be "type" of "site:type" format.
             $rule_type = MS_Rule::rule_type($key);
             $rule = $this->get_rule($rule_type);
             $rule->protect_undefined_items($base_rule, true);
             $this->set_rule($rule_type, $rule);
         } catch (Exception $e) {
             MS_Helper_Debug::log($e);
         }
     }
     $this->_rules = apply_filters('ms_model_membership_merge_protection_rules', $this->_rules, $this);
 }