def visit_matched(source)
      tgt = @matches[source] || return
      # Match the unvisited matchable references, if any.
      if @matchable then
        mas = @matchable.call(source) - attributes_to_visit(source)
        mas.each { |ma| match_reference(source, tgt, ma) }
      end
      block_given? ? yield(source, tgt) : tgt
    end
def visit_matched(source)
      tgt = @matches[source] || return
      # Match the unvisited matchable references, if any.
      if @matchable then
        mas = @matchable.call(source) - attributes_to_visit(source)
        mas.each { |ma| match_reference(source, tgt, ma) }
      end
      block_given? ? yield(source, tgt) : tgt
    end
Visits the given source domain object.

 @param [Resource] source the match visit source
 @yield [target, source] the optional block to call on the matched source and target
 @yieldparam [Resource] source the visited source domain object
 @yieldparam [Resource] target the domain object which matches the visited source
 @yieldparam [Resource] from the visiting domain object
 @yieldparam [Property] property the visiting property