class TransformationUtility implements Cloneable {

    @Override
    @SuppressWarnings("PMD.SimplifyBooleanReturns")
    public boolean equals(Object obj) {
        if (this == obj) return true;
        if (!(obj instanceof TransformationUtility)) return false;

        TransformationUtility tu = (TransformationUtility) obj;

        if (!Objects.equals(this.abortionMessage, tu.abortionMessage)) return false;
        if (this.abortOnFailure != tu.abortOnFailure) return false;
        if (!Objects.equals(this.absoluteFile, tu.absoluteFile)) return false;
        if (!Objects.equals(this.absoluteFileFromContextAttribute, tu.absoluteFileFromContextAttribute)) return false;
        if (!Objects.equals(this.additionalRelativePath, tu.additionalRelativePath)) return false;
        if (!Objects.equals(this.contextAttributeName, tu.contextAttributeName)) return false;
        if (!Arrays.equals(this.dependencies, tu.dependencies)) return false;
        if (!Objects.equals(this.ifConditionAttributeName, tu.ifConditionAttributeName)) return false;
        if (!Objects.equals(this.latePropertiesAttributes, tu.latePropertiesAttributes)) return false;
        if (!Objects.equals(this.name, tu.name)) return false;
        if (this.order != tu.order) return false;
        if (!Objects.equals(this.parent, tu.parent)) return false;
        if (!Objects.equals(this.relativePath, tu.relativePath)) return false;
        if (this.saveResult != tu.saveResult) return false;
        if (!Objects.equals(this.unlessConditionAttributeName, tu.unlessConditionAttributeName)) return false;
        if (!Objects.equals(this.utilityCondition, tu.utilityCondition)) return false;

        return true;
    }

    @SuppressWarnings("PMD.UnnecessaryConstructor") public  TransformationUtility();

}