@Override
    public Staff getStaff(final int index) {
      Staff staff = super.getStaff(index);
      /* We need to populate key/clef/timeList with events from the past */
      if (staff != null && !staff.isEmpty()) {
        final Fraction startMoment = staff.get(0).getMoment();
        for (Event event: part.getMusicList()) {
          if (event.getMoment().compareTo(startMoment) < 0) {
            if (event instanceof GlobalKeyChange) {
              GlobalKeyChange globalKeyChange = (GlobalKeyChange)event;
              staff.keyList.put(globalKeyChange.getMoment(),
                                globalKeyChange.getKeySignature());
            } else if (event instanceof KeyChange) {
              KeyChange keyChange = (KeyChange)event;
              if (keyChange.getStaffNumber() == index) {
                staff.keyList.put(keyChange.getMoment(),
                                  keyChange.getKeySignature());
              }
            } else if (event instanceof ClefChange) {
              ClefChange clefChange = (ClefChange)event;
              if (clefChange.getStaffNumber() == index) {
                staff.clefList.put(clefChange.getMoment(),
                                   clefChange.getClef());
              }
            }
          }
        }
      }

      return staff;
    }