public static void writeFile(Logic logic, OutputStream os, boolean close) throws IOException {
   DataOutputStream dos;
   if (os instanceof DataOutputStream) dos = (DataOutputStream) os;
   else dos = new DataOutputStream(os);
   dos.writeInt(logic.getUnknown1());
   dos.writeInt(logic.getControllers().size());
   for (ControllerEntry controller : logic.getControllers()) {
     IOLogic.writePoint3s(dos, controller.getPosition());
     dos.writeInt(controller.getGroups().size());
     for (GroupEntry group : controller.getGroups()) {
       dos.writeShort(group.getBlockID());
       dos.writeInt(group.getBlocks().size());
       for (Point3s block : group.getBlocks()) IOLogic.writePoint3s(dos, block);
     }
   }
   if (close) dos.close();
 }