@Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;

        if (obj instanceof StorageDescriptor == false)
            return false;
        StorageDescriptor other = (StorageDescriptor) obj;
        if (other.getColumns() == null ^ this.getColumns() == null)
            return false;
        if (other.getColumns() != null && other.getColumns().equals(this.getColumns()) == false)
            return false;
        if (other.getLocation() == null ^ this.getLocation() == null)
            return false;
        if (other.getLocation() != null && other.getLocation().equals(this.getLocation()) == false)
            return false;
        if (other.getAdditionalLocations() == null ^ this.getAdditionalLocations() == null)
            return false;
        if (other.getAdditionalLocations() != null && other.getAdditionalLocations().equals(this.getAdditionalLocations()) == false)
            return false;
        if (other.getInputFormat() == null ^ this.getInputFormat() == null)
            return false;
        if (other.getInputFormat() != null && other.getInputFormat().equals(this.getInputFormat()) == false)
            return false;
        if (other.getOutputFormat() == null ^ this.getOutputFormat() == null)
            return false;
        if (other.getOutputFormat() != null && other.getOutputFormat().equals(this.getOutputFormat()) == false)
            return false;
        if (other.getCompressed() == null ^ this.getCompressed() == null)
            return false;
        if (other.getCompressed() != null && other.getCompressed().equals(this.getCompressed()) == false)
            return false;
        if (other.getNumberOfBuckets() == null ^ this.getNumberOfBuckets() == null)
            return false;
        if (other.getNumberOfBuckets() != null && other.getNumberOfBuckets().equals(this.getNumberOfBuckets()) == false)
            return false;
        if (other.getSerdeInfo() == null ^ this.getSerdeInfo() == null)
            return false;
        if (other.getSerdeInfo() != null && other.getSerdeInfo().equals(this.getSerdeInfo()) == false)
            return false;
        if (other.getBucketColumns() == null ^ this.getBucketColumns() == null)
            return false;
        if (other.getBucketColumns() != null && other.getBucketColumns().equals(this.getBucketColumns()) == false)
            return false;
        if (other.getSortColumns() == null ^ this.getSortColumns() == null)
            return false;
        if (other.getSortColumns() != null && other.getSortColumns().equals(this.getSortColumns()) == false)
            return false;
        if (other.getParameters() == null ^ this.getParameters() == null)
            return false;
        if (other.getParameters() != null && other.getParameters().equals(this.getParameters()) == false)
            return false;
        if (other.getSkewedInfo() == null ^ this.getSkewedInfo() == null)
            return false;
        if (other.getSkewedInfo() != null && other.getSkewedInfo().equals(this.getSkewedInfo()) == false)
            return false;
        if (other.getStoredAsSubDirectories() == null ^ this.getStoredAsSubDirectories() == null)
            return false;
        if (other.getStoredAsSubDirectories() != null && other.getStoredAsSubDirectories().equals(this.getStoredAsSubDirectories()) == false)
            return false;
        if (other.getSchemaReference() == null ^ this.getSchemaReference() == null)
            return false;
        if (other.getSchemaReference() != null && other.getSchemaReference().equals(this.getSchemaReference()) == false)
            return false;
        return true;
    }
Returns a string representation of this object. This is useful for testing and debugging. Sensitive data will be
redacted from this string using a placeholder value.

@return A string representation of this object.

@see java.lang.Object#toString()
aws-java-sdk-glue/src/main/java/com/amazonaws/services/glue/model/StorageDescriptor.java