Citation: 6B_306/2020 E.

A.________ erhebt Beschwerde in Strafsachen. Er beantragt, das Urteil des Obergerichts des Kantons Zürich vom 10. Dezember 2019 sei aufzuheben und das Verfahren sei vom Bundesgericht selbst neu zu entscheiden bzw. das Verfahren sei zufolge Verletzung des Beschleunigungsgebots einzustellen. Eventualiter sei das Urteil des Obergerichts des Kantons Zürich aufzuheben und das Verfahren zur neuen Beurteilung an die Vorinstanz zurückzuweisen. Zudem ersucht A.________ im Verfahren vor Bundesgericht um Gewährung der unentgeltlichen Rechtspflege und Verbeiständung. Das Obergericht und die Oberstaatsanwaltschaft des Kantons Zürich verzichten auf eine Vernehmlassung.