@Override
    public boolean equals(Object other) {
        if (other == null)
            return false;
        if (other == this)
            return true;
        if (!(other instanceof Feature))
            return false;
        
        Feature otherF = (Feature) other;
        boolean result = false;
        // Must be equal: name, value, language, category name
        if (name.equals(otherF.name)
                && value.equals(otherF.value)
                && category.getName().equals(otherF.category.getName())
                        ) {
            
            
            if (language != null && language.equals(otherF.language)) {
                result = true;
            }
            else if (language == null) {
                result = true;
            }
        }
        
        return result;
    }