/** Ist es möglich ein Element zu entfernen? */
  @Test
  public void canRemoveElement() {
    List<IdLink> listLinks = new ArrayList<IdLink>();
    List<OptionVoraussetzung> listOpVor = new ArrayList<OptionVoraussetzung>();

    // Erzeugen eines Talents:
    // Talent A:
    Talent talentA = createTalent("Voraussetzung");
    Voraussetzung vorausA = new Voraussetzung();
    talentA.setVoraussetzung(vorausA);
    IdLink linkA = new IdLink(null, talentA, null, 3, null);

    // Talent A: Benötigt talent1
    listLinks.add(new IdLink(talentA, talent1, null, Link.KEIN_WERT, null));
    OptionVoraussetzung optVor = new OptionVoraussetzung();
    optVor.setLinkList(listLinks);
    listOpVor.add(optVor);
    vorausA.setPosVoraussetzung(listOpVor);

    // 1. Talent1 kann entfernd werden, da keine abhängigkeiten
    assertFalse(
        voraussAdmin.changeCanRemoveElement(
            false, this.prozessorTalent.getElementBox().getObjectById(talent1)));
    assertTrue(
        voraussAdmin.changeCanRemoveElement(
            true, this.prozessorTalent.getElementBox().getObjectById(talent1)));

    // 2. Talent A hinzufügen, jetzt kann talent1 NICHT mehr entfernd werden
    assertTrue(voraussAdmin.changeCanAddElement(true, linkA));
    prozessorTalent.addNewElement(talentA);

    assertFalse(
        voraussAdmin.changeCanRemoveElement(
            false, this.prozessorTalent.getElementBox().getObjectById(talent1)));
    assertFalse(
        voraussAdmin.changeCanRemoveElement(
            true, this.prozessorTalent.getElementBox().getObjectById(talent1)));

    // 3. Talent A entfernt, jetzt kann talent1 wieder entfernd werden
    prozessorTalent.removeElement(prozessorTalent.getElementBox().getObjectById(talentA));

    assertFalse(
        voraussAdmin.changeCanRemoveElement(
            false, this.prozessorTalent.getElementBox().getObjectById(talent1)));
    assertTrue(
        voraussAdmin.changeCanRemoveElement(
            true, this.prozessorTalent.getElementBox().getObjectById(talent1)));

    // Talent A: Benötigt talent1 und talent 2
    listLinks.add(new IdLink(talentA, talent2, null, Link.KEIN_WERT, null));

    // Talent A wieder drin, Talent 1 kann entfernt werden, weil talent 2 noch verfügbar
    prozessorTalent.addNewElement(talentA);

    assertFalse(
        voraussAdmin.changeCanRemoveElement(
            true, this.prozessorTalent.getElementBox().getObjectById(talent1)));
    assertFalse(
        voraussAdmin.changeCanRemoveElement(
            true, this.prozessorTalent.getElementBox().getObjectById(talent2)));

    // Benötigt talent1 ODER talent 2
    optVor.setAnzahl(1); // Einer wird benötigt

    assertTrue(
        voraussAdmin.changeCanRemoveElement(
            true, this.prozessorTalent.getElementBox().getObjectById(talent1)));
    assertTrue(
        voraussAdmin.changeCanRemoveElement(
            true, this.prozessorTalent.getElementBox().getObjectById(talent2)));

    // Talent 1 entfernen, jetzt kann talent 2 nicht mehr entfernd werden wegen Talent A
    prozessorTalent.removeElement(prozessorTalent.getElementBox().getObjectById(talent1));

    assertFalse(
        voraussAdmin.changeCanRemoveElement(
            true, this.prozessorTalent.getElementBox().getObjectById(talent2)));
  }