Do not create a new native pointer property if the base class already provides one.
Remove value restriction in handling of class pointers marshals.
Pass the class argument when marshaling methods.
Since now the native pointer of the wrapper class can be of a base class, we need to explicitly cast to the current type.
Refactor code to use the text generator indentation helpers.
Fixed marshaling of reference parameters.