827827function  link!! (vi:: AbstractVarInfo , vns:: VarNameTuple , model:: Model )
828828    return  link!! (default_transformation (model, vi), vi, vns, model)
829829end 
830+ function  link!! (t:: DynamicTransformation , vi:: AbstractVarInfo , model:: Model )
831+     #  Note that in practice this method is only called for SimpleVarInfo, because VarInfo
832+     #  has a dedicated implementation
833+     ctx =  DynamicTransformationContext {false} ()
834+     model =  contextualize (model, setleafcontext (model. context, ctx))
835+     vi =  last (evaluate!! (model, vi))
836+     return  settrans!! (vi, t)
837+ end 
838+ function  link!! (
839+     t:: StaticTransformation{<:Bijectors.Transform} , vi:: AbstractVarInfo , :: Model 
840+ )
841+     b =  inverse (t. bijector)
842+     x =  vi[:]
843+     y, logjac =  with_logabsdet_jacobian (b, x)
844+     #  Set parameters and add the logjac term.
845+     vi =  unflatten (vi, y)
846+     if  hasacc (vi, Val (:LogJacobian ))
847+         vi =  acclogjac!! (vi, logjac)
848+     end 
849+     return  settrans!! (vi, t)
850+ end 
830851
831852""" 
832853    link([t::AbstractTransformation, ]vi::AbstractVarInfo, model::Model) 
846867function  link (vi:: AbstractVarInfo , vns:: VarNameTuple , model:: Model )
847868    return  link (default_transformation (model, vi), vi, vns, model)
848869end 
870+ function  link (t:: DynamicTransformation , vi:: AbstractVarInfo , model:: Model )
871+     return  link!! (t, deepcopy (vi), model)
872+ end 
849873
850874""" 
851875    invlink!!([t::AbstractTransformation, ]vi::AbstractVarInfo, model::Model) 
@@ -866,23 +890,14 @@ end
866890function  invlink!! (vi:: AbstractVarInfo , vns:: VarNameTuple , model:: Model )
867891    return  invlink!! (default_transformation (model, vi), vi, vns, model)
868892end 
869- 
870- #  Vector-based ones.
871- function  link!! (
872-     t:: StaticTransformation{<:Bijectors.Transform} , vi:: AbstractVarInfo , :: Model 
873- )
874-     b =  inverse (t. bijector)
875-     x =  vi[:]
876-     y, logjac =  with_logabsdet_jacobian (b, x)
877- 
878-     #  Set parameters and add the logjac term.
879-     vi =  unflatten (vi, y)
880-     if  hasacc (vi, Val (:LogJacobian ))
881-         vi =  acclogjac!! (vi, logjac)
882-     end 
883-     return  settrans!! (vi, t)
893+ function  invlink!! (:: DynamicTransformation , vi:: AbstractVarInfo , model:: Model )
894+     #  Note that in practice this method is only called for SimpleVarInfo, because VarInfo
895+     #  has a dedicated implementation
896+     ctx =  DynamicTransformationContext {true} ()
897+     model =  contextualize (model, setleafcontext (model. context, ctx))
898+     vi =  last (evaluate!! (model, vi))
899+     return  settrans!! (vi, NoTransformation ())
884900end 
885- 
886901function  invlink!! (
887902    t:: StaticTransformation{<:Bijectors.Transform} , vi:: AbstractVarInfo , :: Model 
888903)
919934function  invlink (vi:: AbstractVarInfo , vns:: VarNameTuple , model:: Model )
920935    return  invlink (default_transformation (model, vi), vi, vns, model)
921936end 
937+ function  invlink (t:: DynamicTransformation , vi:: AbstractVarInfo , model:: Model )
938+     return  invlink!! (t, deepcopy (vi), model)
939+ end 
922940
923941""" 
924942    maybe_invlink_before_eval!!([t::Transformation,] vi, model) 
0 commit comments