define class GraphicAbstractObject as custom x = 0 y = 0 function moveTo( newX, newY ) this.AbstractWarn() endfunc function draw() this.AbstractWarn() endfunc function AbstractWarn() if this.class="GraphicAbstractObject" local lcSetAssert lcSetAssert = set("Assert") set Assert on *-- and show the caller's name, not the warning's name: assert .f. Message Program(program(-1)-1) + " should be overwritten !" set Assert &lcSetAssert endif enddefineThe downside of this approach is that the class has to have its abstract level name hardcoded somewhere (either as a property, or in the abstractwarn()).