private static boolean arrayMemberEquals(final Class<?> componentType,final Object o1,final Object o2){
  if (componentType.isAnnotation()) {
    return annotationArrayMemberEquals((Annotation[])o1,(Annotation[])o2);
  }
  if (componentType.equals(Byte.TYPE)) {
    return Arrays.equals((byte[])o1,(byte[])o2);
  }
  if (componentType.equals(Short.TYPE)) {
    return Arrays.equals((short[])o1,(short[])o2);
  }
  if (componentType.equals(Integer.TYPE)) {
    return Arrays.equals((int[])o1,(int[])o2);
  }
  if (componentType.equals(Character.TYPE)) {
    return Arrays.equals((char[])o1,(char[])o2);
  }
  if (componentType.equals(Long.TYPE)) {
    return Arrays.equals((long[])o1,(long[])o2);
  }
  if (componentType.equals(Float.TYPE)) {
    return Arrays.equals((float[])o1,(float[])o2);
  }
  if (componentType.equals(Double.TYPE)) {
    return Arrays.equals((double[])o1,(double[])o2);
  }
  if (componentType.equals(Boolean.TYPE)) {
    return Arrays.equals((boolean[])o1,(boolean[])o2);
  }
  return Arrays.equals((Object[])o1,(Object[])o2);
}

private static boolean arrayMemberEquals ( final Class < ? > componentType , final Object o1 , final Object o2 ) { if ( componentType . isAnnotation ( ) ) { return annotationArrayMemberEquals ( ( Annotation [ ] ) o1 , ( Annotation [ ] ) o2 ) ; } if ( componentType . equals ( Byte . TYPE ) ) { return Arrays . equals ( ( byte [ ] ) o1 , ( byte [ ] ) o2 ) ; } if ( componentType . equals ( Short . TYPE ) ) { return Arrays . equals ( ( short [ ] ) o1 , ( short [ ] ) o2 ) ; } if ( componentType . equals ( Integer . TYPE ) ) { return Arrays . equals ( ( int [ ] ) o1 , ( int [ ] ) o2 ) ; } if ( componentType . equals ( Character . TYPE ) ) { return Arrays . equals ( ( char [ ] ) o1 , ( char [ ] ) o2 ) ; } if ( componentType . equals ( Long . TYPE ) ) { return Arrays . equals ( ( long [ ] ) o1 , ( long [ ] ) o2 ) ; } if ( componentType . equals ( Float . TYPE ) ) { return Arrays . equals ( ( float [ ] ) o1 , ( float [ ] ) o2 ) ; } if ( componentType . equals ( Double . TYPE ) ) { return Arrays . equals ( ( double [ ] ) o1 , ( double [ ] ) o2 ) ; } if ( componentType . equals ( Boolean . TYPE ) ) { return Arrays . equals ( ( boolean [ ] ) o1 , ( boolean [ ] ) o2 ) ; } return Arrays . equals ( ( Object [ ] ) o1 , ( Object [ ] ) o2 ) ; }
helper method for comparing two objects of an array type .
