LOCAL lcSenderName, lcPreviousStackCmd, loSender, llContinueProceeding llContinueProceeding = .F. lcPreviousStackCmd = PROGRAM(PROGRAM(-1)-1) lcSenderName = SUBSTR(lcPreviousStackCmd, 1, RAT([.],lcPreviousStackCmd)-1) IF !EMPTY(lcSenderName) AND TYPE(lcSenderName)=[O] Then loSender = EVALUATE(lcSenderName) IF PEMSTATUS(loSender, 'ClassLibrary', 5) Then IF loSender.ClassLibrary == This.ClassLibrary Then llContinueProceeding = .T. ENDIF ENDIF ENDIF IF !llContinueProceeding Then RETURN .f. && or maybe raise an ERROR? EndIF *** Your codeNote that in this case this method still can be executed from outside, if the developer subclasses your original class in your library and adds a method that calls the method 'protected' by the code above.
Make solutions, not programs!