def do_check(sexp)

      continue = @set.check(sexp)

      return unless continue
        # found an accepted pattern, no need to dive into it

      return unless sexp.is_a?(Array)
        # check over, seems fine...

      #
      # check children

      sexp.each { |c| do_check(c) }
    end
def do_check(sexp)

      continue = @set.check(sexp)

      return unless continue
        # found an accepted pattern, no need to dive into it

      return unless sexp.is_a?(Array)
        # check over, seems fine...

      #
      # check children

      sexp.each { |c| do_check(c) }
    end
The actual check method, check() is rather a bootstrap one...