What I understand from an abstract type should have:

   *   simpleContent
   *   complexContent

In our case, it is complex content, but saved as simple type.

So this is changed in branch [bug584bfb7727-abstract-type] by commit [6975d0e818].

This results in a complex type definition for tns1:Envelope with the attributes:

<verbatim>
typeInfo client $service tns1:envelope {
    definition {}
    xns tns1
    abstract true
}
</verbatim>

The result is still the same. This does not help and there is more work necessary.

But here is the log of the WSDL parse of envelope type:

<verbatim>
Entering parseComplexType Client serviceInfo 1 domNode053DBE0C tns1
Complex Type is tns1:Envelope
	 Abstract type = true
Complex Type is tns1:Envelope, middle is annotation
Complex Type is tns1:Envelope, middle is complexContent
isComplexContent := 1
Content Type is {extension}
Calling partList for extension of tns1:Envelope
Entering partList Client domNode053DBEBC 1 results tns1 -- for extension
	 base name of extension is {tns1:Geometry} with typeinfo {0 0}
	 Simple type
partList for extension of tns1:Envelope is {{}}
at end of foreach {tns1:Envelope} with {}
Defining tns1:Envelope as
Entering ::WS::Utils::ServiceTypeDef Client 1 tns1:Envelope {} tns1 true
</verbatim>