anchor.diff:    sl:TstringList;
   begin
     IncludeDirective := Token;
  -  if Length(IncludeDirective) > Length('{$I }') then
  -  begin
  -    IndludeFileName := Trim(Copy(IncludeDirective, 5, Length(IncludeDirective) - 5));
  -    Content := FIncludeHandler.GetIncludeFileContent(IndludeFileName) + #10#13;
  -
  -    Origin := FOrigin;
  -    GetMem(pBehindIncludedContent, INCLUDE_BUFFER_SIZE);
  -    try
  -      StrPCopy(pBehindIncludedContent, MidStr(Origin, Run+1, Length(Origin)));
  -      BehindIncludedContent := pBehindIncludedContent;
  -      Run := Run - Length(IncludeDirective);
  -      EndOfIncludedArea := Run + Length(Content);
  -
  -      //for CurrentChar in Content do
  -      i:=1;
  -      while i <= Length(Content) do
  -      begin
  -        if Content[i] = #10 then
  -          Inc(IncludedLineCount)
  -        else if Content[i] = #13 then
  -        begin
  -          Inc(IncludedLineCount);
  -          if Content[i+1] = #10 then
  -            inc(i);
  -        end;
  -
  -        inc(i);
  -      end;
  -
  -      Content := Content + BehindIncludedContent;
  -      StrPCopy(@FOrigin[Run], Content);
  -
  -      FOrigin[Run + Length(Content)] := #0;
  -      sl := TstringList.Create;
  -      sl.Text := FOrigin;
  -      sl.SaveToFile('d:\inc.test.pas');
  -      sl.Free;
  -
  -      Next;
  -    finally
  -      FreeMem(pBehindIncludedContent);
  +  IndludeFileName := GetIncludeFileNameFromToken(IncludeDirective);
  +  Content := FIncludeHandler.GetIncludeFileContent(IndludeFileName) + #10#13;
  +
  +  Origin := FOrigin;
  +  GetMem(pBehindIncludedContent, INCLUDE_BUFFER_SIZE);
  +  try
  +    StrPCopy(pBehindIncludedContent, MidStr(Origin, Run+1, Length(Origin)));
  +    BehindIncludedContent := pBehindIncludedContent;
  +    Run := Run - Length(IncludeDirective);
  +    EndOfIncludedArea := Run + Length(Content);
  +
  +    i := 1;
  +    while i <= Length(Content) do
  +    begin
  +      if Content[i] = #10 then
  +        Inc(IncludedLineCount)
  +      else if Content[i] = #13 then
  +      begin
  +        Inc(IncludedLineCount);
  +        if (i+1 <= Length(Content)) and (Content[i+1] = #10) then
  +          inc(i);
  +      end;
  +
  +      inc(i);
       end;
  +
  +    Content := Content + BehindIncludedContent;
  +    StrPCopy(@FOrigin[Run], Content);
  +
  +    FOrigin[Run + Length(Content)] := #0;
  +    sl := TstringList.Create;
  +    sl.Text := FOrigin;
  +    sl.SaveToFile('d:\inc.test.pas');
  +    sl.Free;
  +
  +    Next;
  +  finally
  +    FreeMem(pBehindIncludedContent);
     end;
   end;
   
  
positive.code:   Result := UpperCase(Result);
  end;
  
  procedure TmwBasePasLex.IncludeFile;
  var
    IndludeFileName, IncludeDirective, Content, Origin, BehindIncludedContent: string;
  
negative.code:     function HashValue(AChar: Char): Integer;
      function EvaluateConditionalExpression(const AParams: String): Boolean;
      procedure IncludeFile;
      function GetIncludeFileNameFromToken(const IncludeToken: string): string;
    protected
      procedure SetLine(const Value: string); virtual;
      procedure SetOrigin(NewValue: PChar); virtual;
  