class GAKey {
        private final String groupId;
        private final String artifactId;
        private final int hashCode;

        GAKey(String groupId, String artifactId) {
            this.groupId = groupId;
            this.artifactId = artifactId;
            this.hashCode = Objects.hash(groupId, artifactId);
        }

        @Override
        public int hashCode() {
            return hashCode;
        }

        @Override
        public boolean equals(Object obj) {<FILL_FUNCTION_BODY>}
    }

            if (this == obj) {
                return true;
            }
            if (!(obj instanceof GAKey)) {
                return false;
            }

            GAKey other = (GAKey) obj;
            return Objects.equals(artifactId, other.artifactId) && Objects.equals(groupId, other.groupId);
        
<no_super_class>