//----------------------------------------------------------------------------------------------------------------------------------------------------- protected ISyntaxEmitter CreateMemberSyntaxEmitter(AbstractMember member) { if (member is FieldMember field) { return(new FieldSyntaxEmitter(field)); } if (member is ConstructorMember constructor) { return(new ConstructorSyntaxEmitter(constructor)); } if (member is MethodMember method) { return(new MethodSyntaxEmitter(method)); } if (member is PropertyMember property) { return(new PropertySyntaxEmitter(property)); } if (member is EventMember @event) { return(new EventSyntaxEmitter(@event)); } if (member is TypeMember type) { return(TypeSyntaxEmitter.GetSyntaxEmitter(type)); } throw new ArgumentException($"Syntax emitter is not supported for members of type {member.GetType().Name}"); }