code: def load_and_parse(self, package_name, root_dir, relative_dirs,
                         resource_type, tags=None):
          
  
          extension = "[!.#~]*.sql"
  
          if tags is None:
              tags = []
  
          if dbt.flags.STRICT_MODE:
              dbt.contracts.project.ProjectList(**self.all_projects)
  
          file_matches = dbt.clients.system.find_matching(
              root_dir,
              relative_dirs,
              extension)
  
          result = []
  
          for file_match in file_matches:
              file_contents = dbt.clients.system.load_file_contents(
                  file_match.get('absolute_path'))
  
              parts = dbt.utils.split_path(file_match.get('relative_path', ''))
              name, _ = os.path.splitext(parts[-1])
  
              path = self.get_compiled_path(name,
                                            file_match.get('relative_path'))
  
              original_file_path = os.path.join(
                  file_match.get('searched_path'),
                  path)
  
              result.append({
                  'name': name,
                  'root_path': root_dir,
                  'resource_type': resource_type,
                  'path': path,
                  'original_file_path': original_file_path,
                  'package_name': package_name,
                  'raw_sql': file_contents
              })
  
          return self.parse_sql_nodes(result, tags)
docs: Load and parse models in a list of directories. Returns a dict
             that maps unique ids onto ParsedNodes