code: public synchronized void close() throws SQLException {
  
          // Changed to synchronized above because
          // we would not want a sessionProxy.close()
          // operation to occur concurrently with a
          // statementXXX.executeXXX operation.
          if (isInternal || isClosed) {
              return;
          }
          isClosed = true;
  
          if (sessionProxy != null) {
              sessionProxy.close();
          }
          sessionProxy   = null;
          rootWarning    = null;
          connProperties = null;
      }
docs: <!-- start generic documentation -->
  
  Releases this <code>Connection</code> object's database and JDBC resources
  immediately instead of waiting for them to be automatically released.
  <P>
  Calling the method <code>close</code> on a <code>Connection</code>
  object that is already closed is a no-op.
  <P>
  It is <b>strongly recommended</b> that an application explicitly
  commits or rolls back an active transaction prior to calling the
  <code>close</code> method.  If the <code>close</code> method is called
  and there is an active transaction, the results are implementation-defined.
  <P>
  
  <!-- end generic documentation -->
  <!-- start release-specific documentation -->
  <div class="ReleaseSpecificDocumentation">
  <h3>HSQLDB-Specific Information:</h3> <p>
  
  From 1.7.2, HSQLDB <code>INTERNAL</code> <code>Connection</code>
  objects are not closable from JDBC client code. <p>
  
  </div> <!-- end release-specific documentation -->
  
  @exception SQLException SQLException if a database access error occurs