anchor.diff:  # !include* directives are written as-is with one exception:  the conf.d
   # directory is required and will always be written as a !include directive.
   # To render more than one of any directive, use an Array of it.
  +#
  +# Special Note:
  +# This rendering engine offers something that the deep_merge gem fails to:  the
  +# ability to knock-out entire key-value tuples, not just array elements or hash
  +# values (leaving the key behind with no value).  Simply prefix your key with
  +# the standard knock-out prefix, --, and it will be entirely removed from the
  +# rendered result.  At this time, there is no way to query lookup_options for
  +# custom definitions of knockout_prefix, so you must use -- for this extension
  +# to have any idea what you're trying to do.  Example:
  +#   source = {:--x => ''}
  +#   dest   = {:x => [1,2,3]}
  +#   dest.ko_deep_merge!(source)
  +#   Results: {}
   ################################################################################
   
   ###
  
positive.code: end
  
  ###
  # Recursively renders the source data as a Dovecot configuration file.
  #
  # Parameters:
  
negative.code: def render(data)
    return '# No data to render' if !data or data.empty? or !data.is_a?(Hash)
    stream = ''
    remove_knocked_out_keys(data).each{|k,v|
      stream = stream << recursive_render(k, v)
    }
    stream
  