code: @Override
      public Set<VM> getMisPlacedVMs(Instance i) {
          for (SatConstraint c : i.getSatConstraints()) {
              if (!(c instanceof ResourceRelated && ((ResourceRelated) c).getResource().equals(rc.getResourceIdentifier()))) {
                  continue;
              }
              if (c instanceof Preserve) {
                  VM v = c.getInvolvedVMs().iterator().next();
                  wantedAmount.put(v, consumption(v, ((Preserve) c).getAmount()));
              } else if (c instanceof Overbook) {
                  Node n = c.getInvolvedNodes().iterator().next();
                  wantedRatios.put(n, ratio(n, ((Overbook) c).getRatio()));
              } else if (c instanceof ResourceCapacity && c.getInvolvedNodes().size() == 1) {
                  Node n = c.getInvolvedNodes().iterator().next();
                  wantedCapacity.put(n, capacity(n, ((ResourceCapacity) c).getAmount()));
              }
          }
          Mapping m = i.getModel().getMapping();
          Set<VM> candidates = new HashSet<>();
          for (Node n : m.getOnlineNodes()) {
              if (overloaded(m, n)) {
                  candidates.addAll(m.getRunningVMs(n));
              }
          }
          return candidates;
      }
docs: {@inheritDoc}
  
  @param i the model to use to inspect the VMs.
  @return the set of VMs that cannot have their associated {@link Preserve} constraint satisfy with regards
  to a possible {@link Overbook} and single-node {@link ResourceCapacity} constraint.