// Path: src/main/java/liquibase/ext/spatial/xml/XmlConstants.java
// public interface XmlConstants {
//    /** The extension's XML namespace. */
//    static final String SPATIAL_CHANGELOG_NAMESPACE = "http://www.liquibase.org/xml/ns/dbchangelog-ext/liquibase-spatial";
// }


import java.util.Arrays;
import java.util.LinkedHashSet;
import java.util.Set;
import liquibase.changelog.ChangeSet;
import liquibase.changelog.DatabaseChangeLog;
import liquibase.database.Database;
import liquibase.database.core.DerbyDatabase;
import liquibase.database.core.H2Database;
import liquibase.exception.PreconditionErrorException;
import liquibase.exception.PreconditionFailedException;
import liquibase.exception.UnexpectedLiquibaseException;
import liquibase.exception.ValidationErrors;
import liquibase.exception.Warnings;
import liquibase.ext.spatial.xml.XmlConstants;
import liquibase.parser.core.ParsedNode;
import liquibase.parser.core.ParsedNodeException;
import liquibase.precondition.AbstractPrecondition;
import liquibase.precondition.Precondition;
import liquibase.precondition.core.IndexExistsPrecondition;
import liquibase.precondition.core.TableExistsPrecondition;
import liquibase.resource.ResourceAccessor;
import liquibase.structure.DatabaseObject;
import liquibase.structure.core.Column;
import liquibase.structure.core.Index;
import liquibase.structure.core.Schema;
import liquibase.structure.core.Table;
import liquibase.util.StringUtils;
      if ("catalogName".equals(field)) {
         value = getCatalogName();
      } else if ("schemaName".equals(field)) {
         value = getSchemaName();
      } else if ("tableName".equals(field)) {
         value = getTableName();
      } else if ("columnNames".equals(field)) {
         value = getColumnNames();
      } else if ("indexName".equals(field)) {
         value = getIndexName();
      } else {
         throw new UnexpectedLiquibaseException("Unexpected field request on "
               + getSerializedObjectName() + ": " + field);
      }
      return value;
   }

   /**
    * @see liquibase.serializer.LiquibaseSerializable#getSerializableFieldType(java.lang.String)
    */
   @Override
   public SerializationType getSerializableFieldType(final String field) {
      return SerializationType.NAMED_FIELD;
   }

   /**
    * @see liquibase.serializer.LiquibaseSerializable#getSerializedObjectNamespace()
    */
   @Override
   public String getSerializedObjectNamespace() {
// Path: src/main/java/liquibase/ext/spatial/xml/XmlConstants.java
// public interface XmlConstants {
//    /** The extension's XML namespace. */
//    static final String SPATIAL_CHANGELOG_NAMESPACE = "http://www.liquibase.org/xml/ns/dbchangelog-ext/liquibase-spatial";
// }


// Path: src/main/java/liquibase/ext/spatial/preconditions/SpatialIndexExistsPrecondition.java
import java.util.Arrays;
import java.util.LinkedHashSet;
import java.util.Set;
import liquibase.changelog.ChangeSet;
import liquibase.changelog.DatabaseChangeLog;
import liquibase.database.Database;
import liquibase.database.core.DerbyDatabase;
import liquibase.database.core.H2Database;
import liquibase.exception.PreconditionErrorException;
import liquibase.exception.PreconditionFailedException;
import liquibase.exception.UnexpectedLiquibaseException;
import liquibase.exception.ValidationErrors;
import liquibase.exception.Warnings;
import liquibase.ext.spatial.xml.XmlConstants;
import liquibase.parser.core.ParsedNode;
import liquibase.parser.core.ParsedNodeException;
import liquibase.precondition.AbstractPrecondition;
import liquibase.precondition.Precondition;
import liquibase.precondition.core.IndexExistsPrecondition;
import liquibase.precondition.core.TableExistsPrecondition;
import liquibase.resource.ResourceAccessor;
import liquibase.structure.DatabaseObject;
import liquibase.structure.core.Column;
import liquibase.structure.core.Index;
import liquibase.structure.core.Schema;
import liquibase.structure.core.Table;
import liquibase.util.StringUtils;

      if ("catalogName".equals(field)) {
         value = getCatalogName();
      } else if ("schemaName".equals(field)) {
         value = getSchemaName();
      } else if ("tableName".equals(field)) {
         value = getTableName();
      } else if ("columnNames".equals(field)) {
         value = getColumnNames();
      } else if ("indexName".equals(field)) {
         value = getIndexName();
      } else {
         throw new UnexpectedLiquibaseException("Unexpected field request on "
               + getSerializedObjectName() + ": " + field);
      }
      return value;
   }

   /**
    * @see liquibase.serializer.LiquibaseSerializable#getSerializableFieldType(java.lang.String)
    */
   @Override
   public SerializationType getSerializableFieldType(final String field) {
      return SerializationType.NAMED_FIELD;
   }

   /**
    * @see liquibase.serializer.LiquibaseSerializable#getSerializedObjectNamespace()
    */
   @Override
   public String getSerializedObjectNamespace() {
      return XmlConstants.SPATIAL_CHANGELOG_NAMESPACE;