docs: def _validate_type(self, properties_spec, value):
          """Validate the given value with the given property spec.
  
          Args:
              properties_dict: specification of the property to check (From definition not route).
              value: value to check.
  
          Returns:
              True if the value is valid for the given spec.
          """
          if 'type' not in properties_spec.keys():
              # Validate sub definition
              def_name = self.get_definition_name_from_ref(properties_spec['$ref'])
              return self.validate_definition(def_name, value)
  
          # Validate array
          elif properties_spec['type'] == 'array':
              if not isinstance(value, list):
                  return False
  
              # Check type
              if ('type' in properties_spec['items'].keys() and
                      any(not self.check_type(item, properties_spec['items']['type']) for item in value)):
                  return False
              # Check ref
              elif ('$ref' in properties_spec['items'].keys()):
                  def_name = self.get_definition_name_from_ref(properties_spec['items']['$ref'])
                  if any(not self.validate_definition(def_name, item) for item in value):
                      return False
  
          else:  # Classic types
              if not self.check_type(value, properties_spec['type']):
                  return False
  
          return True