DfType (@NotNull DfType fieldValue) { DfType defaultType = this == OPTIONAL_VALUE ? DfTypes.OBJECT_OR_NULL : getDefaultValue(); DfType clamped = fieldValue.meet(defaultType); if (clamped.equals(defaultType)) return DfTypes.NOT_NULL_OBJECT; if (clamped.equals(DfType.BOTTOM)) return DfType.BOTTOM; return DfTypes.customObject(TypeConstraints.TOP, DfaNullability.NOT_NULL, Mutability.UNKNOWN, this, clamped); }