# File lib/innate/node.rb, line 731
    def patterns_for(path)
      default_action_name = ancestral_trait[:default_action_name]
      separate_default_action = ancestral_trait[:separate_default_action]

      atoms = path.split('/')
      atoms.delete('')
      result = nil
      atoms.size.downto(0) do |len|
        action_name = atoms[0...len].join('__')

        next if separate_default_action && action_name == default_action_name

        params = atoms[len..-1]

        action_name = default_action_name if action_name.empty? &&
          (separate_default_action || params != [default_action_name])

        return result if result = yield(action_name, params)
      end

      return nil
    end