if(a.isEnemyOf(b) && Compute.canSee(game,a,b)) {
if(a.isEnemyOf(b) && Compute.canSee(game,b,a)) {
    private Vector filterEntities(Player pViewer, Vector vEntities) {        Vector<Entity> vCanSee = new Vector();        Vector<Entity> vAllEntities = game.getEntitiesVector();        Vector<Entity> vMyEntities = new Vector();        boolean bTeamVision = game.getOptions().booleanOption("team_vision");        // If they can see all, return the input list        if (pViewer.canSeeAll()) {            return vEntities;        }                if(pViewer.isObserver()) {            vMyEntities.addAll(vAllEntities);            for(Entity a:vMyEntities) {                for(Entity b:vMyEntities) {                    if(a.isEnemyOf(b) && Compute.canSee(game,a,b)) {                        vCanSee.add(a);                        vCanSee.add(b);                    }                }            }            return vCanSee;        }        for (int x = 0; x < vAllEntities.size(); x++) {            Entity e = vAllEntities.elementAt(x);            if (e.getOwner() == pViewer || bTeamVision && !e.getOwner().isEnemyOf(pViewer)) {                vMyEntities.addElement(e);            }        }        for (int x = 0; x < vEntities.size(); x++) {            Entity e = (Entity)vEntities.elementAt(x);            if (vMyEntities.contains(e)) {                vCanSee.addElement(e);                continue;            }            for (int y = 0; y < vMyEntities.size(); y++) {                Entity e2 = vMyEntities.elementAt(y);                if(e2.isOffBoard()) {                    continue;                }                if (Compute.canSee(game, e2, e)) {                    vCanSee.addElement(e);                    break;                }            }        }        return vCanSee;    }