@java.lang.Override
    public Builder clear() {
      super.clear();
      bitField0_ = 0;
      if (functionDeclarationsBuilder_ == null) {
        functionDeclarations_ = java.util.Collections.emptyList();
      } else {
        functionDeclarations_ = null;
        functionDeclarationsBuilder_.clear();
      }
      bitField0_ = (bitField0_ & ~0x00000001);
      retrieval_ = null;
      if (retrievalBuilder_ != null) {
        retrievalBuilder_.dispose();
        retrievalBuilder_ = null;
      }
      googleSearch_ = null;
      if (googleSearchBuilder_ != null) {
        googleSearchBuilder_.dispose();
        googleSearchBuilder_ = null;
      }
      googleSearchRetrieval_ = null;
      if (googleSearchRetrievalBuilder_ != null) {
        googleSearchRetrievalBuilder_.dispose();
        googleSearchRetrievalBuilder_ = null;
      }
      enterpriseWebSearch_ = null;
      if (enterpriseWebSearchBuilder_ != null) {
        enterpriseWebSearchBuilder_.dispose();
        enterpriseWebSearchBuilder_ = null;
      }
      codeExecution_ = null;
      if (codeExecutionBuilder_ != null) {
        codeExecutionBuilder_.dispose();
        codeExecutionBuilder_ = null;
      }
      return this;
    }
<pre>
Tool details that the model may use to generate response.

A `Tool` is a piece of code that enables the system to interact with
external systems to perform an action, or set of actions, outside of
knowledge and scope of the model. A Tool object should contain exactly
one type of Tool (e.g FunctionDeclaration, Retrieval or
GoogleSearchRetrieval).
</pre>

Protobuf type {@code google.cloud.vertexai.v1.Tool}
java-vertexai/proto-google-cloud-vertexai-v1/src/main/java/com/google/cloud/vertexai/api/Tool.java