code: public JClassType getAssociationType(final PropertyDescriptor ppropertyDescriptor,
        final boolean puseField) {
      final JType type = getElementType(ppropertyDescriptor, puseField);
      if (type == null) {
        return null;
      }
      final JArrayType jarray = type.isArray();
      if (jarray != null) {
        return jarray.getComponentType().isClassOrInterface();
      }
      final JParameterizedType jptype = type.isParameterized();
      JClassType[] typeArgs;
      if (jptype == null) {
        final JRawType jrtype = type.isRawType();
        typeArgs = jrtype.getGenericType().getTypeParameters();
      } else {
        typeArgs = jptype.getTypeArgs();
      }
      // it is either a Iterable or a Map use the last type arg.
      return typeArgs[typeArgs.length - 1].isClassOrInterface();
    }
docs: get association type.
  
  @param ppropertyDescriptor property description
  @param puseField use field
  @return JClassType