anchor.diff:        end;
       PtDefineDirect:
         begin
  -        if FUseDefines then
  +        if FUseDefines and (FDefineStack = 0) then
             AddDefine(DirectiveParam);
           if Assigned(FOnDefineDirect) then
             FOnDefineDirect(Self);
  
positive.code:       end;
      PtUndefDirect:
        begin
          if FUseDefines then
            RemoveDefine(DirectiveParam);
          if Assigned(FOnUnDefDirect) then
            FOnUnDefDirect(Self);
  
negative.code: begin
    { TODO : Expand support for <=> evaluations (complicated to do). Expand support for NESTED expressions }
    LEvaluation := leeNone;
    LParams := TrimLeft(AParams);
    if (Pos('DEFINED(', LParams) = 1) or (Pos('NOT DEFINED(', LParams) = 1) then
    begin
      Result := True; // Optimistic
      while (Pos('DEFINED(', LParams) = 1) or (Pos('NOT DEFINED(', LParams) = 1) do
      begin
  