@Test
  public void cascadingParameterMetaData() throws Exception {

    Method method = CustomerRepository.class.getMethod("saveCustomer", Customer.class);
    ExecutableMetaData methodMetaData =
        beanMetaData.getMetaDataFor(ExecutableElement.forMethod(method));

    ParameterMetaData parameterMetaData = methodMetaData.getParameterMetaData(0);

    assertTrue(parameterMetaData.isCascading());
    assertTrue(parameterMetaData.isConstrained());
    assertEquals(parameterMetaData.getIndex(), 0);
    assertEquals(parameterMetaData.getName(), "arg0");
    assertThat(parameterMetaData).isEmpty();
  }
  @Test
  public void constrainedParameterMetaData() throws Exception {

    Method method =
        CustomerRepository.class.getMethod("createCustomer", CharSequence.class, String.class);
    ExecutableMetaData methodMetaData =
        beanMetaData.getMetaDataFor(ExecutableElement.forMethod(method));

    ParameterMetaData parameterMetaData = methodMetaData.getParameterMetaData(1);

    assertFalse(parameterMetaData.isCascading());
    assertTrue(parameterMetaData.isConstrained());
    assertEquals(parameterMetaData.getIndex(), 1);
    assertEquals(parameterMetaData.getName(), "arg1");
    assertThat(parameterMetaData).hasSize(1);
    assertEquals(
        parameterMetaData.iterator().next().getDescriptor().getAnnotation().annotationType(),
        NotNull.class);
  }