also recursively patch "self"