@NotNull public static PropertyDescriptor createEnumValuesProperty(@NotNull ClassDescriptor enumClass) { PropertyDescriptorImpl values = PropertyDescriptorImpl.create( enumClass, Annotations.Companion.getEMPTY(), Modality.FINAL, Visibilities.PUBLIC, /* isVar */ false, DescriptorUtils.ENUM_VALUES, CallableMemberDescriptor.Kind.SYNTHESIZED, enumClass.getSource(), /* lateInit = */ false, /* isConst = */ false); KotlinType type = getBuiltIns(enumClass).getArrayType(Variance.INVARIANT, enumClass.getDefaultType()); PropertyGetterDescriptorImpl getter = createDefaultGetter(values, Annotations.Companion.getEMPTY()); values.initialize(getter, null); getter.initialize(type); values.setType(type, Collections.<TypeParameterDescriptor>emptyList(), null, (KotlinType) null); return values; }