<p dir="auto"><strong>Symfony version(s) affected</strong>: 3.4</p>
<p dir="auto"><strong>Description</strong><br>
<em>Implementing the AuthenticatorInterface instead of extending AbstractGuardAuthenticator still throws deprecated message</em></p>
<p dir="auto">I wrote a class <code class="notranslate">FormAuthenticator</code> that extended the Guard <code class="notranslate">AbstractGuardAuthenticator</code>. After upgrading from 3.3 to 3.4 (as an LTS version), I ran Psalm, which told me that this class was deprecated. It tells me to not extend from Guard <code class="notranslate">AbstractGuardAuthenticator</code>, but instead to implement Guard <code class="notranslate">AuthenticatorInterface</code>. However, the <code class="notranslate">AuthenticatorInterface</code> extends from the <code class="notranslate">GuardAuthenticatorInterface</code>, which is also deprecated.</p>
<p dir="auto"><strong>How to reproduce</strong><br>
Try to implement a Guard implementing the recommended Interface for Symfony 3.4, by using </p><div class="Box Box--condensed my-2">
  <div class="Box-header f6">
    <p class="mb-0 text-bold">
      <a href="https://github.com/symfony/symfony/blob/143bdfc0731fa0db9f9014503c05b960daf7a1c4/src/Symfony/Component/Security/Guard/AuthenticatorInterface.php#L26">symfony/src/Symfony/Component/Security/Guard/AuthenticatorInterface.php</a>
    </p>
    <p class="mb-0 color-fg-muted">
         Line 26
      in
      <a data-pjax="true" class="commit-tease-sha" href="/symfony/symfony/commit/143bdfc0731fa0db9f9014503c05b960daf7a1c4">143bdfc</a>
    </p>
  </div>
  <div itemprop="text" class="Box-body p-0 blob-wrapper blob-wrapper-embedded data">
    <table class="highlight tab-size mb-0 js-file-line-container" data-tab-size="8" data-paste-markdown-skip="">

        <tbody><tr class="border-0">
          <td id="L26" class="blob-num border-0 px-3 py-0 color-bg-default" data-line-number="26"></td>
          <td id="LC26" class="blob-code border-0 px-3 py-0 color-bg-default blob-code-inner js-file-line"> <span class="pl-k">interface</span> <span class="pl-v">AuthenticatorInterface</span> <span class="pl-k">extends</span> <span class="pl-v">GuardAuthenticatorInterface</span> </td>
        </tr>
    </tbody></table>
  </div>
</div>
<p></p>
<p dir="auto"><strong>Possible Solution</strong><br>
Duplicate the code from the Interface, instead of extending the replacement from the deprecated interface.</p>
<p dir="auto">I'm getting "Expected a Boolean." when null is passed in to a form using a checkbox, because the object backing the form is empty and has no data. Why can't null be a valid data passed to the BooleanToStringTransformer?</p>