anchor.diff:      TCPFClassPtr(FOwner).CPFFreeMem(FMemory);
   
     case Size of
  -       0..32: FAllocatedSize := 32;
  -     33..128: FAllocatedSize := 128;
  -    129..512: FAllocatedSize := 512;
  +       0..64: FAllocatedSize := 64;
  +     65..256: FAllocatedSize := 256;
  +    257..512: FAllocatedSize := 512;
     else
       FAllocatedSize := NativeUInt((NativeInt(Size) + 1023) and -1024);
     end;
  
positive.code:   CPFFreeMem(Pointer(FInfo.Cells));
  
    // sectors
    CPFFreeMem(Pointer(FSectors));
  
    {$ifNdef CPFLIB}
      inherited;
  
negative.code:     function DoFindPathLoop(StartNode: PCPFMapNode): PCPFMapNode;
      function DoFindPath(const Parameters: TPathMapFindParameters): PPathMapResult;
    private
      FActualInfo: record
        TilesChanged: Boolean;
        Sectors: PByte;
        SectorsChanged: Boolean;
        FinishPoint: TPoint;
        PathlessFinishPoint: TPoint;
  
        Weights: record
          Current: PCPFWeights;
          UpdateId: Cardinal;
          Default: PCPFWeights;
        end;
        StartPoints: record
          Buffer: TCPFBuffer;
          Count: NativeUInt;
        end;
        ExcludedPoints: record
          Buffer: TCPFBuffer;
          Count: NativeUInt;
        end;
        FoundPath: record
          Buffer: TCPFBuffer;
          Length: NativeUInt;
          Distance: Double;
        end;
  
        // todo
      end;
  
      function ActualizeWeigths(Weigths: PCPFWeights; Compare: Boolean): Boolean;
      function ActualizeStartPoints(Points: PPoint; Count: NativeUInt; Compare: Boolean): Boolean;
      function ActualizeExcludedPoints(Points: PPoint; Count: NativeUInt; Compare: Boolean): Boolean;
      procedure ActualizeSectors;
      procedure ReleaseAttainableNodes;
      procedure ReleaseHeuristicsNodes;
      procedure ReleaseAllocatedNodes;
    {$ifdef CPFLIB}
    public
      procedure Destroy;
  