def get_sobject_completion_list(
        sobject_describe, 
        prefix="", 
        display_fields=True,
        display_parent_relationships=True,
        display_child_relationships=True):
    """ Return the formatted completion list of sobject

    Arguments:

    * sobject_describe  -- describe result of sobject
    * prefix            -- optional; sometimes, parent relationshipName may refer to multiple sobject,
                           so we need to add the prefix to distinct different completions
    * display_child_relationships -- optional; indicate whether display sobject child relationship names
    """
    # Fields Describe
    completion_list = []

    if display_fields:
        fields = sobject_describe["fields"]
        for field_name_desc in sorted(fields):
            field_name = fields[field_name_desc]
            completion = ("%s%s" % (prefix, field_name_desc), field_name)
            completion_list.append(completion)

    # Parent Relationship Describe
    if display_parent_relationships:
        for key in sorted(sobject_describe["parentRelationships"]):
            parent_sobject = sobject_describe["parentRelationships"][key]
            completion_list.append((prefix + key + "\t" + parent_sobject + "(c2p)", key)) 

    # Child Relationship Describe
    if display_child_relationships:
        for key in sorted(sobject_describe["childRelationships"]):
            child_sobject = sobject_describe["childRelationships"][key]
            completion_list.append((prefix + key + "\t" + child_sobject + "(p2c)", key))

    return completion_list