@Override
    public @NotNull DfType getDfType(@Nullable DfaVariableValue qualifier) {
      if (qualifier == null) return DfType.TOP;
      TypeConstraint qualifierType = TypeConstraint.fromDfType(qualifier.getDfType());
      String type = null;
      if (qualifierType.isExact(OptionalUtil.OPTIONAL_INT)) {
        type = JAVA_LANG_INTEGER;
      }
      else if (qualifierType.isExact(OptionalUtil.OPTIONAL_LONG)) {
        type = JAVA_LANG_LONG;
      }
      else if (qualifierType.isExact(OptionalUtil.OPTIONAL_DOUBLE)) {
        type = JAVA_LANG_DOUBLE;
      }
      if (type != null) {
        return DfTypes.typedObject(JavaPsiFacade.getElementFactory(qualifier.getFactory().getProject())
                                     .createTypeFromText(type, null), Nullability.UNKNOWN);
      }
      return DfTypes.OBJECT_OR_NULL;
    }
@Override
    public @NotNull DfType getDfType(@Nullable DfaVariableValue qualifier)