/**
   * @param attacks - a set of MoveAttack
   * @return the list of my neighbor that haven't attack me, since I can't attack someone who
   *     already attack me
   * @throws BadAcquaintancesException
   */
  private MoveAttackReturn manageIncomingMoveAttack(Set<EcoAttack> attacks)
      throws BadAcquaintancesException {
    if (attacks.size() > 1) { // si j'ai plus d'un voisin qui m'attaque j'en choisi au hasard
      System.err.println("I'm attack by various move attack, choose randomly"); // $NON-NLS-1$
    }
    EcoAttack attack = attacks.iterator().next();
    EcoIdentity target = attack.getAssailant();
    EcoIdentity[] neighboors = getNeighboors();
    EcoIdentity me = this.getEcoIdentity();
    EcoRelation defenderUp;
    EcoRelation defenderDown;
    EcoRelation defenderRight;
    EcoRelation defenderLeft;
    EcoRelation defenderHosted;

    if (target.equals(neighboors[0])) { // move to up
      defenderUp = new Down(me, target);
      defenderDown = new Up(target, me);
      defenderRight = new Left(target, neighboors[1]);
      defenderLeft = new Right(target, neighboors[3]);
    } else if (target.equals(neighboors[1])) { // move to right
      defenderUp = new Down(target, neighboors[0]);
      defenderDown = new Up(target, neighboors[2]);
      defenderRight = new Left(me, target);
      defenderLeft = new Right(target, neighboors[3]);
    } else if (target.equals(neighboors[2])) { // move to down
      defenderUp = new Down(me, target);
      defenderDown = new Up(target, neighboors[2]);
      defenderRight = new Left(target, neighboors[1]);
      defenderLeft = new Right(target, neighboors[3]);
    } else if (target.equals(neighboors[3])) { // move to left
      defenderUp = new Down(target, neighboors[0]);
      defenderDown = new Up(target, neighboors[2]);
      defenderRight = new Left(me, target);
      defenderLeft = new Right(target, neighboors[3]);
    } else {
      throw new BadAcquaintancesException();
    }
    defenderHosted = new Hosted(target, getPlace());

    Collection<EcoRelation> newTargetAcquaintances = new LinkedList<EcoRelation>();
    newTargetAcquaintances.add(defenderUp);
    newTargetAcquaintances.add(defenderDown);
    newTargetAcquaintances.add(defenderRight);
    newTargetAcquaintances.add(defenderLeft);
    newTargetAcquaintances.add(defenderHosted);

    MoveAttackReturn ack = new MoveAttackReturn(me, target, newTargetAcquaintances);

    this.setAcquaintances(attack.getConstraints());
    return ack;
  }