@Override
    public String getPropertyName(ExecutableElement getterOrSetterMethod) {
        String methodName = getterOrSetterMethod.getSimpleName().toString();

        boolean isGetMutableMap = isGetMutableMap(getterOrSetterMethod);
        boolean isGetUnmodifiableMap = isGetUnmodifiableMap(getterOrSetterMethod);

        if (isGetList(getterOrSetterMethod) || isSetList(getterOrSetterMethod) || isGetMutableMap) {
            Element receiver = getterOrSetterMethod.getEnclosingElement();
            if (receiver != null && (receiver.getKind() == ElementKind.CLASS || receiver.getKind() == ElementKind.INTERFACE)) {
                TypeElement type = (TypeElement) receiver;
                if (isProtobufGeneratedMessage(type)) {
                    if (isGetMutableMap) {
                        // 'getMutable...'
                        return IntrospectorUtils.decapitalize(methodName.substring(10));
                    } else if (isGetUnmodifiableMap) {
                        // 'get...'
                        return IntrospectorUtils.decapitalize(methodName.substring(3));
                    } else {
                        // 'get...List'
                        return IntrospectorUtils.decapitalize(methodName.substring(3, methodName.length() - 4));
                    }
                }
            }
        }
        return super.getPropertyName(getterOrSetterMethod);
    }
refer <a href="https://github.com/entur/mapstruct-spi-protobuf">mapstruct-spi-protobuf</a>
@author Arne Seime
commons-mapstruct-spi/src/main/java/com/navercorp/pinpoint/mapstruct/spi/ProtobufAccessorNamingStrategy.java