code: void close() {
          if (this.project != null) {
              Util.logger().log(Level.FINE, "Closing Protege project {0}",
                      this.projectIdentifier);
  
              for (Iterator<ProjectListener> itr =
                           this.projectListeners.iterator(); itr.hasNext(); ) {
                  this.project.removeProjectListener(itr.next());
                  itr.remove();
              }
              try {
                  this.project.dispose();
                  Util.logger().fine("Done closing connection.");
              } catch (IllegalStateException e) {
                  /*
                   * Protege registers a shutdown hook that is removed when
                   * dispose() is called on a project. However, we might call this
                   * method during an already started shutdown process. See
                   * documentation for java.lang.Runtime.removeShutdownHook. This
                   * exception should be harmless, unless there are other reasons
                   * dispose() could throw this exception?
                   */
                  Util.logger().fine("Done closing connection.");
              } finally {
                  this.project = null;
              }
  
          }
      }
docs: Closes the project.