All the generated webservice-stubs from our backend have an equals-method similar to this one:

```
private java.lang.Object __equalsCalc = null;
public synchronized boolean equals(java.lang.Object obj) {
    if (!(obj instanceof PropertyData)) return false;
    PropertyData other = (PropertyData) obj;
    if (obj == null) return false;
    if (this == obj) return true;
    if (__equalsCalc != null) {
        return (__equalsCalc == obj);
    }
    __equalsCalc = obj;
    boolean _equals;
    _equals = true && 
        ((this.key==null && other.getKey()==null) || 
         (this.key!=null &&
          this.key.equals(other.getKey()))) &&
        ((this.value==null && other.getValue()==null) || 
         (this.value!=null &&
          this.value.equals(other.getValue())));
    __equalsCalc = null;
    return _equals;
}

```

Can someone please explain to me the purpoise of `__equalsCalc`? I just don't get it. It is not used somewhere else in the class. The way I see it, it is not null exactly during the calculation of the "equality". However the equals is declared `synchronized`. Therefore only one thread can be in it at any given time.
I can't see, why `if (__equalsCalc != null)` should ever be true.

Please show me my stupid misunderstanding ;-)

EDIT: I am new to the project and therefore my answer may be wrong. But if I trace it correctly, the method is generated by axis-wsdl2java