 
     required_reviewers =
       Enum.map(files, fn x ->
-        pats =
-#          Enum.flat_map(code_owners.patterns, fn owner ->
-#            cond do
-#              # glob matches has an extra '/' in it, don't match on it
-#              :glob.matches(x.filename, owner.file_pattern) && !:glob.matches(x.filename, owner.file_pattern <> "/*")  ->
-#                [owner.approvers]
-#              String.starts_with?(x.filename, owner.file_pattern) ->
-#                [owner.approvers]
-#              true ->
-#                [] # if unknown fall through
-#            end
-#          end)
-
-          Enum.map(code_owners.patterns, fn owner ->
+         # Convert each file to an array of matching owners
+         pats = Enum.map(code_owners.patterns, fn owner ->
             cond do
               # glob matches has an extra '/' in it, don't match on it
              :glob.matches(x.filename, owner.file_pattern) && !:glob.matches(x.filename, owner.file_pattern <> "/*")  ->

  # Returns a list of lists
  # Items in the inner lists are joined by an OR statement
  # Items in the the outer list are joined by an AND statement
  # [ [A], [A, B], [A, C] -> A and (A or B) and (A or C)
  @spec list_required_reviews(%BorsNG.CodeOwners{}, [%BorsNG.GitHub.File{}]) :: [[String.t]]
  def list_required_reviews(code_owners, files) do
    Logger.debug("Code Owners: #{inspect(code_owners)}")

              acc
            end
          end)
      end)

    required_reviewers = Enum.filter(required_reviewers, fn x -> x != nil end)
