@mixin hu-pseudo-generic-classes($property, $pseudos, $modules, $types: null) {
  $content-exists: content-exists();

  $class-name-property: hu-get-class-name($property);
  $property: hu-get-property-name($property);

  @each $module in hu-format-modules($modules) {
    @if ($types) {
      @each $type, $value in $types {
        $class-name: hu-class-name("#{$class-name-property}#{if(str-length("#{$type}") > 0, ":#{$type}", "")}");
        $value: if($value, $value, $type);

        @include hu-pseudo($class-name, $pseudos, $module) {
          #{$property}: $value #{hu-important()};
        }
      }
    }
    @else if ($content-exists) {
      $class-name: hu-class-name($class-name-property);

      @include hu-pseudo($class-name, $pseudos, $module) {
        @content;
      }
    }
  }
}
