@SuppressWarnings ("unchecked" )
    public ReflectMethod( Method method )
    {
        Class<?>[] parameters = method.getParameterTypes();

        int calculatedMaxSize = 0;
        reflects = new Reflect[parameters.length];

        for (int i = 0; i < parameters.length; i++)
        {
            Reflect<Object> r = ReflectFactory.create( parameters[i] );

            if (r == null)
            {
                throw new RuntimeException( "A Reflect implementation was not found for parameter: " + parameters[i] );
            }

            reflects[i] = r;

            if (calculatedMaxSize != -1)
            {
                if (r.maxSize() == -1)
                {
                    calculatedMaxSize = -1;
                }
                else
                {
                    calculatedMaxSize += r.maxSize();
                }
            }
        }

        maxSize = calculatedMaxSize;
        this.method = method;
    }