private void ensureFrameworkLoaded(final VirtualFile bridgeSupport) {
   String version = bridgeSupport.getParent().getName();
   List<FrameworkInfo> frameworkInfos = ContainerUtil.newArrayList();
   for (VirtualFile file : bridgeSupport.getChildren()) {
     final String name = file.getNameWithoutExtension();
     if (RubyMotionUtil.getInstance().isIgnoredFrameworkName(name)) continue;
     if ("bridgesupport".equals(file.getExtension()) && file.getLength() > 0) {
       boolean isOSX = "osx".equals(file.getParent().getParent().getParent().getName());
       frameworkInfos.add(new FrameworkInfo(name, version, isOSX, file.getPath()));
     }
   }
   myFrameworks.put(version, frameworkInfos);
 }
 private synchronized void ensureFrameworksLoaded() {
   if (!myFrameworks.isEmpty()) {
     return;
   }
   VirtualFile rubyMotion =
       VirtualFileUtil.findFileBy(RubyMotionUtil.getInstance().getRubyMotionPath() + "/data/ios/");
   rubyMotion =
       rubyMotion == null
           ? VirtualFileUtil.findFileBy(
               RubyMotionUtil.getInstance().getRubyMotionPath() + "/data/")
           : rubyMotion;
   loadSdks(rubyMotion);
   if (rubyMotion == null || !"ios".equals(rubyMotion.getName())) {
     return;
   }
   rubyMotion =
       VirtualFileUtil.findFileBy(
           RubyMotionUtil.getInstance().getRubyMotionPath() + "/data/android/");
   loadSdks(rubyMotion);
   rubyMotion =
       VirtualFileUtil.findFileBy(RubyMotionUtil.getInstance().getRubyMotionPath() + "/data/osx/");
   loadSdks(rubyMotion);
 }