code: public Version[] getPredecessors() throws RepositoryException
     {
        checkValid();
  
        PropertyData predecessorsData =
           (PropertyData)dataManager.getItemData(nodeData(), new QPathEntry(Constants.JCR_PREDECESSORS, 0),
              ItemType.PROPERTY);
  
        if (predecessorsData == null)
        {
           return new Version[0];
        }
  
        List<ValueData> predecessorsValues = predecessorsData.getValues();
        Version[] predecessors = new Version[predecessorsValues.size()];
  
        for (int i = 0; i < predecessorsValues.size(); i++)
        {
           String videntifier = ValueDataUtil.getString(predecessorsValues.get(i));
           VersionImpl version = (VersionImpl)dataManager.getItemByIdentifier(videntifier, false, false);
           if (version != null)
           {
              predecessors[i] = version;
           }
           else
           {
              throw new RepositoryException("Predecessor version is not found " + videntifier + ", this version "
                 + getPath());
           }
        }
        return predecessors;
     }
docs: {@inheritDoc}