@Override
  public <M1 extends PsiNamedElement, P1 extends ParameterInfo> ReadWriteAccessDetector.Access collectInternalUsages(Collection<? super FixableUsageInfo> usages,
                                                                                                                     GrMethod overridingMethod,
                                                                                                                     IntroduceParameterObjectClassDescriptor<M1, P1> classDescriptor,
                                                                                                                     P1 parameterInfo,
                                                                                                                     String mergedParamName) {
    final int oldIndex = parameterInfo.getOldIndex();
    final GrParameter parameter = overridingMethod.getParameterList().getParameters()[oldIndex];
    final ReadWriteAccessDetector.Access[] accessors = new ReadWriteAccessDetector.Access[1];
    final String setter = classDescriptor.getSetterName(parameterInfo, overridingMethod);
    final String getter = classDescriptor.getGetterName(parameterInfo, overridingMethod, ReadWriteAccessDetector.Access.Read);
    ReferencesSearch.search(parameter, new LocalSearchScope(overridingMethod)).forEach(reference -> {
      final PsiElement element = reference.getElement();
      if (element instanceof GrReferenceExpression) {
        accessors[0] = ReadWriteAccessDetector.Access.Read;
        //todo proceed with write access
        usages.add(new GrReplaceParameterReferenceWithCall(element, getter, mergedParamName));
      }
      return true;
    });
    return accessors[0];
  }
@Override
  public <M1 extends PsiNamedElement, P1 extends ParameterInfo> ReadWriteAccessDetector.Access collectInternalUsages(Collection<? super FixableUsageInfo> usages,
                                                                                                                     GrMethod overridingMethod,
                                                                                                                     IntroduceParameterObjectClassDescriptor<M1, P1> classDescriptor,
                                                                                                                     P1 parameterInfo,
                                                                                                                     String mergedParamName)