log.debug(nullExp + p);
if (log.isDebugEnabled())log.debug(nullExp + p);
    static public ProjectData go(Project p, Map cache) {        if (check(cache,p)) {            return (ProjectData) from(cache, p);        }        ProjectData pd = new ProjectData();        to(cache, p, pd);                if (null == p.getProjectId()) {            log.debug(nullId+p);        } else {            pd.setID(p.getProjectId().intValue());        }        pd.setName(p.getName());        pd.setDescription(p.getDescription());        if (null==p.getExperimenter()){            log.debug(nullExp + p);        } else {            pd.setOwnerFirstName(p.getExperimenter().getFirstname());        }        //TODO        if (null==p.getDatasets()){            log.debug(nullDs + p);        } else {            Set set = new HashSet();            for (Iterator i = p.getDatasets().iterator(); i.hasNext();) {                Dataset d = (Dataset) i.next();                set.add(go(d,cache));            }            pd.setDatasets(new ArrayList(set));        }        return pd;    }