class GridAffinityAssignmentV2 extends IgniteDataTransferObject implements AffinityAssignment {

    @Override public Collection<UUID> getIds(int part) {
        assert part >= 0 && part < assignment.size() : "Affinity partition is out of range" +
            " [part=" + part + ", partitions=" + assignment.size() + ']';

        if (IGNITE_DISABLE_AFFINITY_MEMORY_OPTIMIZATION)
            return getOrCreateAssignmentsIds(part);
        else {
            List<ClusterNode> nodes = assignment.get(part);

            return nodes.size() > GridAffinityAssignmentV2.IGNITE_AFFINITY_BACKUPS_THRESHOLD
                    ? getOrCreateAssignmentsIds(part)
                    : F.viewReadOnly(nodes, F.node2id());
        }
    }

    public  GridAffinityAssignmentV2();
      GridAffinityAssignmentV2(AffinityTopologyVersion topVer);
    public  GridAffinityAssignmentV2(AffinityTopologyVersion topVer,
        List<List<ClusterNode>> assignment,
        List<List<ClusterNode>> idealAssignment
    );
      GridAffinityAssignmentV2(AffinityTopologyVersion topVer, GridAffinityAssignmentV2 aff);

}