         }
     }
     
-    func fullResolutionImageData(completion: NSData? -> ()) {
+    public func fullResolutionImageData(completion: NSData? -> ()) {
         underlyingImageSource.fullResolutionImageData(completion)
     }
     
-    func imageSize(completion: CGSize? -> ()) {
+    public func imageSize(completion: CGSize? -> ()) {
         underlyingImageSource.imageSize(completion)
     }
     
-    func imageFittingSize<T: InitializableWithCGImage>(
+    public func imageFittingSize<T: InitializableWithCGImage>(
         size: CGSize,
         contentMode: ImageContentMode,
         deliveryMode: ImageDeliveryMode,

    
    // MARK: - ImageSource
    
    func fullResolutionImage<T : InitializableWithCGImage>(deliveryMode deliveryMode: ImageDeliveryMode, resultHandler: T? -> ()) {
        
        let cacheKey = "fullResolutionImage"
        

import CoreGraphics
import AvitoDesignKit

public final class CachingImageSource: ImageSource {
    
    private let underlyingImageSource: ImageSource
    private let cache = NSCache()
    
    public init(underlyingImageSource: ImageSource) {
        // Не даем создавать вложенные CachingImageSource
        if let cachingImageSource = underlyingImageSource as? CachingImageSource {
            self.underlyingImageSource = cachingImageSource.underlyingImageSource
