class BarBuilderNodeDescriptor implements BarBuilderDescriptor {

    @Override
    public Analytic instantiateBuilderAnalytic() {
        Constructor<?>[] constructorArray = analyticsClass.getDeclaredConstructors();
        for (Constructor<?> constructor : constructorArray) {
            constructor.setAccessible(true);
            Class<?>[] parameterTypes = constructor.getParameterTypes();
            if(parameterTypes.length == 1 && (getConstructorArg().getClass().equals(parameterTypes[0]))) {
                try {
                    return (Analytic)constructor.newInstance(new Object[] { getConstructorArg() });
                }catch(Exception e) { e.printStackTrace(); }
            }
        }
        throw new IllegalStateException("Unable to instantiate Analytic class using constructor containing " + 
             "1 arguments of type <S extends Subscription> using argument: [s=" + getConstructorArg().getClass().getName() + "]");
    }

    public  BarBuilderNodeDescriptor();

}