diff --git a/source/rust_verify/src/automatic_derive.rs b/source/rust_verify/src/automatic_derive.rs
index f843d45d4b..9b077299b0 100644
--- a/source/rust_verify/src/automatic_derive.rs
+++ b/source/rust_verify/src/automatic_derive.rs
@@ -1,11 +1,17 @@
use crate::context::Context;
use crate::verus_items::RustItem;
use rustc_hir::HirId;
+use rustc_hir::def_id::DefId;
+use rustc_middle::ty::TyKind;
use rustc_span::Span;
use std::sync::Arc;
use vir::ast::{
- BinaryOp, Expr, ExprX, FunctionX, Mode, Place, PlaceX, SpannedTyped, VirErr, VirErrAs,
+ Arm, AutospecUsage, BinaryOp, BodyVisibility, CallTarget, CallTargetAttrs, CallTargetKind,
+ CrateId, Expr, ExprX, FieldOpr, Fun, Function, FunctionAttrsX, FunctionKind, FunctionX,
+ GenericBounds, Idents, ImplPaths, ItemKind, Mode, Opaqueness, ParamX, Path, Place, PlaceX,
+ SpannedTyped, Typ, TypX, UnaryOpr, VarIdent, VirErr, VirErrAs, Visibility,
};
+use vir::ast_util::bool_typ;
/// Traits with special handling
#[derive(Clone, Copy, Debug)]
@@ -68,18 +74,19 @@ pub fn modify_derived_item<'tcx>(
hir_id: HirId,
action: &AutomaticDeriveAction,
function: &mut FunctionX,
-) -> Result<(), VirErr> {
+ def_id: DefId,
+) -> Result