@Override
    public boolean equals(Object obj) {
        if ( this == obj ) {
            return true;
        }
        if ( obj == null ) {
            return false;
        }
        if ( getClass() != obj.getClass() ) {
            return false;
        }
        final SelectionParameters other = (SelectionParameters) obj;

        if ( !equals( this.qualifiers, other.qualifiers ) ) {
            return false;
        }

        if ( !Objects.equals( this.qualifyingNames, other.qualifyingNames ) ) {
            return false;
        }

        if ( !Objects.equals( this.conditionQualifiers, other.conditionQualifiers ) ) {
            return false;
        }

        if ( !Objects.equals( this.conditionQualifyingNames, other.conditionQualifyingNames ) ) {
            return false;
        }

        if ( !Objects.equals( this.sourceRHS, other.sourceRHS ) ) {
            return false;
        }

        return equals( this.resultType, other.resultType );
    }
@Test
    public void testAllEqual() {
        List<String> qualifyingNames = Arrays.asList( "language", "german" );
        TypeMirror resultType = new TestTypeMirror( "resultType" );
        List<TypeMirror> qualifiers = new ArrayList<>();
        qualifiers.add( new TestTypeMirror( "org.mapstruct.test.SomeType" ) );
        qualifiers.add( new TestTypeMirror( "org.mapstruct.test.SomeOtherType" ) );
        SelectionParameters params = new SelectionParameters( qualifiers, qualifyingNames, resultType, typeUtils );

        List<String> qualifyingNames2 = Arrays.asList( "language", "german" );
        TypeMirror resultType2 = new TestTypeMirror( "resultType" );
        List<TypeMirror> qualifiers2 = new ArrayList<>();
        qualifiers2.add( new TestTypeMirror( "org.mapstruct.test.SomeType" ) );
        qualifiers2.add( new TestTypeMirror( "org.mapstruct.test.SomeOtherType" ) );
        SelectionParameters params2 = new SelectionParameters( qualifiers2, qualifyingNames2, resultType2, typeUtils );

        assertThat( params.equals( params2 ) ).as( "All equal" ).isTrue();
        assertThat( params2.equals( params ) ).as( "All equal" ).isTrue();
    }