class CacheKey {

        private Class target;

        private Method method;

        @Override
        public boolean equals(Object obj) {
            if (!(obj instanceof CacheKey)) {
                return false;
            }
            CacheKey target = ((CacheKey) obj);
            return target.target == this.target && target.method == method;
        }

        public int hashCode() {<FILL_FUNCTION_BODY>}
    }

            int result = this.target != null ? this.target.hashCode() : 0;
            result = 31 * result + (this.method != null ? this.method.hashCode() : 0);
            return result;
        
<no_super_class>