def append(*filter_spec, &block)
      filter = build_filter(filter_spec, &block)

      synchronize do
        @filters.push filter
      end
      self
    end
def append(*filter_spec, &block)
      filter = build_filter(filter_spec, &block)

      synchronize do
        @filters.push filter
      end
      self
    end
Adds a new filter at the end of the filter chain. You can either give a
 callable object (e.g. a `Proc` or a {Filter}) or specify the filter with
 a given block.

 @param filter_spec (see #build_filter)
 @raise [TypeError] if no suitable filter could be created from
   `filter_spec`
 @return [self]