@Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof Symbol)) return false;

        Symbol symbol = (Symbol) o;

        if (bitMaskValue != symbol.bitMaskValue) return false;
        if (id != symbol.id) return false;
        if (name != null ? !name.equals(symbol.name) : symbol.name != null) return false;

        return true;
    }