Object createAtomSetCollectionFromString(
     String strModel, Map<String, Object> htParams, boolean isAppend) {
   setLoadState(htParams);
   boolean isAddH = (strModel.indexOf(JC.ADD_HYDROGEN_TITLE) >= 0);
   String[] fnames = (isAddH ? getFileInfo() : null);
   FileReader fileReader =
       new FileReader(
           this,
           viewer,
           "string",
           "string",
           "string",
           null,
           JmolBinary.getBR(strModel),
           htParams,
           isAppend);
   fileReader.run();
   if (fnames != null) setFileInfo(fnames);
   if (!isAppend && !(fileReader.getAtomSetCollection() instanceof String)) {
     viewer.zap(false, true, false);
     setFileInfo(
         new String[] {strModel == JC.MODELKIT_ZAP_STRING ? JC.MODELKIT_ZAP_TITLE : "string"});
   }
   return fileReader.getAtomSetCollection();
 }
 /**
  * not used in Jmol project -- will close reader
  *
  * @param fullPathName
  * @param name
  * @param reader
  * @param htParams
  * @return fileData
  */
 Object createAtomSetCollectionFromReader(
     String fullPathName, String name, Object reader, Map<String, Object> htParams) {
   FileReader fileReader =
       new FileReader(this, viewer, name, fullPathName, name, null, reader, htParams, false);
   fileReader.run();
   return fileReader.getAtomSetCollection();
 }
 /*
  * note -- createAtomSetCollectionFromXXX methods
  * were "openXXX" before refactoring 11/29/2008 -- BH
  *
  * The problem was that while they did open the file, they
  * (mostly) also closed them, and this was confusing.
  *
  * The term "clientFile" was replaced by "atomSetCollection"
  * here because that's what it is --- an AtomSetCollection,
  * not a file. The file is closed at this point. What is
  * returned is the atomSetCollection object.
  *
  * One could say this is just semantics, but there were
  * subtle bugs here, where readers were not always being
  * closed explicitly. In the process of identifying Out of
  * Memory Errors, I felt it was necessary to clarify all this.
  *
  * Apologies to those who feel the original clientFile notation
  * was more generalizable or understandable.
  *
  */
 Object createAtomSetCollectionFromFile(
     String name, Map<String, Object> htParams, boolean isAppend) {
   if (htParams.get("atomDataOnly") == null) {
     setLoadState(htParams);
   }
   name = viewer.resolveDatabaseFormat(name);
   int pt = name.indexOf("::");
   String nameAsGiven = (pt >= 0 ? name.substring(pt + 2) : name);
   String fileType = (pt >= 0 ? name.substring(0, pt) : null);
   Logger.info(
       "\nFileManager.getAtomSetCollectionFromFile("
           + nameAsGiven
           + ")"
           + (name.equals(nameAsGiven) ? "" : " //" + name));
   String[] names = classifyName(nameAsGiven, true);
   if (names.length == 1) return names[0];
   String fullPathName = names[0];
   String fileName = names[1];
   htParams.put(
       "fullPathName",
       (fileType == null ? "" : fileType + "::") + fullPathName.replace('\\', '/'));
   if (viewer.getBoolean(T.messagestylechime) && viewer.getBoolean(T.debugscript))
     viewer.scriptStatus("Requesting " + fullPathName);
   FileReader fileReader =
       new FileReader(
           this, viewer, fileName, fullPathName, nameAsGiven, fileType, null, htParams, isAppend);
   fileReader.run();
   return fileReader.getAtomSetCollection();
 }