package com.github.pfichtner.jrunalyser.base; public final class Delegates<T> { private Delegates() { super(); } @SuppressWarnings("unchecked") public static <T> T getRoot(T object, Class<T> clazz) { T result = object; while (result instanceof Delegate) { @SuppressWarnings("rawtypes") Object tmp = ((Delegate) result).getDelegate(); if (clazz.isInstance(tmp)) { result = (T) tmp; } } return result; } }