code: public static <T> ElementDescriptor<T> registerWithParents(QualifiedName qname, IObjectBuilder<T> builder, ElementDescriptor<?>... parentElements)
  	{
  		if (parentElements == null || parentElements.length == 0)
  		{
  			throw new IllegalArgumentException("no parent elements provided");
  		}
  
  		// create the new descriptor with the context of the first parent
  		ElementDescriptor<T> descriptor = new ElementDescriptor<T>(qname, builder, parentElements[0].getContext());
  
  		// register the descriptor with all parents
  		for (ElementDescriptor<?> parentElement : parentElements)
  		{
  			if (descriptor.getContext() != parentElement.getContext())
  			{
  				throw new IllegalArgumentException("Parent descriptors don't belong to the same XmlContext");
  			}
  			Map<QualifiedName, ElementDescriptor<?>> descriptorMap = parentElement.mElementContext;
  
  			if (descriptorMap == null)
  			{
  				descriptorMap = parentElement.mElementContext = Collections.synchronizedMap(new HashMap<QualifiedName, ElementDescriptor<?>>(8));
  			}
  			else if (descriptorMap.containsKey(qname))
  			{
  				throw new IllegalStateException("descriptor for " + qname + " already exists in parent " + parentElement.qualifiedName);
  			}
  
  			descriptorMap.put(qname, descriptor);
  		}
  		return descriptor;
  	}
docs: Register an element with the given {@link QualifiedName} using the given {@link IObjectBuilder} in the context of the given parent
  {@link ElementDescriptor}s. An element that is registered with this method will not be available in a general {@link XmlContext}, but only when providing
  the parent {@link ElementDescriptor} using {@link #get(QualifiedName, ElementDescriptor)} or {@link #get(QualifiedName, ElementDescriptor, XmlContext)}.
  <p>
  Note: All parents must be registered within in the same {@link XmlContext}.
  </p>
  
  @param qname
  The {@link QualifiedName} of the element.
  @param builder
  The {@link IObjectBuilder} to build and serialize this element.
  @param parentElements
  The {@link ElementDescriptor}s of the parent elements to register the new element with.
  @return The {@link ElementDescriptor}.