if ( entity.isOffBoard() ) return r;
    private Report filterReport(Report r, Player p, boolean omitCheck) {        if (r.subject == Entity.NONE && r.type != Report.PUBLIC) {            //Reports that don't have a subject should be public.            System.err.println("Error: Attempting to filter a Report object that is not public yet has no subject.\n\t\tmessageId: " + r.messageId);            return r;        }        if (r.type == Report.PUBLIC || p == null && !omitCheck) {            return r;        }        Entity entity = game.getEntity(r.subject);        Player owner = null;        if (entity != null)            owner = entity.getOwner();        if (!omitCheck && (entity == null || owner == null)) {            System.err.println("Error: Attempting to filter a Report object that is not public but has a subject (" + entity + ") with owner (" + owner + ").\n\tmessageId: " + r.messageId);            return r;        }        //off board (Artillery) units get treated as public messages        if ( entity.isOffBoard() )            return r;        Report copy = new Report(r);        for (int j = 0; j < copy.dataCount(); j++) {            if (omitCheck || !canSee(p, entity)) {                if (r.isValueObscured(j)) {                    copy.hideData(j);                    //Mark the original report to indicate which players                    // received an obscured version of it.                    if (p != null)                        r.addObscuredRecipient(p.getName());                }                //simulate hiding the report for *true* double-blind play                //***DEBUG*** TESTING ONLY                //copy.markForTesting();            }        }        return copy;    }