@Override
  protected Collection<PyElement> moveMembers(@NotNull final PyClass from,
                                              @NotNull final Collection<PyMemberInfo<PyElement>> members,
                                              final PyClass @NotNull ... to) {
    final Collection<PyElement> result = new ArrayList<>();

    final Collection<PyElement> elements = fetchElements(members);
    for (final PyElement element : elements) {
      final Property property = getProperty(from, element);
      final Collection<PyFunction> functions = getAllFunctions(property);
      result.addAll(MethodsManager.moveMethods(from, functions, false, to));
      final PyTargetExpression definitionSite = property.getDefinitionSite();
      if (definitionSite != null) {
        final PyAssignmentStatement assignmentStatement = PsiTreeUtil.getParentOfType(definitionSite, PyAssignmentStatement.class);
        result.addAll(ClassFieldsManager.moveAssignmentsImpl(from, Collections.singleton(assignmentStatement), to));
      }
    }
    return result;
  }
@Override
  protected Collection<PyElement> moveMembers(@NotNull final PyClass from,
                                              @NotNull final Collection<PyMemberInfo<PyElement>> members,
                                              final PyClass @NotNull ... to)