anchor.diff:    STR_VAL = String('<TestEnterMethod>');
     INT_VAL = Integer(777);
   begin
  +  SUT.AllowedItems := SUT.AllowedItems + [liMethod];
  +
     { Case #1 }
   
     SUT.EnterMethod(TMethodHolderObj, @TMethodHolderObj.ProcMethod, [STR_VAL, INT_VAL, Self]);
  
positive.code: 
  procedure TestTLogger.TestLeaveMethod;
  const
    STR_VAL = String('<TestLeaveMethod>');
  begin
    { Case #1 }
  
    SUT.LeaveMethod(TMethodHolderObj, @TMethodHolderObj.ProcMethod, STR_VAL);
  
    CheckEquals(1, FOutput.WrittenLinesCount, 'WrittenLinesCount = 1');
    CheckEquals(1, FOutput.SectionLevel, 'SectionLevel = 1');
    CheckTrue(FOutput.LastWrittenLine.Contains(TMethodHolderObj.ClassName),
      'CheckTrue::LastWrittenLine.Contains(TMethodHolderObj.ClassName)<Case #1>');
    CheckTrue(FOutput.LastWrittenLine.Contains(TMethodHolderObj.MethodName(@TMethodHolderObj.ProcMethod)),
      'CheckTrue::LastWrittenLine.Contains(TMethodHolderObj.MethodName)<Case #1>');
    CheckTrue(FOutput.LastWrittenLine.Contains(STR_VAL), 'CheckTrue::LastWrittenLine.Contains(STR_VAL)<Case #1>');
  
    { Case #2 }
  
    SUT.LeaveMethod(TMethodHolderObj, @TMethodHolderObj.FuncMethod, STR_VAL);
  
    CheckEquals(2, FOutput.WrittenLinesCount, 'WrittenLinesCount = 2');
    CheckEquals(2, FOutput.SectionLevel, 'SectionLevel = 2');
    CheckTrue(FOutput.LastWrittenLine.Contains(TMethodHolderObj.ClassName),
      'CheckTrue::LastWrittenLine.Contains(TMethodHolderObj.ClassName)<Case #2>');
    CheckTrue(FOutput.LastWrittenLine.Contains(TMethodHolderObj.MethodName(@TMethodHolderObj.FuncMethod)),
      'CheckTrue::LastWrittenLine.Contains(TMethodHolderObj.MethodName)<Case #2>');
    CheckTrue(FOutput.LastWrittenLine.Contains(STR_VAL), 'CheckTrue::LastWrittenLine.Contains(STR_VAL)<Case #2>');
  end;
  
  procedure TestTLogger.TestLeaveMethod1;
  const
    STR_VAL = String('<TestLeaveMethod1>');
  begin
    { Case #1 }
  
    SUT.LeaveMethod(TypeInfo(TMethodHolderRec), @TMethodHolderRec.ProcMethod, STR_VAL);
  
    CheckEquals(1, FOutput.WrittenLinesCount, 'WrittenLinesCount = 1');
    CheckEquals(1, FOutput.SectionLevel, 'SectionLevel = 1');
    CheckTrue(FOutput.LastWrittenLine.Contains(GetTypeName(TypeInfo(TMethodHolderRec))),
      'CheckTrue::LastWrittenLine.Contains(GetTypeName)<Case #1>');
    CheckTrue(FOutput.LastWrittenLine.Contains('ProcMethod'),
      'CheckTrue::LastWrittenLine.Contains(<MethodName>)<Case #1>');
    CheckTrue(FOutput.LastWrittenLine.Contains(STR_VAL), 'CheckTrue::LastWrittenLine.Contains(STR_VAL)<Case #1>');
  
    { Case #2 }
  
    SUT.LeaveMethod(TypeInfo(TMethodHolderRec), @TMethodHolderRec.FuncMethod, STR_VAL);
  
    CheckEquals(2, FOutput.WrittenLinesCount, 'WrittenLinesCount = 2');
    CheckEquals(2, FOutput.SectionLevel, 'SectionLevel = 2');
    CheckTrue(FOutput.LastWrittenLine.Contains(GetTypeName(TypeInfo(TMethodHolderRec))),
      'CheckTrue::LastWrittenLine.Contains(GetTypeName)<Case #2>');
    CheckTrue(FOutput.LastWrittenLine.Contains('ProcMethod'),
      'CheckTrue::LastWrittenLine.Contains(<MethodName>)<Case #2>');
    CheckTrue(FOutput.LastWrittenLine.Contains(STR_VAL), 'CheckTrue::LastWrittenLine.Contains(STR_VAL)<Case #2>');
  end;
  
  procedure TestTLogger.TestLog;
  
negative.code:   CheckEquals(2, FOutput.SectionLevel, 'SectionLevel = 2');
    CheckTrue(FOutput.LastWrittenLine.Contains(GetTypeName(TypeInfo(TMethodHolderRec))),
      'CheckTrue::LastWrittenLine.Contains(GetTypeName)<Case #2>');
    CheckTrue(FOutput.LastWrittenLine.Contains('FuncMethod'),
      'CheckTrue::LastWrittenLine.Contains(<MethodName>)<Case #2>');
    CheckTrue(FOutput.LastWrittenLine.Contains(STR_VAL), 'CheckTrue::LastWrittenLine.Contains(STR_VAL)<Case #2>');
    CheckTrue(FOutput.LastWrittenLine.Contains(INT_VAL.ToString), 'CheckTrue::LastWrittenLine.Contains(INT_VAL)<Case #2>');
  