<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def from_object(cls, o, base_uri=None, parent_curies=None, draft=AUTO):
 """Returns a new ``Document`` based on a JSON object or array. Arguments: - ``o``: a dictionary holding the deserializated JSON for the new ``Document``, or a ``list`` of such documents. - ``base_uri``: optional URL used as the basis when expanding relative URLs in the document. - ``parent_curies``: optional ``CurieCollection`` instance holding the CURIEs of the parent document in which the new document is to be embedded. Calling code should not normally provide this argument. - ``draft``: a ``Draft`` instance that selects the version of the spec to which the document should conform. Defaults to ``drafts.AUTO``. """


        if isinstance(o, list):
            return [cls.from_object(x, base_uri, parent_curies, draft)
                    for x in o]

        return cls(o, base_uri, parent_curies, draft)