{"record":{"id":"d949f65c7db37138","repo":"microg/GmsCore","slug":"creator-in-is-not-accessible","errorCode":null,"errorMessage":"CREATOR in  is not accessible","messagePattern":"CREATOR in  is not accessible","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"play-services-basement/src/main/java/org/microg/safeparcel/SafeParcelReflectionUtil.java","lineNumber":127,"sourceCode":"        if (clazz.isArray()) {\n            clazz = clazz.getComponentType();\n        }\n        if (clazz != null && Parcelable.class.isAssignableFrom(clazz)) {\n            return getCreator((Class<? extends Parcelable>) clazz);\n        }\n        throw new RuntimeException(clazz + \" is not an Parcelable\");\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    public static Parcelable.Creator<Parcelable> getCreator(Class<? extends Parcelable> clazz) {\n        try {\n            Field creatorField = clazz.getDeclaredField(\"CREATOR\");\n            creatorField.setAccessible(true);\n            return (Parcelable.Creator<Parcelable>) creatorField.get(null);\n        } catch (NoSuchFieldException e) {\n            throw new RuntimeException(clazz + \" is an Parcelable without CREATOR\");\n        } catch (IllegalAccessException e) {\n            throw new RuntimeException(\"CREATOR in \" + clazz + \" is not accessible\");\n        }\n    }\n\n    @SuppressWarnings(\"deprecation\")\n    private static Class<?> getSubClass(Field field) {\n        SafeParceled safeParceled = field.getAnnotation(SafeParceled.class);\n        SafeParcelable.Field safeParcelableField = field.getAnnotation(SafeParcelable.Field.class);\n        if (safeParceled != null && safeParceled.subClass() != SafeParceled.class) {\n            return safeParceled.subClass();\n        } else if (safeParceled != null && !\"undefined\".equals(safeParceled.subType())) {\n            try {\n                return Class.forName(safeParceled.subType());\n            } catch (ClassNotFoundException e) {\n                throw new IllegalArgumentException(e);\n            }\n        } else if (safeParcelableField != null && safeParcelableField.subClass() != SafeParcelable.class) {\n            return safeParcelableField.subClass();\n        } else {","sourceCodeStart":109,"sourceCodeEnd":145,"githubUrl":"https://github.com/microg/GmsCore/blob/157c9d86ac46c195a86c2f15ab55c84036223f95/play-services-basement/src/main/java/org/microg/safeparcel/SafeParcelReflectionUtil.java#L109-L145","documentation":"Reflection guard in SafeParcelReflectionUtil.getCreator(Class): the CREATOR field exists but accessing it threw (e.g. setAccessible(true) blocked by hidden-API restrictions or module boundaries). The class name is embedded in the message.","triggerScenarios":"Thrown at play-services-basement/src/main/java/org/microg/safeparcel/SafeParcelReflectionUtil.java:127 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Make the CREATOR field public and statically accessible","Bypass the reflective SafeParcel path and implement an explicit CREATOR-based writer/reader for that class"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"157c9d86ac46c195a86c2f15ab55c84036223f95","analyzedAt":"2026-09-06T17:27:33.892Z","contentChangedAt":"2026-09-06T17:27:33.892Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}