@Override
    public boolean equals(Object obj) {
        if (obj == null)
            return false;
        if (obj.getClass() != this.getClass())
            return false;
        Pitch that = (Pitch) obj;
        return this.value == that.value 
            && this.accidental == that.accidental 
            && this.octave == that.octave;
    }