private boolean allFieldsArePrimitive(IClass c) {
   if (c.isArrayClass()) {
     TypeReference t = c.getReference().getArrayElementType();
     return t.isPrimitiveType();
   } else {
     if (c.getReference().equals(TypeReference.JavaLangObject)) {
       return true;
     } else {
       for (Iterator<IField> it = c.getDeclaredInstanceFields().iterator(); it.hasNext(); ) {
         IField f = it.next();
         if (f.getReference().getFieldType().isReferenceType()) {
           return false;
         }
       }
       return allFieldsArePrimitive(c.getSuperclass());
     }
   }
 }