These API specification versions may be used to indicate that a module
requires a certain API feature in order to function. For example, if you
see here a feature you need which is labelled 1.20, your
manifest should contain in its main attributes the line:

Added a method {@link org.netbeans.api.autoupdate.UpdateUnit#getVisibleAncestor} which returns a visible plugin
which depending upon this unit. Returns a unit if this unit is installed in the system and some of visible
units depending upon this one, otherwise returns null.

InstallSupport find out the right directory where a plugin
should be installed. After that it checks if an user has privilege to write there.
In the case a lack of write permission, throws
{@link org.netbeans.api.autoupdate.OperationException.WRITE_PERMISSION}.

Beside this it allows to write into
userdir as a fallback in the case of insufficient privilege.

URL:http://.../... to specify a download location (may be repeated to offer alternatives)

You can embed system properties in a URL using Ant-like syntax: http://.../feature-for-${java.specification.version}.nbm

The <makenbm> Ant task will automatically
avoid packing the actual file if the *.external
variant is also in the input cluster.

For convenience, the org.netbeans.modules.maven.embedder
module (if present) can also handle URLs of the forms
m2:/org.grp:art:1.0:jar or m2:/org.grp:art:1.0:jar:javadoc
which can take advantage of the local repository as a cache.

New operation type - OperationSupport.OperationType.INTERNAL_UPDATE is introduced.
This operation can be used to find out elements which have updates and
which the particular element has the dependency on.