code: public boolean hasSharpsAndFlats() {
  		boolean hasSharp = false, hasFlat = false;
          for (Accidental accidental : accidentals) {
              // handle microtonal (half flat and half sharp)
              // theorically, double sharp and double flat
              // are never at key, but half sharp and half flat can
              hasSharp = hasSharp || (accidental.getValue() > 0);
              hasFlat = hasFlat || (accidental.getValue() < 0);
          }
  		return hasSharp && hasFlat;
  	}
docs: Returns <TT>true</TT> if the key contains sharps <B>and</B> flats
  (e.g.: in ABC format oriental scale <I>nawa atar</i> <TT>K:Cm ^f =b</TT>
  which scale is C D Eb F# G Ab B).
  
  Returns <TT>false</TT> otherwise.