<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def handle_length(schema, field, validator, parent_schema):
 """Adds validation logic for ``marshmallow.validate.Length``, setting the values appropriately for ``fields.List``, ``fields.Nested``, and ``fields.String``. Args: schema (dict):
 The original JSON schema we generated. This is what we want to post-process. field (fields.Field):
 The field that generated the original schema and who this post-processor belongs to. validator (marshmallow.validate.Length):
 The validator attached to the passed in field. parent_schema (marshmallow.Schema):
 The Schema instance that the field belongs to. Returns: dict: A, possibly, new JSON Schema that has been post processed and altered. Raises: ValueError: Raised if the `field` is something other than `fields.List`, `fields.Nested`, or `fields.String` """

    if isinstance(field, fields.String):
        minKey = 'minLength'
        maxKey = 'maxLength'
    elif isinstance(field, (fields.List, fields.Nested)):
        minKey = 'minItems'
        maxKey = 'maxItems'
    else:
        raise ValueError("In order to set the Length validator for JSON "
                         "schema, the field must be either a List or a String")

    if validator.min:
        schema[minKey] = validator.min

    if validator.max:
        schema[maxKey] = validator.max

    if validator.equal:
        schema[minKey] = validator.equal
        schema[maxKey] = validator.equal

    return schema