function matchesType(obj, lastElementInPath, inferredTypeProperties) {
      return Object.keys(obj).filter(function (prop) {
          var isSubschema = subschemaProperties.indexOf(lastElementInPath) > -1, inferredPropertyFound = inferredTypeProperties.indexOf(prop) > -1;
          if (inferredPropertyFound && !isSubschema) {
              return true;
          }
      }).length > 0;
  }
Iterates through all keys of `obj` and:
- checks whether those keys match properties of a given inferred type
- makes sure that `obj` is not a subschema; _Do not attempt to infer properties named as subschema containers. The
reason for this is that any property name within those containers that matches one of the properties used for
inferring missing type values causes the container itself to get processed which leads to invalid output. (Issue 62)_

@returns {boolean}