docs: @Nullable
    public static PathDescriptorVariableConstraint createOrNull (@Nonnull final String sConstraint)
    {
      final String sRealValue = StringHelper.trim (sConstraint);
      if (StringHelper.hasNoText (sRealValue))
      {
        LOGGER.warn ("Empty path descriptor variable constraint is ignored!");
        return null;
      }
  
      // Split in type and value
      final ICommonsList <String> aParts = StringHelper.getExploded ('=', sConstraint, 2);
  
      // Mandatory type
      final String sConstraintType = aParts.getAtIndex (0);
      final EPathDescriptorVariableConstraintType eConstraintType = EPathDescriptorVariableConstraintType.getFromIDOrNull (sConstraintType);
      if (eConstraintType == null)
      {
        LOGGER.error ("Unsupported variable constraint type '" + sConstraintType + "' used!");
        return null;
      }
  
      // Optional value
      final String sConstraintValue = aParts.getAtIndex (1);
      if (eConstraintType.isRequiresValue () && StringHelper.hasNoText (sConstraintValue))
      {
        LOGGER.error ("Variable constraint type '" +
                      sConstraintType +
                      "' requires a value but no value provided! Separate type and value with a '=' character.");
        return null;
      }
  
      return new PathDescriptorVariableConstraint (eConstraintType, sConstraintValue);
    }