code: protected T callMethod(IFacebookMethod method, Collection<Pair<String, CharSequence>> paramPairs)
      throws FacebookException, IOException {
      HashMap<String, CharSequence> params =
        new HashMap<String, CharSequence>(2 * method.numTotalParams());
  
      params.put("method", method.methodName());
      params.put("api_key", _apiKey);
      params.put("v", TARGET_API_VERSION);
  
      String format = getResponseFormat();
      if (null != format) {
        params.put("format", format);
      }
  
      if (method.requiresSession()) {
        params.put("call_id", Long.toString(System.currentTimeMillis()));
        params.put("session_key", _sessionKey);
      }
      CharSequence oldVal;
      for (Pair<String, CharSequence> p : paramPairs) {
        oldVal = params.put(p.first, p.second);
        if (oldVal != null)
          System.err.printf("For parameter %s, overwrote old value %s with new value %s.", p.first,
                            oldVal, p.second);
      }
  
      assert (!params.containsKey("sig"));
      String signature =
        generateSignature(FacebookSignatureUtil.convert(params.entrySet()), method.requiresSession());
      params.put("sig", signature);
  
      boolean doHttps = this.isDesktop() && FacebookMethod.AUTH_GET_SESSION.equals(method);
      InputStream data = method.takesFile() 
        ? postFileRequest(method.methodName(), params) 
        : postRequest(method.methodName(), params, doHttps, /*doEncode*/true);
      return parseCallResult(data, method);
    }
docs: Call the specified method, with the given parameters, and return a DOM tree with the results.
  
  @param method the fieldName of the method
  @param paramPairs a list of arguments to the method
  @throws Exception with a description of any errors given to us by the server.