code: public void add(PropertyData data, ChangedSizeHandler sizeHandler) throws RepositoryException,
        UnsupportedOperationException, InvalidItemStateException, IllegalStateException
     {
        checkIfOpened();
  
        try
        {
           addPropertyRecord(data);
  
           if (data.getType() == PropertyType.REFERENCE)
           {
              try
              {
                 addReference(data);
              }
              catch (IOException e)
              {
                 throw new RepositoryException("Can't read REFERENCE property (" + data.getQPath() + " "
                    + data.getIdentifier() + ") value: " + e.getMessage(), e);
              }
           }
  
           addValues(getInternalId(data.getIdentifier()), data, sizeHandler);
  
           if (LOG.isDebugEnabled())
           {
              LOG.debug("Property added " + data.getQPath().getAsString() + ", " + data.getIdentifier()
                 + (data.getValues() != null ? ", values count: " + data.getValues().size() : ", NULL data"));
           }
  
        }
        catch (IOException e)
        {
           if (LOG.isDebugEnabled())
           {
              LOG.error("Property add. IO error: " + e, e);
           }
           throw new RepositoryException("Error of Property Value add " + e, e);
        }
        catch (SQLException e)
        {
           if (LOG.isDebugEnabled())
           {
              LOG.error("Property add. Database error: " + e, e);
           }
           exceptionHandler.handleAddException(e, data);
        }
     }
docs: {@inheritDoc}