recursively parse internal lists