public boolean[] getCurrentEnharmonics(int index) {
   Polylist tones = new Polylist();
   Chord currentChord = chordProg.getCurrentChord(index);
   if (currentChord != null && !currentChord.getName().equals(NOCHORD)) {
     try {
       tones = chordProg.getCurrentChord(index).getPriority();
     } catch (NullPointerException e) {
       tones = new Polylist();
       Trace.log(2, "Null pointer exception should be fixed in Score.getCurrentEnharmonics.");
       Trace.log(2, e.getStackTrace().toString());
     }
   }
   return getCurrentEnharmonics(index, tones);
 }
  // Determine whether '#' or 'b' is visible in the lick triage utility, based on
  // whatever the current chord is.
  public boolean[] getCurrentEnharmonics(int index, Polylist tones) {
    boolean[] enh = new boolean[5];

    // We set the default visible accidental to '#' if we're in a sharp key; otherwise, set
    // the default to 'b'.
    if (keySig >= 0) {
      enh[CSHARP] = true;
      enh[DSHARP] = true;
      enh[FSHARP] = true;
      enh[GSHARP] = true;
      enh[ASHARP] = true;
    } else {
      enh[CSHARP] = false;
      enh[DSHARP] = false;
      enh[FSHARP] = false;
      enh[GSHARP] = false;
      enh[ASHARP] = false;
    }

    // Get the current chord if there is one.
    Chord current = chordProg.getCurrentChord(index);

    if (current == null || current.getName().equals(NOCHORD)) {
      return enh;
    }

    if (tones == null || tones.isEmpty()) {
      return enh;
    }

    // Look at all the chord tones in the list and determine whether we need to change
    // any accidental labels from '#' to 'b'
    while (tones.nonEmpty()) {
      NoteSymbol first = (NoteSymbol) tones.first();
      tones = tones.rest();

      if (first.getPitchString().length() > 1) {
        switch (first.getPitchString().charAt(0)) {
          case 'c':
            if (first.getPitchString().charAt(1) == '#') {
              enh[CSHARP] = true;
            }
            break;
          case 'd':
            if (first.getPitchString().charAt(1) == 'b') {
              enh[CSHARP] = false;
            } else if (first.getPitchString().charAt(1) == '#') {
              enh[DSHARP] = true;
            }
            break;
          case 'e':
            if (first.getPitchString().charAt(1) == 'b') {
              enh[DSHARP] = false;
            }
            break;
          case 'f':
            if (first.getPitchString().charAt(1) == '#') {
              enh[FSHARP] = true;
            }
          case 'g':
            if (first.getPitchString().charAt(1) == 'b') {
              enh[FSHARP] = false;
            } else if (first.getPitchString().charAt(1) == '#') {
              enh[GSHARP] = true;
            }
            break;
          case 'a':
            if (first.getPitchString().charAt(1) == 'b') {
              enh[GSHARP] = false;
            } else if (first.getPitchString().charAt(1) == '#') {
              enh[ASHARP] = true;
            }
            break;
          case 'b':
            if (first.getPitchString().charAt(1) == 'b') {
              enh[ASHARP] = false;
            }
            break;
        }
      }
    }
    return enh;
  }