class SelectionParameters {

    @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.sourceRHS, other.sourceRHS ) ) {
            return false;
        }

        return equals( this.resultType, other.resultType );
    }

    public  SelectionParameters(List<TypeMirror> qualifiers, List<String> qualifyingNames, TypeMirror resultType,
        Types typeUtils);
    private  SelectionParameters(List<TypeMirror> qualifiers, List<String> qualifyingNames, TypeMirror resultType,
        Types typeUtils, SourceRHS sourceRHS);

}