call MarshalVisitor recursively not self.cls
fix handling of types when None