class TransformationUtility implements Cloneable {

    public TransformationTemplate getTransformationTemplate() {
        TransformationUtilityParent parent = getParent();
        if (parent == null) {
            return null;
        }

        while (!(parent instanceof TransformationTemplate)) {
            if (!(parent instanceof TransformationUtility)) {
                // FIXME
                // This API has to be improved. The fact that only TransformationUtility
                // can have parent isn't coherent (many other types can also be parents,
                // but don't have a method to return it).
                return null;
            }
            parent = ((TransformationUtility) parent).getParent();
            if (parent == null) {
                return null;
            }
        }
        return (TransformationTemplate) parent;
    }

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

}