Duplicating functions is not very robust.
If you create a function in blueprint A that has a local variable that is a pointer to another blueprint localB and use that variable to access member functions e.g.
localB → foo()
it seems to get very confused.