code: public function readAsFormInput(?IHttpBody $body): IDictionary
      {
          if ($body === null) {
              return new HashTable();
          }
  
          $parsedFormInputCacheKey = spl_object_hash($body);
  
          if (isset($this->parsedFormInputCache[$parsedFormInputCacheKey])) {
              return $this->parsedFormInputCache[$parsedFormInputCacheKey];
          }
  
          $formInputArray = [];
          parse_str($body->readAsString(), $formInputArray);
          $kvps = [];
  
          foreach ($formInputArray as $key => $value) {
              $kvps[] = new KeyValuePair($key, $value);
          }
  
          // Cache this for next time
          $formInputs = new HashTable($kvps);
          $this->parsedFormInputCache[$parsedFormInputCacheKey] = $formInputs;
  
          return $formInputs;
      }
docs: Parses a request body as form input
  
  @param IHttpBody|null $body The body to parse
  @return IDictionary The body form input as a collection