public override bool Execute(EntityPool pool, ExecutionContext ctx) { Vec3?loc; var rs = pool.CheckFindAndRemove(Target, e => ctx.CheckM("Removal", Target.Position, e), out loc); switch (rs) { case EntityPool.Result.NoError: return(true); case EntityPool.Result.IDNotFoundLocationMismatch: case EntityPool.Result.IDNotFound: case EntityPool.Result.VerificationFailed: return(false); //do not distinbuish. these errors could all be either caused by bad node states OR bad entity behavior default: throw new IntegrityViolation(Target + ": Unsupported CheckFindAndRemove() return value (" + rs + ")"); } }