docs: def get_vault_form_for_create(self, vault_record_types):
          """Gets the vault form for creating new vaults.
  
          A new form should be requested for each create transaction.
  
          arg:    vault_record_types (osid.type.Type[]): array of vault
                  record types
          return: (osid.authorization.VaultForm) - the vault form
          raise:  NullArgument - ``vault_record_types`` is ``null``
          raise:  OperationFailed - unable to complete request
          raise:  PermissionDenied - authorization failure
          raise:  Unsupported - unable to get form qith requested record
                  types
          *compliance: mandatory -- This method must be implemented.*
  
          """
          # Implemented from template for
          # osid.resource.BinAdminSession.get_bin_form_for_create_template
          if self._catalog_session is not None:
              return self._catalog_session.get_catalog_form_for_create(catalog_record_types=vault_record_types)
          for arg in vault_record_types:
              if not isinstance(arg, ABCType):
                  raise errors.InvalidArgument('one or more argument array elements is not a valid OSID Type')
          if vault_record_types == []:
              result = objects.VaultForm(
                  runtime=self._runtime,
                  effective_agent_id=self.get_effective_agent_id(),
                  proxy=self._proxy)  # Probably don't need effective agent id now that we have proxy in form.
          else:
              result = objects.VaultForm(
                  record_types=vault_record_types,
                  runtime=self._runtime,
                  effective_agent_id=self.get_effective_agent_id(),
                  proxy=self._proxy)  # Probably don't need effective agent id now that we have proxy in form.
          self._forms[result.get_id().get_identifier()] = not CREATED
          return result