I am verifying the private members of `Object` (`Values` storing the internal state of the class) via a `MATCHER` in a unit test however I have the following concern:

* I created `GetValueA()` and `GetValueB()` public interfaces solely so that unit test could access inside a `MATCHER`. Doesn't sound like a right idea (specially if it's not supposed to be publicly exposed) but is there a way to access `valueA` and `valueB` inside a `MATCHER` somehow without having to create *public* methods? (could be set to private/protected perhaps so it's not publicly exposed)

`MATCHER_P2` could be brought inside the `Object` class but how would the caller invoke it?

[Live sample](https://godbolt.org/z/v1MGxP51M)

```
template<typename T>
class Object
{
    // internal to the class
    struct Values
    {
        int valueA = 100;
        int valueB = 0;
    };

    Values values = {};
    T otherStuff;

    public:
    // only exposing for the sake of Unit test access
    int GetValueA() const
    {
        return values.valueA;
    }

    int GetValueB() const
    {
        return values.valueA;
    }
};

MATCHER_P2(Match, m1, m2, "")
{
    return ExplainMatchResult(m1, arg.GetValueA(), result_listener) &&
           ExplainMatchResult(m2, arg.GetValueB(), result_listener);
}

class UnitTest 
{
  TEST(UnitTest, testA)
  {
     Object<int> object;
     EXPECT_THAT(object, Match(Ne(0), Eq(0))); 
  }
};

```