code: public DeterministicKey dropParent() {
          DeterministicKey key = new DeterministicKey(getPath(), getChainCode(), pub, priv, null);
          key.parentFingerprint = parentFingerprint;
          return key;
      }
docs: <p>Returns the same key with the parent pointer removed (it still knows its own path and the parent fingerprint).</p>
  
  <p>If this key doesn't have private key bytes stored/cached itself, but could rederive them from the parent, then
  the new key returned by this method won't be able to do that. Thus, using dropPrivateBytes().dropParent() on a
  regular DeterministicKey will yield a new DeterministicKey that cannot sign or do other things involving the
  private key at all.</p>