code: private boolean isCompatibleType(Object value, Class<?> type) {
          // Do object check first, then primitives
          if (value == null || type.isInstance(value)) {
              return true;
  
          } else if (type.equals(Integer.TYPE) && Integer.class.isInstance(value)) {
              return true;
  
          } else if (type.equals(Long.TYPE) && Long.class.isInstance(value)) {
              return true;
  
          } else if (type.equals(Double.TYPE) && Double.class.isInstance(value)) {
              return true;
  
          } else if (type.equals(Float.TYPE) && Float.class.isInstance(value)) {
              return true;
  
          } else if (type.equals(Short.TYPE) && Short.class.isInstance(value)) {
              return true;
  
          } else if (type.equals(Byte.TYPE) && Byte.class.isInstance(value)) {
              return true;
  
          } else if (type.equals(Character.TYPE) && Character.class.isInstance(value)) {
              return true;
  
          } else if (type.equals(Boolean.TYPE) && Boolean.class.isInstance(value)) {
              return true;
  
          } else if (BigDecimal.class.isInstance(value)) {
              return true;
  
          } else if (BigInteger.class.isInstance(value)) {
              return true;
          }
          return false;
  
      }
docs: Checks if @value is compatible with @type
  
  @param value value which is checked
  @param type  Java Class compatability with which is checked
  @return true/false