code: @Override
      public synchronized ISession getSession(final SessionConfiguration pSessionConf) throws TTException {
  
          final File resourceFile =
              new File(new File(mStorageConfig.mFile, StorageConfiguration.Paths.Data.getFile().getName()),
                  pSessionConf.getResource());
          Session returnVal = mSessions.get(pSessionConf.getResource());
          if (returnVal == null) {
              checkState(resourceFile.exists(),
                  "Resource could not be opened (since it was not created?) at location %s", resourceFile);
              ResourceConfiguration config =
                  ResourceConfiguration.deserialize(mStorageConfig.mFile, pSessionConf.getResource());
              config.mBackend.initialize();
              // reading first reference and instantiate this.
              final IBackendReader backendReader = config.mBackend.getReader();
              UberBucket bucket = backendReader.readUber();
              backendReader.close();
  
              returnVal = new Session(this, config, pSessionConf, bucket);
              mSessions.put(pSessionConf.getResource(), returnVal);
          }
          return returnVal;
      }
docs: {@inheritDoc}