public synchronized boolean equals(java.lang.Object obj) {
   if (!(obj instanceof TemplateElement)) return false;
   TemplateElement other = (TemplateElement) obj;
   if (obj == null) return false;
   if (this == obj) return true;
   if (__equalsCalc != null) {
     return (__equalsCalc == obj);
   }
   __equalsCalc = obj;
   boolean _equals;
   _equals =
       true
           && ((this.uniqueName == null && other.getUniqueName() == null)
               || (this.uniqueName != null && this.uniqueName.equals(other.getUniqueName())))
           && ((this.fields == null && other.getFields() == null)
               || (this.fields != null
                   && java.util.Arrays.equals(this.fields, other.getFields())));
   __equalsCalc = null;
   return _equals;
 }