public List<AndroidSDK> getSDKList() {
      if (buffer == null || buffer.length() < 1) return null;

      StringReader reader = new StringReader(buffer.toString());
      BufferedReader read = new BufferedReader(reader);
      ArrayList<AndroidSDK> sdkList = new ArrayList<AndroidSDK>();

      String line = null;
      try {
        AndroidSDK sdk = null;
        while ((line = read.readLine()) != null) {
          final int scolIdx = line.indexOf(':');
          if (scolIdx < 0) {
            continue;
          }
          String[] pair = new String[2];
          pair[0] = line.substring(0, scolIdx).trim();
          pair[1] = line.substring(scolIdx + 1).trim();
          if ("id".equalsIgnoreCase(pair[0])) {
            sdk = new AndroidSDK();
            sdkList.add(sdk);
            int vIndex = pair[1].indexOf("or");
            sdk.setId(pair[1].substring(vIndex + "or".length()).replace("\"", ""));
          } else if ("Type".equalsIgnoreCase(pair[0])) {
            Assert.isNotNull(sdk);
            sdk.setType(pair[1].trim());
          } else if ("API level".equalsIgnoreCase(pair[0])) {
            Assert.isNotNull(sdk);
            sdk.setApiLevel(Integer.parseInt(pair[1]));
          }
        }
      } catch (IOException e) {
        AndroidCore.log(IStatus.ERROR, "Error parsing the SDK list", e);
      } finally {
        try {
          read.close();
          reader.close();
        } catch (IOException e) {
          // ignored
        }
      }
      return sdkList;
    }