Description
The behaviour of the DescriptionElement.getTypesElement() method is to return the types element if it exists or if not, create it and return it. This means that the model can never reflect an infoset that does not have a <wsdl:types> element because this getter method will always create one even if there isn't one in the WSDL.
Instead, this method should return null if there is no types element and a new factory method is required - createTypesElement(), which will create a TypesElement, set the DescriptionElement as its parent and return a reference to it. This is similar behaviour to the addXXXXElement methods that create sets of child elements, except that it acts on a single types element only (hence the method name 'create' rather than 'add').