'Returns True if this VariantMap is more constrained than other,
False otherwise.
Args:
other (VariantMap): VariantMap instance to satisfy
strict (bool): if True return False if a key is in other and
not in self, otherwise discard that key and proceed with
evaluation
Returns:
bool: True or False'

def satisfies(self, other, strict=False):

    to_be_checked = [k for k in other]
    strict_or_concrete = strict
    if (self.spec is not None):
        strict_or_concrete |= self.spec._concrete
    if (not strict_or_concrete):
        to_be_checked = filter((lambda x: (x in self)), to_be_checked)
    return all((((k in self) and self[k].satisfies(other[k])) for k in to_be_checked))
