code: @Override
      public ENTRY register(final ENTRY entry) throws CouldNotPerformException {
          if (entry == null) {
              throw new NotAvailableException("entry");
          }
          log("Register " + entry + "...");
          try {
              checkWriteAccess();
              lock();
              try {
                  try {
                      if (entryMap.containsKey(entry.getId())) {
                          throw new CouldNotPerformException("Could not register " + entry + "! Entry with same Id[" + entry.getId() + "] already registered!");
                      }
                      sandbox.register(entry);
                      pluginPool.beforeRegister(entry);
                      entryMap.put(entry.getId(), entry);
                      finishTransaction();
                      pluginPool.afterRegister(entry);
                  } finally {
                      syncSandbox();
                  }
              } finally {
                  unlock();
              }
          } catch (CouldNotPerformException ex) {
              throw new CouldNotPerformException("Could not register " + entry + " in " + this + "!", ex);
          }
          notifySuccessfulTransaction();
          notifyObservers();
          return get(entry);
      }
docs: {@inheritDoc}
  
  @param entry {@inheritDoc}
  
  @return {@inheritDoc}
  
  @throws CouldNotPerformException {@inheritDoc}