'Create a new folder under the given folder.
:param  parent_folder_id:       decoded id
:type   parent_folder_id:       int
:param  new_folder_name:        name of the new folder
:type   new_folder_name:        str
:param  new_folder_description: description of the folder (optional, defaults to empty string)
:type   new_folder_description: str
:returns:   the new folder
:rtype:     LibraryFolder
:raises: InsufficientPermissionsException'

def create(self, trans, parent_folder_id, new_folder_name, new_folder_description=''):

    parent_folder = self.get(trans, parent_folder_id)
    current_user_roles = trans.get_current_user_roles()
    if (not (trans.user_is_admin or trans.app.security_agent.can_add_library_item(current_user_roles, parent_folder))):
        raise InsufficientPermissionsException('You    do    not    have    proper    permission    to    create    folders    under    given    folder.')
    new_folder = trans.app.model.LibraryFolder(name=new_folder_name, description=new_folder_description)
    new_folder.genome_build = trans.app.genome_builds.default_value
    parent_folder.add_folder(new_folder)
    trans.sa_session.add(new_folder)
    trans.sa_session.flush()
    trans.app.security_agent.copy_library_permissions(trans, parent_folder, new_folder)
    return new_folder
