code: private boolean skipProperty(Object obj, Field field) throws Siren4JException {
          boolean skip = false;
          Class<?> clazz = obj.getClass();
          Include inc = Include.ALWAYS;
          Siren4JInclude typeInclude = clazz.getAnnotation(Siren4JInclude.class);
          if (typeInclude != null) {
              inc = typeInclude.value();
          }
          Siren4JInclude fieldInclude = field.getAnnotation(Siren4JInclude.class);
          if (fieldInclude != null) {
              inc = fieldInclude.value();
          }
          try {
              Object val = field.get(obj);
              switch (inc) {
                  case NON_EMPTY:
                      if (val != null) {
                          if (String.class.equals(field.getType())) {
                              skip = StringUtils.isBlank((String) val);
                          } else if (CollectionResource.class.equals(field.getType())) {
                              skip = ((CollectionResource<?>) val).isEmpty();
                          }
                      } else {
                          skip = true;
                      }
                      break;
                  case NON_NULL:
                      if (val == null) {
                          skip = true;
                      }
                      break;
                  case ALWAYS:
              }
          } catch (Exception e) {
              throw new Siren4JRuntimeException(e);
          }
          return skip;
      }
docs: Determine if the property or entity should be skipped based on any existing include policy. The TYPE annotation is
  checked first and then the field annotation, the field annotation takes precedence.
  
  @param obj assumed not <code>null</code>.
  @param field assumed not <code>null</code>.
  @return <code>true</code> if the property/enity should be skipped.
  @throws Siren4JException