DomElement () { DomElement proxy = myProxy; if (proxy == null) { Class<?> rawType = getRawType(); Class<? extends DomElement> implementation = myManager.getApplicationComponent().getImplementation(rawType); final boolean isInterface = rawType.isInterface(); if (implementation == null && !isInterface) { //noinspection unchecked implementation = (Class<? extends DomElement>)rawType; } myProxy = proxy = AdvancedProxy.createProxy(this, implementation, isInterface ? new Class[]{rawType} : ArrayUtil.EMPTY_CLASS_ARRAY); } return proxy; }