I am trying to do this using Mockito on a Mock:  

When Mock.someMethod(..) is called with argument1 --> return result1  

When Mock.someMethod(..) is called with argument2 --> return result2  

When Mock.someMethod(..) is called with argument3 --> return result3

```
    when(mock.method(Matchers.argThat(new MyMatcher1() {

        @Override
        public boolean matches(Object arg0) {
                   // comparision logic
        }
    }))).thenReturn(result1);

    when(mock.method(Matchers.argThat(new MyMatcher2() {

        @Override
        public boolean matches(Object arg0) {
                   // comparision logic
        }
    }))).thenReturn(result2);

    when(mock.method(Matchers.argThat(new MyMatcher3() {

        @Override
        public boolean matches(Object arg0) {
                   // comparision logic
        }
    }))).thenReturn(result3);

```

But Mockito stubs the first one correctly, but on the second one it throws NullPointer exception as it for some reason tries to run the Matcher with null agrument. I am not sure if it is supported.

If this is not the correct way, how to achieve this with Mockito? Thanks.