use StringBuilder instead of StringBuffer
toSimpleName + type parameters
recursive import