     }
   }
 
-  std::vector<result_type> compute_reference_solution(bool print = false, bool sort = true)
+  std::vector<result_type> compute_reference_solution(join_kind join_method, bool print = false, bool sort = true)
   {
 
     // Use the type of the first vector as the key_type


      // Every element in the range identifies a row in the right columns where
      // the first column matches. Need to check if all other columns also match
      for(auto i =  range.first; i != range.second; ++i)
      {
        const auto right_index = i->second;

        // If all of the columns in right_columns[right_index] == all of the columns in left_columns[left_index]
        // Then this index pair is added to the result as a matching pair of row indices
        if( true == rows_equal(left_columns, right_columns, left_index, right_index))
          result.emplace_back(left_index, right_index);
      }
    }


  return os;
}

// A new instance of this class will be created for each *TEST(InnerJoinTest, ...)
// Put all repeated setup and validation stuff here
template <typename multi_column_t>
struct InnerJoinTest : public testing::Test
