“O método de comparação viola seu contrato geral!”

Pode alguém me explicar em termos simples, por que esse código gera uma exceção: "O método de comparação viola seu contrato geral!" E como faço para corrigi-l

private int compareParents(Foo s1, Foo s2) {
    if (s1.getParent() == s2) return -1;
    if (s2.getParent() == s1) return 1;
    return 0;
}