Index: generic/nsf.c =================================================================== diff -u -r543954d52fb14cd2e8796a5c9e6bec60fd454291 -r96e318fb438fdc1bd75b09307fdb535cc93f6323 --- generic/nsf.c (.../nsf.c) (revision 543954d52fb14cd2e8796a5c9e6bec60fd454291) +++ generic/nsf.c (.../nsf.c) (revision 96e318fb438fdc1bd75b09307fdb535cc93f6323) @@ -13298,8 +13298,14 @@ #if 1 if (subMethodCmd != NULL) { - unsigned long cmdFlags = (unsigned long)Tcl_Command_flags(subMethodCmd); - if (unlikely((cmdFlags & NSF_CMD_CALL_PROTECTED_METHOD) != 0u)) { + unsigned long cmdFlags = (unsigned long)Tcl_Command_flags(subMethodCmd); + + if (((cscPtr->flags & (NSF_CM_LOCAL_METHOD|NSF_CM_IGNORE_PERMISSIONS)) == 0u + && ((unsigned int)Tcl_Command_flags(subMethodCmd) & NSF_CMD_CALL_PRIVATE_METHOD) != 0u) + ) { + fprintf(stderr, "private ensemble method %p %s\n", subMethodCmd, methodName); + subMethodCmd = NULL; + } else if (unlikely((cmdFlags & NSF_CMD_CALL_PROTECTED_METHOD) != 0u)) { NsfObject *lastSelf; Tcl_CallFrame *framePtr0; int withinEnsemble = ((cscPtr->frameType & NSF_CSC_TYPE_ENSEMBLE) != 0u);