code: @Override
  	public List<EcodDomain> getDomainsForPdb(String pdbId) throws IOException {
  		domainsFileLock.readLock().lock();
  		try {
  			logger.trace("LOCK readlock");
  			while( domainMap == null ) {
  				// unlock to allow ensureDomainsFileInstalled to get the write lock
  				logger.trace("UNLOCK readlock");
  				domainsFileLock.readLock().unlock();
  				indexDomains();
  				domainsFileLock.readLock().lock();
  				logger.trace("LOCK readlock");
  			}
  
  			if(pdbId != null)
  				pdbId = pdbId.toLowerCase();
  			List<EcodDomain> doms = domainMap.get(pdbId);
  			if(doms == null) {
  				return null;
  			}
  			// Deep clone
  			List<EcodDomain> clonedDoms = new ArrayList<EcodDomain>(doms.size());
  			for(EcodDomain d : doms) {
  				clonedDoms.add( new EcodDomain(d) );
  			}
  			return clonedDoms;
  		} finally {
  			logger.trace("UNLOCK readlock");
  			domainsFileLock.readLock().unlock();
  		}
  	}
docs: public EcodInstallation(String cacheLocation) {
  this( cacheLocation, DEFAULT_VERSION );
  }
  
  
  Get a list of all ECOD domains for a particular PDB ID
  @param pdbId
  @return the list of domains, or null if no matching domains were found
  @throws IOException