def METHOD_NAME(
    self, schema_field: SchemaFieldClass, server_field: Optional[SchemaFieldClass]
) -> SchemaFieldClass:
    all_terms = self.config.get_terms_to_add(schema_field.fieldPath)
    if len(all_terms) == 0:
        # return input schema field as there is no terms to add
        return schema_field
    # Add existing terms if user want to keep them
    if (
        schema_field.glossaryTerms is not None
        and self.config.replace_existing is False
    ):
        all_terms.extend(schema_field.glossaryTerms.terms)
    terms_to_add: List[GlossaryTermAssociationClass] = []
    server_terms: List[GlossaryTermAssociationClass] = []
    if server_field is not None and server_field.glossaryTerms is not None:
        # Go for patch
        server_terms = server_field.glossaryTerms.terms
        server_term_urns = [term.urn for term in server_terms]
        for term in all_terms:
            if term.urn not in server_term_urns:
                terms_to_add.append(term)
    # Set terms_to_add to all_terms if server terms were not present
    if len(terms_to_add) == 0:
        terms_to_add = all_terms
    new_glossary_term = GlossaryTermsClass(
        terms=[],
        auditStamp=schema_field.glossaryTerms.auditStamp
        if schema_field.glossaryTerms is not None
        else AuditStampClass(
            time=builder.get_sys_time(), actor="urn:li:corpUser:restEmitter"
        ),
    )
    new_glossary_term.terms.extend(terms_to_add)
    new_glossary_term.terms.extend(server_terms)
    schema_field.glossaryTerms = new_glossary_term
    return schema_field