public void addChord(int step, Chord c) { if (_type != InstrumentType.GUITAR && _type != InstrumentType.PIANO) { throw new IllegalStateException(); } int index = BDXUtil.searchIndexWithStep(_chordSetList, step, true); if (index < 0) { List<Chord> chordSet = new ArrayList<Chord>(); chordSet.add(c); addChordSet(step, chordSet); return; } StepValue<List<Chord>> sv = _chordSetList.get(index); int st = sv.getStep(); if (st == step) { List<Chord> chordSet = sv.getValue(); chordSet.add(c); } else { List<Chord> chordSet = new ArrayList<Chord>(); chordSet.add(c); addChordSet(step, chordSet); Collections.sort(_chordSetList, StepValue.STEP_COMPARATOR); } }