code: public void checkDoFirstInstall(){
  
  		if ( ! downloadAll ) {
  			return;
  		}
  
  
  		// this makes sure there is a file separator between every component,
  		// if path has a trailing file separator or not, it will work for both cases
  		File dir = new File(getPath(), CHEM_COMP_CACHE_DIRECTORY);
  		File f = new File(dir, "components.cif.gz");
  
  		if ( ! f.exists()) {
  
  			downloadAllDefinitions();
  
  		} else {
  			// file exists.. did it get extracted?
  
  			FilenameFilter filter =new FilenameFilter() {
  
  				@Override
  				public boolean accept(File dir, String file) {
  					return file.endsWith(".cif.gz");
  				}
  			};
  			String[] files = dir.list(filter);
  			if ( files.length < 500) {
  				// not all did get unpacked
  				try {
  					split();
  				} catch (IOException e) {
  					logger.error("Could not split file {} into individual chemical component files. Error: {}",
  							f.toString(), e.getMessage());
  				}
  			}
  		}
  	}
docs: Checks if the chemical components already have been installed into the PDB directory.
  If not, will download the chemical components definitions file and split it up into small
  subfiles.