def is_valid_relation?(parent, child, require_both = self.require_both)
      # depending upon the
      require_both ? is_valid_down_relation?(parent, child) && is_valid_up_relation?(parent, child)
                   : is_valid_down_relation?(parent, child) || is_valid_up_relation?(parent, child)
    end
def is_valid_relation?(parent, child, require_both = self.require_both)
      # depending upon the
      require_both ? is_valid_down_relation?(parent, child) && is_valid_up_relation?(parent, child)
                   : is_valid_down_relation?(parent, child) || is_valid_up_relation?(parent, child)
    end
determine whether the parent is a valid parent for the child. If no
 taxonomy is defined (i.e. the hashes are empty) then default is to return
 true. Requires that *both* an updward and a downward relation are present if
 the require_both flag is set (default is true -- this can be set via Taxonomite::Configuration).
 This flag can also be passed into the method here.
 @param [Taxonomite::Node] parent the proposed parent node
 @param [Taxonomite::Node] child the proposed child node
 @param [Boolean] require_both to require both downward and upward match, or just one or the other
 @return [Boolean] whether the child appropriate for the parent, default true