anchor.diff:            (make-instance 'shell-lexer-context
                            :stream stream
                            :readtable (lexer-context-readtable context)))
  -         (token (shell-lexer-context-extensible-read-loop inner-context policy-readtable))
  -         (part (make-instance class
  -                              :original-token (dollar-curly-lexer-context-base-token context)
  -                              :replacement-token token
  -                              :include-null-p include-null-p)))
  -    part))
  -
  -(define-data conditional-replacement-policy (token)
  -  ((original-token
  -    :initarg :original-token
  -    :reader conditional-replacement-policy-original-token
  -    :initform (required))
  -   (replacement-token
  +         (replacement-token (shell-lexer-context-extensible-read-loop inner-context policy-readtable))
  +         (base-token (dollar-curly-lexer-context-base-token context)))
  +    (make-instance class
  +                   :variable (variable-expansion-word-variable base-token)
  +                   :length-p (variable-expansion-word-length-p base-token)
  +                   :replacement-token replacement-token
  +                   :include-null-p include-null-p)))
  +
  +(define-data conditional-replacement-policy (variable-expansion-word)
  +  ((replacement-token
       :initarg :replacement-token
       :reader conditional-replacement-policy-replacement-token
       :initform (required))
  
positive.code:     :initform nil)))
  (defmethod print-object ((policy conditional-replacement-policy) stream)
    (print-unreadable-object (policy stream :type t)
      (when-let ((include-null-p (conditional-replacement-policy-include-null-p policy)))
        (declare (ignore include-null-p))
        (format stream ":include-null-p "))
      (format stream "~S ~S" (conditional-replacement-policy-original-token policy)
              (conditional-replacement-policy-replacement-token policy))))
  
  (define-data default-value-policy (conditional-replacement-policy)
  
negative.code: (defun handle-alternate-policy (stream initiation-sequence context)
    (generic-policy-handler stream initiation-sequence context 'alternate-value-policy))
  
  (defun end-variable-expansion-word-with-policy (stream initiation-sequence context)
    (declare (ignore stream initiation-sequence))
    (lexer-context-mark-end-of-token context)
    nil)
  
  (defun end-variable-expansion-word-policy-free (stream initiation-sequence context)
    (declare (ignore stream initiation-sequence))
    (lexer-context-mark-end-of-token context)
    (dollar-curly-lexer-context-base-token  context))
  
  (defparameter *quote-table*
    (as-> *empty-dispatch-table* x
  