anchor.diff:  
   final RegExp _dotHomeStudioVersionMatcher =
       RegExp(r'^\.(AndroidStudio[^\d]*)([\d.]+)');
  -final RegExp _pathsSelectorMatcher =
  -    RegExp(r'"idea.paths.selector" = "AndroidStudio[^;]+"');
   
   String get javaPath => androidStudio?.javaPath;
   
   class AndroidStudio implements Comparable<AndroidStudio> {
     AndroidStudio(this.directory,
  -      {Version version, this.configured, this.studioAppName = 'AndroidStudio', this.pathsSelectorPath})
  +      {Version version, this.configured, this.studioAppName = 'AndroidStudio', this.presetPluginsPath})
         : version = version ?? Version.unknown {
       _init();
     }
   
     factory AndroidStudio.fromMacOSBundle(String bundlePath) {
  -    final String studioPath = fs.path.join(bundlePath, 'Contents');
  -    final String plistFile = fs.path.join(studioPath, 'Info.plist');
  +    String studioPath = fs.path.join(bundlePath, 'Contents');
  +    String plistFile = fs.path.join(studioPath, 'Info.plist');
  +    String plistValue = iosWorkflow.getPlistValueFromFile(
  +      plistFile,
  +      null,
  +    );
  +    final RegExp _pathsSelectorMatcher = RegExp(r'"idea.paths.selector" = "[^;]+"');
  +    final RegExp _jetBrainsToolboxAppMatcher = RegExp(r'JetBrainsToolboxApp = "[^;]+"');
  +    // As AndroidStudio managed by JetBrainsToolbox could have a wrapper pointing to the real Android Studio.
  +    // Check if we've found a JetBrainsToolbox wrapper and deal with it properly.
  +    final String jetBrainsToolboxAppBundlePath = extractStudioPlistValueWithMatcher(plistValue, _jetBrainsToolboxAppMatcher);
  +    if (jetBrainsToolboxAppBundlePath != null) {
  +      studioPath = fs.path.join(jetBrainsToolboxAppBundlePath, 'Contents');
  +      plistFile = fs.path.join(studioPath, 'Info.plist');
  +      plistValue = iosWorkflow.getPlistValueFromFile(
  +        plistFile,
  +        null,
  +      );
  +    }
  +
       final String versionString = iosWorkflow.getPlistValueFromFile(
         plistFile,
         plist.kCFBundleShortVersionStringKey,
  
positive.code:   bool get isValid => _isValid;
  
    String get pluginsPath {
      if (_pluginsPath == null) {
        final int major = version.major;
        final int minor = version.minor;
        if (platform.isMacOS) {
          _pluginsPath = fs.path.join(
              homeDirPath,
              'Library',
              'Application Support',
              '$pathsSelectorPath');
        } else {
          _pluginsPath = fs.path.join(homeDirPath,
              '.$studioAppName$major.$minor',
              'config',
              'plugins');
        }
      }
      return _pluginsPath;
    }
  
    List<String> get validationMessages => _validationMessages;
  
negative.code:     return studios;
    }
  
    static String extractStudioPlistValueWithMatcher(String plistValue, RegExp keyMatcher) {
      if (plistValue == null || keyMatcher == null) {
        return null;
      }
      return keyMatcher?.stringMatch(plistValue)?.split('=')?.last?.trim()?.replaceAll('"', '');
    }
  
    void _init() {
      _isValid = false;
      _validationMessages.clear();
  