detailed java-doc