@Override
    public int hashCode() {
        int prime = 31;
        int prime1 = 43;
        int prime2 = 59;
        int tFieldId = fieldId;
        
        int tTitle;
        if (title == null) {
            tTitle = prime1;
        }
        else {
            tTitle = title.length();
        }
        
        int tXCoord = xCoordinate;
        int tWidth = width;
        
        int tHelp;
        if (helpHtml == null) {
            tHelp = prime2;
        }
        else {
            tHelp = helpHtml.length();
        }
        
        int tCol = columnNumber;
        int tProjectId = projectId;
        
        if (tFieldId < 1) {
            tFieldId = prime2;
        }
        if (tXCoord <= 0) {
            tXCoord = prime1;
        }
        if (tWidth <= 0) {
            tWidth = prime;
        }
        if (tCol < 1) {
            tCol = prime1;
        }
        if (tProjectId < 1) {
            tProjectId = prime2;
        }
        int tKData;
        if (knownData == null) {
            tKData = knownData.length();
        }
        else {
            tKData = prime;
        }
        
        int hash = tFieldId * prime;
        hash *= tTitle ^ prime2;
        hash += tXCoord * prime;
        hash *= tWidth ^ prime1;
        hash += tHelp * prime;
        hash *= tCol ^ prime2;
        hash += tProjectId * prime1;
        hash *= tKData ^ prime2;
        
        return hash;
    }