public boolean addNamespaceDeclaration(final Namespace additionalNamespace) {

		if (additionalNamespaces == null) {
			additionalNamespaces = new ArrayList<Namespace>(INITIAL_ARRAY_SIZE);
		}
		
		for (Namespace ns : additionalNamespaces) {
			if (ns == additionalNamespace) {
				return false;
			}
		}

		// Verify the new namespace prefix doesn't collide with another
		// declared namespace, an attribute prefix, or this element's prefix
		final String reason = Verifier.checkNamespaceCollision(additionalNamespace, this);
		if (reason != null) {
			throw new IllegalAddException(this, additionalNamespace, reason);
		}

		return additionalNamespaces.add(additionalNamespace);
	}