code: public static <E extends ODataException> void visitProperties(EntityDataModel entityDataModel,
                                                                    StructuredType structType, PropertyVisitor<E> visitor)
              throws E {
          String baseTypeName = structType.getBaseTypeName();
          if (!isNullOrEmpty(baseTypeName)) {
              visitProperties(entityDataModel, (StructuredType) entityDataModel.getType(baseTypeName), visitor);
          }
  
          for (StructuralProperty property : structType.getStructuralProperties()) {
              visitor.visit(property);
          }
      }
docs: Calls a callback for each property of a structured type (entity or complex type), including the properties in
  the base types that the type might derive from.
  
  @param entityDataModel The entity data model.
  @param structType      The structured type of which to visit the properties.
  @param visitor         The callback called for each property.
  @param <E>             The type of exception that the callback can throw.
  @throws E If the callback throws an exception.