anchor.diff:  
         // Do we have this in the positive cache?
         if( ByIpAddrTree.Find( TestTuple)) then begin
  -         Result:= ByIpAddrTree.Value().Name;
  +         Result:= ByIpAddrTree.Value;
            exit;
         end;
   
         // Do we hav it in the negative cache?
         if( ByIpAddrNfTree.Find( TestTuple)) then begin
  -         Result:= ByIpAddrNfTree.Value().Name;
  +         Result:= ByIpAddrNfTree.Value;
            exit;
         end;
   
  
positive.code:       public
           constructor Create();
           destructor  Destroy(); override;
           function    Lookup( NameOrIp: string): string;
           function    ForwardLookup( Name: string): word32;
           function    ReverseLookup( IpW32: word32): string;
        private
           // procedure   DumpTree( Tree: tDnsTupleTree);
        end; // tDnsSimpleCache class
  
  
  
  
negative.code:       end else begin
           ByIpAddrNfTree.Add( TestTuple);
        end;
        result:= TestTuple;
        TupleList.Queue:= TestTuple;
        
        // We used TestTuple, so we need to create a new one.
        TestTuple:= tDnsTuple.Create();
     end; // DnsTupleReverseLookup()
  
  
  // *************************************************************************
  // * Lookup() - Do a DNS forward or reverse DNS lookup depending on the 
  // *            contents of NameOrIp.
  // *************************************************************************
  
  function tDnsSimpleCache.Lookup( NameOrIp: string): string;
     var
        IpW32:  word32;
     begin
        if( Length( NameOrIP) < 0) then NameOrIp:= 'unresolved';
  
        if( NameOrIp[ 1] in NumChrs) then begin
           IpW32:= IPStringToWord32( NameOrIp);
           result:= DnsTupleReverseLookup( IpW32).Name;
        end else begin
           result:= DnsTupleForwardLookup( NameorIp).IpStr;
        end;
     end; // Lookup()
  
  
  // *************************************************************************
  // * ForwardLookup() - Do a DNS forward (Name to IP Address) lookup.
  // *************************************************************************
  
  function tDnsSimpleCache.ForwardLookup( Name: string): word32;
     var
        MyTuple: tDnsTuple;
     begin
        MyTuple:= DnsTupleForwardLookup( Name);
        result:= MyTuple.IpW32;
     end; // ForwardLookup()
  
  
  // *************************************************************************
  // * ReverseLookup() - Do a DNS reverse (IP address to name) lookup
  // *************************************************************************
  
  function tDnsSimpleCache.ReverseLookup( IpW32: word32): string;
     var
        MyTuple: tDnsTuple;
     begin
        MyTuple:= DnsTupleReverseLookup( IpW32);
        result:= MyTuple.Name;
     end; // ReverseLookup()
  
  
  