@Override
	public Object decorate(final ClassLoader loader, final Field field) {

		if (IContainer.class.isAssignableFrom(field.getType())) {
			return decorateContainer(loader, field);
		}
		if (IElement.class.isAssignableFrom(field.getType())) {
			return decorateElement(loader, field);
		}
		if (List.class.isAssignableFrom(field.getType())) {
			return decorateList(loader, field);
		}
		return super.decorate(loader, field);
	}