public void setSystemRelation(ElementSystem e1, ElementSystem e2, SystemRelation r) {
        if (e1 == null || e2 == null)
            throw new NullPointerException("The ElementSystem is null.");
        if (r == null)
            throw new NullPointerException("The ElementSystem relation is null.");
        if (r == SystemRelation.CANNOT)
            getElements().parallelStream().forEach(fe1 -> {
                getElements().parallelStream().forEach(fe2 -> {
                    if (getElementRelation(fe1, fe2) == ElementRelation.SYSTEM_CAN)
                        setElementRelation(fe1, fe2, ElementRelation.CANNOT);
                });
            });
        else
            getElements().parallelStream().forEach(fe1 -> {
                getElements().parallelStream().forEach(fe2 -> {
                    if (getElementRelation(fe1, fe2) == ElementRelation.CANNOT)
                        setElementRelation(fe1, fe2, ElementRelation.SYSTEM_CAN);
                });
            });
        RETW(defaultEngineLock, () -> {
            systemRelations.put(new NonOrderedFinalPair<>(e1.getID(), e2.getID()), r);
        });
    }