public ICommand Decorate(ICommand command) { IPrincipal principal = Thread.CurrentPrincipal; if (null == principal) { return command; } return new PrincipalRecoveryCommand(command, principal); }