code: @BetaApi
    public final Operation patchFirewall(
        ProjectGlobalFirewallName firewall, Firewall firewallResource, List<String> fieldMask) {
  
      PatchFirewallHttpRequest request =
          PatchFirewallHttpRequest.newBuilder()
              .setFirewall(firewall == null ? null : firewall.toString())
              .setFirewallResource(firewallResource)
              .addAllFieldMask(fieldMask)
              .build();
      return patchFirewall(request);
    }
docs: Updates the specified firewall rule with the data included in the request. This method supports
  PATCH semantics and uses the JSON merge patch format and processing rules.
  
  <p>Sample code:
  
  <pre><code>
  try (FirewallClient firewallClient = FirewallClient.create()) {
  ProjectGlobalFirewallName firewall = ProjectGlobalFirewallName.of("[PROJECT]", "[FIREWALL]");
  Firewall firewallResource = Firewall.newBuilder().build();
  List&lt;String&gt; fieldMask = new ArrayList&lt;&gt;();
  Operation response = firewallClient.patchFirewall(firewall, firewallResource, fieldMask);
  }
  </code></pre>
  
  @param firewall Name of the firewall rule to patch.
  @param firewallResource Represents a Firewall resource.
  @param fieldMask The fields that should be serialized (even if they have empty values). If the
  containing message object has a non-null fieldmask, then all the fields in the field mask
  (and only those fields in the field mask) will be serialized. If the containing object does
  not have a fieldmask, then only non-empty fields will be serialized.
  @throws com.google.api.gax.rpc.ApiException if the remote call fails