internal virtual Membership Join(Guild guild, IModelFactory factory) { var membership = Context.ActivateMembership(guild, factory); guild.AddMember(Context); var nextState = guild.Members.Count == 1 ? new GuildLeaderState(Context, guild) as MemberState : new GuildMemberState(Context, guild); Context.ChangeState(nextState); return(membership); }