/* * Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ package com.amazonaws.services.polly.model; import java.io.Serializable; /** *

* Description of the voice. *

*/ public class Voice implements Serializable { /** *

* Gender of the voice. *

*

* Constraints:
* Allowed Values: Female, Male */ private String gender; /** *

* Amazon Polly assigned voice ID. This is the ID that you specify when * calling the SynthesizeSpeech operation. *

*

* Constraints:
* Allowed Values: Aditi, Amy, Astrid, Bianca, Brian, Camila, Carla, * Carmen, Celine, Chantal, Conchita, Cristiano, Dora, Emma, Enrique, Ewa, * Filiz, Gabrielle, Geraint, Giorgio, Gwyneth, Hans, Ines, Ivy, Jacek, Jan, * Joanna, Joey, Justin, Karl, Kendra, Kevin, Kimberly, Lea, Liv, Lotte, * Lucia, Lupe, Mads, Maja, Marlene, Mathieu, Matthew, Maxim, Mia, Miguel, * Mizuki, Naja, Nicole, Olivia, Penelope, Raveena, Ricardo, Ruben, Russell, * Salli, Seoyeon, Takumi, Tatyana, Vicki, Vitoria, Zeina, Zhiyu, Aria, * Ayanda, Arlet, Hannah, Arthur, Daniel, Liam, Pedro, Kajal, Hiujin, Laura, * Elin, Ida, Suvi, Ola, Hala, Andres, Sergio, Remi, Adriano, Thiago, Ruth, * Stephen, Kazuha, Tomoko, Niamh, Sofie */ private String id; /** *

* Language code of the voice. *

*

* Constraints:
* Allowed Values: arb, cmn-CN, cy-GB, da-DK, de-DE, en-AU, en-GB, * en-GB-WLS, en-IN, en-US, es-ES, es-MX, es-US, fr-CA, fr-FR, is-IS, it-IT, * ja-JP, hi-IN, ko-KR, nb-NO, nl-NL, pl-PL, pt-BR, pt-PT, ro-RO, ru-RU, * sv-SE, tr-TR, en-NZ, en-ZA, ca-ES, de-AT, yue-CN, ar-AE, fi-FI, en-IE */ private String languageCode; /** *

* Human readable name of the language in English. *

*/ private String languageName; /** *

* Name of the voice (for example, Salli, Kendra, etc.). This provides a * human readable voice name that you might display in your application. *

*/ private String name; /** *

* Additional codes for languages available for the specified voice in * addition to its default language. *

*

* For example, the default language for Aditi is Indian English (en-IN) * because it was first used for that language. Since Aditi is bilingual and * fluent in both Indian English and Hindi, this parameter would show the * code hi-IN. *

*/ private java.util.List additionalLanguageCodes; /** *

* Specifies which engines (standard or neural) * that are supported by a given voice. *

*/ private java.util.List supportedEngines; /** *

* Gender of the voice. *

*

* Constraints:
* Allowed Values: Female, Male * * @return

* Gender of the voice. *

* @see Gender */ public String getGender() { return gender; } /** *

* Gender of the voice. *

*

* Constraints:
* Allowed Values: Female, Male * * @param gender

* Gender of the voice. *

* @see Gender */ public void setGender(String gender) { this.gender = gender; } /** *

* Gender of the voice. *

*

* Returns a reference to this object so that method calls can be chained * together. *

* Constraints:
* Allowed Values: Female, Male * * @param gender

* Gender of the voice. *

* @return A reference to this updated object so that method calls can be * chained together. * @see Gender */ public Voice withGender(String gender) { this.gender = gender; return this; } /** *

* Gender of the voice. *

*

* Constraints:
* Allowed Values: Female, Male * * @param gender

* Gender of the voice. *

* @see Gender */ public void setGender(Gender gender) { this.gender = gender.toString(); } /** *

* Gender of the voice. *

*

* Returns a reference to this object so that method calls can be chained * together. *

* Constraints:
* Allowed Values: Female, Male * * @param gender

* Gender of the voice. *

* @return A reference to this updated object so that method calls can be * chained together. * @see Gender */ public Voice withGender(Gender gender) { this.gender = gender.toString(); return this; } /** *

* Amazon Polly assigned voice ID. This is the ID that you specify when * calling the SynthesizeSpeech operation. *

*

* Constraints:
* Allowed Values: Aditi, Amy, Astrid, Bianca, Brian, Camila, Carla, * Carmen, Celine, Chantal, Conchita, Cristiano, Dora, Emma, Enrique, Ewa, * Filiz, Gabrielle, Geraint, Giorgio, Gwyneth, Hans, Ines, Ivy, Jacek, Jan, * Joanna, Joey, Justin, Karl, Kendra, Kevin, Kimberly, Lea, Liv, Lotte, * Lucia, Lupe, Mads, Maja, Marlene, Mathieu, Matthew, Maxim, Mia, Miguel, * Mizuki, Naja, Nicole, Olivia, Penelope, Raveena, Ricardo, Ruben, Russell, * Salli, Seoyeon, Takumi, Tatyana, Vicki, Vitoria, Zeina, Zhiyu, Aria, * Ayanda, Arlet, Hannah, Arthur, Daniel, Liam, Pedro, Kajal, Hiujin, Laura, * Elin, Ida, Suvi, Ola, Hala, Andres, Sergio, Remi, Adriano, Thiago, Ruth, * Stephen, Kazuha, Tomoko, Niamh, Sofie * * @return

* Amazon Polly assigned voice ID. This is the ID that you specify * when calling the SynthesizeSpeech operation. *

* @see VoiceId */ public String getId() { return id; } /** *

* Amazon Polly assigned voice ID. This is the ID that you specify when * calling the SynthesizeSpeech operation. *

*

* Constraints:
* Allowed Values: Aditi, Amy, Astrid, Bianca, Brian, Camila, Carla, * Carmen, Celine, Chantal, Conchita, Cristiano, Dora, Emma, Enrique, Ewa, * Filiz, Gabrielle, Geraint, Giorgio, Gwyneth, Hans, Ines, Ivy, Jacek, Jan, * Joanna, Joey, Justin, Karl, Kendra, Kevin, Kimberly, Lea, Liv, Lotte, * Lucia, Lupe, Mads, Maja, Marlene, Mathieu, Matthew, Maxim, Mia, Miguel, * Mizuki, Naja, Nicole, Olivia, Penelope, Raveena, Ricardo, Ruben, Russell, * Salli, Seoyeon, Takumi, Tatyana, Vicki, Vitoria, Zeina, Zhiyu, Aria, * Ayanda, Arlet, Hannah, Arthur, Daniel, Liam, Pedro, Kajal, Hiujin, Laura, * Elin, Ida, Suvi, Ola, Hala, Andres, Sergio, Remi, Adriano, Thiago, Ruth, * Stephen, Kazuha, Tomoko, Niamh, Sofie * * @param id

* Amazon Polly assigned voice ID. This is the ID that you * specify when calling the SynthesizeSpeech * operation. *

* @see VoiceId */ public void setId(String id) { this.id = id; } /** *

* Amazon Polly assigned voice ID. This is the ID that you specify when * calling the SynthesizeSpeech operation. *

*

* Returns a reference to this object so that method calls can be chained * together. *

* Constraints:
* Allowed Values: Aditi, Amy, Astrid, Bianca, Brian, Camila, Carla, * Carmen, Celine, Chantal, Conchita, Cristiano, Dora, Emma, Enrique, Ewa, * Filiz, Gabrielle, Geraint, Giorgio, Gwyneth, Hans, Ines, Ivy, Jacek, Jan, * Joanna, Joey, Justin, Karl, Kendra, Kevin, Kimberly, Lea, Liv, Lotte, * Lucia, Lupe, Mads, Maja, Marlene, Mathieu, Matthew, Maxim, Mia, Miguel, * Mizuki, Naja, Nicole, Olivia, Penelope, Raveena, Ricardo, Ruben, Russell, * Salli, Seoyeon, Takumi, Tatyana, Vicki, Vitoria, Zeina, Zhiyu, Aria, * Ayanda, Arlet, Hannah, Arthur, Daniel, Liam, Pedro, Kajal, Hiujin, Laura, * Elin, Ida, Suvi, Ola, Hala, Andres, Sergio, Remi, Adriano, Thiago, Ruth, * Stephen, Kazuha, Tomoko, Niamh, Sofie * * @param id

* Amazon Polly assigned voice ID. This is the ID that you * specify when calling the SynthesizeSpeech * operation. *

* @return A reference to this updated object so that method calls can be * chained together. * @see VoiceId */ public Voice withId(String id) { this.id = id; return this; } /** *

* Amazon Polly assigned voice ID. This is the ID that you specify when * calling the SynthesizeSpeech operation. *

*

* Constraints:
* Allowed Values: Aditi, Amy, Astrid, Bianca, Brian, Camila, Carla, * Carmen, Celine, Chantal, Conchita, Cristiano, Dora, Emma, Enrique, Ewa, * Filiz, Gabrielle, Geraint, Giorgio, Gwyneth, Hans, Ines, Ivy, Jacek, Jan, * Joanna, Joey, Justin, Karl, Kendra, Kevin, Kimberly, Lea, Liv, Lotte, * Lucia, Lupe, Mads, Maja, Marlene, Mathieu, Matthew, Maxim, Mia, Miguel, * Mizuki, Naja, Nicole, Olivia, Penelope, Raveena, Ricardo, Ruben, Russell, * Salli, Seoyeon, Takumi, Tatyana, Vicki, Vitoria, Zeina, Zhiyu, Aria, * Ayanda, Arlet, Hannah, Arthur, Daniel, Liam, Pedro, Kajal, Hiujin, Laura, * Elin, Ida, Suvi, Ola, Hala, Andres, Sergio, Remi, Adriano, Thiago, Ruth, * Stephen, Kazuha, Tomoko, Niamh, Sofie * * @param id

* Amazon Polly assigned voice ID. This is the ID that you * specify when calling the SynthesizeSpeech * operation. *

* @see VoiceId */ public void setId(VoiceId id) { this.id = id.toString(); } /** *

* Amazon Polly assigned voice ID. This is the ID that you specify when * calling the SynthesizeSpeech operation. *

*

* Returns a reference to this object so that method calls can be chained * together. *

* Constraints:
* Allowed Values: Aditi, Amy, Astrid, Bianca, Brian, Camila, Carla, * Carmen, Celine, Chantal, Conchita, Cristiano, Dora, Emma, Enrique, Ewa, * Filiz, Gabrielle, Geraint, Giorgio, Gwyneth, Hans, Ines, Ivy, Jacek, Jan, * Joanna, Joey, Justin, Karl, Kendra, Kevin, Kimberly, Lea, Liv, Lotte, * Lucia, Lupe, Mads, Maja, Marlene, Mathieu, Matthew, Maxim, Mia, Miguel, * Mizuki, Naja, Nicole, Olivia, Penelope, Raveena, Ricardo, Ruben, Russell, * Salli, Seoyeon, Takumi, Tatyana, Vicki, Vitoria, Zeina, Zhiyu, Aria, * Ayanda, Arlet, Hannah, Arthur, Daniel, Liam, Pedro, Kajal, Hiujin, Laura, * Elin, Ida, Suvi, Ola, Hala, Andres, Sergio, Remi, Adriano, Thiago, Ruth, * Stephen, Kazuha, Tomoko, Niamh, Sofie * * @param id

* Amazon Polly assigned voice ID. This is the ID that you * specify when calling the SynthesizeSpeech * operation. *

* @return A reference to this updated object so that method calls can be * chained together. * @see VoiceId */ public Voice withId(VoiceId id) { this.id = id.toString(); return this; } /** *

* Language code of the voice. *

*

* Constraints:
* Allowed Values: arb, cmn-CN, cy-GB, da-DK, de-DE, en-AU, en-GB, * en-GB-WLS, en-IN, en-US, es-ES, es-MX, es-US, fr-CA, fr-FR, is-IS, it-IT, * ja-JP, hi-IN, ko-KR, nb-NO, nl-NL, pl-PL, pt-BR, pt-PT, ro-RO, ru-RU, * sv-SE, tr-TR, en-NZ, en-ZA, ca-ES, de-AT, yue-CN, ar-AE, fi-FI, en-IE * * @return

* Language code of the voice. *

* @see LanguageCode */ public String getLanguageCode() { return languageCode; } /** *

* Language code of the voice. *

*

* Constraints:
* Allowed Values: arb, cmn-CN, cy-GB, da-DK, de-DE, en-AU, en-GB, * en-GB-WLS, en-IN, en-US, es-ES, es-MX, es-US, fr-CA, fr-FR, is-IS, it-IT, * ja-JP, hi-IN, ko-KR, nb-NO, nl-NL, pl-PL, pt-BR, pt-PT, ro-RO, ru-RU, * sv-SE, tr-TR, en-NZ, en-ZA, ca-ES, de-AT, yue-CN, ar-AE, fi-FI, en-IE * * @param languageCode

* Language code of the voice. *

* @see LanguageCode */ public void setLanguageCode(String languageCode) { this.languageCode = languageCode; } /** *

* Language code of the voice. *

*

* Returns a reference to this object so that method calls can be chained * together. *

* Constraints:
* Allowed Values: arb, cmn-CN, cy-GB, da-DK, de-DE, en-AU, en-GB, * en-GB-WLS, en-IN, en-US, es-ES, es-MX, es-US, fr-CA, fr-FR, is-IS, it-IT, * ja-JP, hi-IN, ko-KR, nb-NO, nl-NL, pl-PL, pt-BR, pt-PT, ro-RO, ru-RU, * sv-SE, tr-TR, en-NZ, en-ZA, ca-ES, de-AT, yue-CN, ar-AE, fi-FI, en-IE * * @param languageCode

* Language code of the voice. *

* @return A reference to this updated object so that method calls can be * chained together. * @see LanguageCode */ public Voice withLanguageCode(String languageCode) { this.languageCode = languageCode; return this; } /** *

* Language code of the voice. *

*

* Constraints:
* Allowed Values: arb, cmn-CN, cy-GB, da-DK, de-DE, en-AU, en-GB, * en-GB-WLS, en-IN, en-US, es-ES, es-MX, es-US, fr-CA, fr-FR, is-IS, it-IT, * ja-JP, hi-IN, ko-KR, nb-NO, nl-NL, pl-PL, pt-BR, pt-PT, ro-RO, ru-RU, * sv-SE, tr-TR, en-NZ, en-ZA, ca-ES, de-AT, yue-CN, ar-AE, fi-FI, en-IE * * @param languageCode

* Language code of the voice. *

* @see LanguageCode */ public void setLanguageCode(LanguageCode languageCode) { this.languageCode = languageCode.toString(); } /** *

* Language code of the voice. *

*

* Returns a reference to this object so that method calls can be chained * together. *

* Constraints:
* Allowed Values: arb, cmn-CN, cy-GB, da-DK, de-DE, en-AU, en-GB, * en-GB-WLS, en-IN, en-US, es-ES, es-MX, es-US, fr-CA, fr-FR, is-IS, it-IT, * ja-JP, hi-IN, ko-KR, nb-NO, nl-NL, pl-PL, pt-BR, pt-PT, ro-RO, ru-RU, * sv-SE, tr-TR, en-NZ, en-ZA, ca-ES, de-AT, yue-CN, ar-AE, fi-FI, en-IE * * @param languageCode

* Language code of the voice. *

* @return A reference to this updated object so that method calls can be * chained together. * @see LanguageCode */ public Voice withLanguageCode(LanguageCode languageCode) { this.languageCode = languageCode.toString(); return this; } /** *

* Human readable name of the language in English. *

* * @return

* Human readable name of the language in English. *

*/ public String getLanguageName() { return languageName; } /** *

* Human readable name of the language in English. *

* * @param languageName

* Human readable name of the language in English. *

*/ public void setLanguageName(String languageName) { this.languageName = languageName; } /** *

* Human readable name of the language in English. *

*

* Returns a reference to this object so that method calls can be chained * together. * * @param languageName

* Human readable name of the language in English. *

* @return A reference to this updated object so that method calls can be * chained together. */ public Voice withLanguageName(String languageName) { this.languageName = languageName; return this; } /** *

* Name of the voice (for example, Salli, Kendra, etc.). This provides a * human readable voice name that you might display in your application. *

* * @return

* Name of the voice (for example, Salli, Kendra, etc.). This * provides a human readable voice name that you might display in * your application. *

*/ public String getName() { return name; } /** *

* Name of the voice (for example, Salli, Kendra, etc.). This provides a * human readable voice name that you might display in your application. *

* * @param name

* Name of the voice (for example, Salli, Kendra, etc.). This * provides a human readable voice name that you might display in * your application. *

*/ public void setName(String name) { this.name = name; } /** *

* Name of the voice (for example, Salli, Kendra, etc.). This provides a * human readable voice name that you might display in your application. *

*

* Returns a reference to this object so that method calls can be chained * together. * * @param name

* Name of the voice (for example, Salli, Kendra, etc.). This * provides a human readable voice name that you might display in * your application. *

* @return A reference to this updated object so that method calls can be * chained together. */ public Voice withName(String name) { this.name = name; return this; } /** *

* Additional codes for languages available for the specified voice in * addition to its default language. *

*

* For example, the default language for Aditi is Indian English (en-IN) * because it was first used for that language. Since Aditi is bilingual and * fluent in both Indian English and Hindi, this parameter would show the * code hi-IN. *

* * @return

* Additional codes for languages available for the specified voice * in addition to its default language. *

*

* For example, the default language for Aditi is Indian English * (en-IN) because it was first used for that language. Since Aditi * is bilingual and fluent in both Indian English and Hindi, this * parameter would show the code hi-IN. *

*/ public java.util.List getAdditionalLanguageCodes() { return additionalLanguageCodes; } /** *

* Additional codes for languages available for the specified voice in * addition to its default language. *

*

* For example, the default language for Aditi is Indian English (en-IN) * because it was first used for that language. Since Aditi is bilingual and * fluent in both Indian English and Hindi, this parameter would show the * code hi-IN. *

* * @param additionalLanguageCodes

* Additional codes for languages available for the specified * voice in addition to its default language. *

*

* For example, the default language for Aditi is Indian English * (en-IN) because it was first used for that language. Since * Aditi is bilingual and fluent in both Indian English and * Hindi, this parameter would show the code hi-IN. *

*/ public void setAdditionalLanguageCodes(java.util.Collection additionalLanguageCodes) { if (additionalLanguageCodes == null) { this.additionalLanguageCodes = null; return; } this.additionalLanguageCodes = new java.util.ArrayList(additionalLanguageCodes); } /** *

* Additional codes for languages available for the specified voice in * addition to its default language. *

*

* For example, the default language for Aditi is Indian English (en-IN) * because it was first used for that language. Since Aditi is bilingual and * fluent in both Indian English and Hindi, this parameter would show the * code hi-IN. *

*

* Returns a reference to this object so that method calls can be chained * together. * * @param additionalLanguageCodes

* Additional codes for languages available for the specified * voice in addition to its default language. *

*

* For example, the default language for Aditi is Indian English * (en-IN) because it was first used for that language. Since * Aditi is bilingual and fluent in both Indian English and * Hindi, this parameter would show the code hi-IN. *

* @return A reference to this updated object so that method calls can be * chained together. */ public Voice withAdditionalLanguageCodes(String... additionalLanguageCodes) { if (getAdditionalLanguageCodes() == null) { this.additionalLanguageCodes = new java.util.ArrayList( additionalLanguageCodes.length); } for (String value : additionalLanguageCodes) { this.additionalLanguageCodes.add(value); } return this; } /** *

* Additional codes for languages available for the specified voice in * addition to its default language. *

*

* For example, the default language for Aditi is Indian English (en-IN) * because it was first used for that language. Since Aditi is bilingual and * fluent in both Indian English and Hindi, this parameter would show the * code hi-IN. *

*

* Returns a reference to this object so that method calls can be chained * together. * * @param additionalLanguageCodes

* Additional codes for languages available for the specified * voice in addition to its default language. *

*

* For example, the default language for Aditi is Indian English * (en-IN) because it was first used for that language. Since * Aditi is bilingual and fluent in both Indian English and * Hindi, this parameter would show the code hi-IN. *

* @return A reference to this updated object so that method calls can be * chained together. */ public Voice withAdditionalLanguageCodes(java.util.Collection additionalLanguageCodes) { setAdditionalLanguageCodes(additionalLanguageCodes); return this; } /** *

* Specifies which engines (standard or neural) * that are supported by a given voice. *

* * @return

* Specifies which engines (standard or * neural) that are supported by a given voice. *

*/ public java.util.List getSupportedEngines() { return supportedEngines; } /** *

* Specifies which engines (standard or neural) * that are supported by a given voice. *

* * @param supportedEngines

* Specifies which engines (standard or * neural) that are supported by a given voice. *

*/ public void setSupportedEngines(java.util.Collection supportedEngines) { if (supportedEngines == null) { this.supportedEngines = null; return; } this.supportedEngines = new java.util.ArrayList(supportedEngines); } /** *

* Specifies which engines (standard or neural) * that are supported by a given voice. *

*

* Returns a reference to this object so that method calls can be chained * together. * * @param supportedEngines

* Specifies which engines (standard or * neural) that are supported by a given voice. *

* @return A reference to this updated object so that method calls can be * chained together. */ public Voice withSupportedEngines(String... supportedEngines) { if (getSupportedEngines() == null) { this.supportedEngines = new java.util.ArrayList(supportedEngines.length); } for (String value : supportedEngines) { this.supportedEngines.add(value); } return this; } /** *

* Specifies which engines (standard or neural) * that are supported by a given voice. *

*

* Returns a reference to this object so that method calls can be chained * together. * * @param supportedEngines

* Specifies which engines (standard or * neural) that are supported by a given voice. *

* @return A reference to this updated object so that method calls can be * chained together. */ public Voice withSupportedEngines(java.util.Collection supportedEngines) { setSupportedEngines(supportedEngines); return this; } /** * Returns a string representation of this object; useful for testing and * debugging. * * @return A string representation of this object. * @see java.lang.Object#toString() */ @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("{"); if (getGender() != null) sb.append("Gender: " + getGender() + ","); if (getId() != null) sb.append("Id: " + getId() + ","); if (getLanguageCode() != null) sb.append("LanguageCode: " + getLanguageCode() + ","); if (getLanguageName() != null) sb.append("LanguageName: " + getLanguageName() + ","); if (getName() != null) sb.append("Name: " + getName() + ","); if (getAdditionalLanguageCodes() != null) sb.append("AdditionalLanguageCodes: " + getAdditionalLanguageCodes() + ","); if (getSupportedEngines() != null) sb.append("SupportedEngines: " + getSupportedEngines()); sb.append("}"); return sb.toString(); } @Override public int hashCode() { final int prime = 31; int hashCode = 1; hashCode = prime * hashCode + ((getGender() == null) ? 0 : getGender().hashCode()); hashCode = prime * hashCode + ((getId() == null) ? 0 : getId().hashCode()); hashCode = prime * hashCode + ((getLanguageCode() == null) ? 0 : getLanguageCode().hashCode()); hashCode = prime * hashCode + ((getLanguageName() == null) ? 0 : getLanguageName().hashCode()); hashCode = prime * hashCode + ((getName() == null) ? 0 : getName().hashCode()); hashCode = prime * hashCode + ((getAdditionalLanguageCodes() == null) ? 0 : getAdditionalLanguageCodes() .hashCode()); hashCode = prime * hashCode + ((getSupportedEngines() == null) ? 0 : getSupportedEngines().hashCode()); return hashCode; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (obj instanceof Voice == false) return false; Voice other = (Voice) obj; if (other.getGender() == null ^ this.getGender() == null) return false; if (other.getGender() != null && other.getGender().equals(this.getGender()) == false) return false; if (other.getId() == null ^ this.getId() == null) return false; if (other.getId() != null && other.getId().equals(this.getId()) == false) return false; if (other.getLanguageCode() == null ^ this.getLanguageCode() == null) return false; if (other.getLanguageCode() != null && other.getLanguageCode().equals(this.getLanguageCode()) == false) return false; if (other.getLanguageName() == null ^ this.getLanguageName() == null) return false; if (other.getLanguageName() != null && other.getLanguageName().equals(this.getLanguageName()) == false) return false; if (other.getName() == null ^ this.getName() == null) return false; if (other.getName() != null && other.getName().equals(this.getName()) == false) return false; if (other.getAdditionalLanguageCodes() == null ^ this.getAdditionalLanguageCodes() == null) return false; if (other.getAdditionalLanguageCodes() != null && other.getAdditionalLanguageCodes().equals(this.getAdditionalLanguageCodes()) == false) return false; if (other.getSupportedEngines() == null ^ this.getSupportedEngines() == null) return false; if (other.getSupportedEngines() != null && other.getSupportedEngines().equals(this.getSupportedEngines()) == false) return false; return true; } }